网络配置基础详解
文章目录
1 基本网络配置
将linux主机接入到网络,需要配置网络相关设置
一般包括如下内容:
-
主机名
-
IP/netmask
-
路由:默认网关
-
DNS服务器
主DNS服务器次DNS服务器等
2 网络配置命令
2.1 网络配置方式
- 静态指定:用命令或者配置文件
- 动态分配:DHCP
2.2 ifconfig
命令格式
ifconfig [interface]
ifconfig -a
ifconfig IFACE [up|down]
ifconfig interface [aftype] options | address ...
ifconfig IFACE IP/netmask [up]
ifconfig IFACE IP netmask NETMASK
注意:立即生效
启用混杂模式:[-]promisc
范例:
[root@centos8 ~]#ifconfig eth0 10.0.0.68 netmask 255.255.0.0
#清除eth0上面的IP地址
[root@centos8 ~]#ifconfig eth0 0.0.0.0/0
#启用和禁用网卡
[root@centos8 ~]#ifconfig eth0 down
[root@centos8 ~]#ifconfig eth0 up
[root@centos7 ~]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.0.0.173 netmask 255.255.255.0 broadcast 10.0.0.255
inet6 fe80::20c:29ff:fe06:9835 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:06:98:35 txqueuelen 1000 (Ethernet)
RX packets 408 bytes 39533 (38.6 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 365 bytes 42607 (41.6 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth0:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.0.0.174 netmask 255.255.255.0 broadcast 10.0.0.255
ether 00:0c:29:06:98:35 txqueuelen 1000 (Ethernet)
...省略...
[root@centos7 ~]#
[root@centos7 ~]# ifconfig eth0:1 down
[root@centos7 ~]# ifconfig eth0:1
eth0:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
ether 00:0c:29:06:98:35 txqueuelen 1000 (Ethernet)
[root@centos7 ~]#
范例:
[root@centos7 ~]# ifconfig -s
Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0 1500 556 0 0 0 458 0 0 0 BMRU
lo 65536 97 0 0 0 97 0 0 0 LRU
[root@centos7 ~]# ifconfig -s eth0
Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0 1500 586 0 0 0 476 0 0 0 BMRU
[root@centos7 ~]#
2.3 route命令
路由表管理命令
路由表主要构成:
[root@centos7 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.0.0.2 0.0.0.0 UG 100 0 0 eth0
10.0.0.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0
- Destination: 目标网络ID,表示可以到达的目标网络ID,0.0.0.0/0 表示所有未知网络,又称为默认路
由,优先级最低 - Genmask:目标网络对应的netmask
- Iface: 到达对应网络,应该从当前主机哪个网卡发送出来
- Gateway: 到达非直连的网络,将数据发送到临近(下一个)路由器的临近本主机的接口的IP地址,如果
是直连网络,gateway是0.0.0.0 - Metric: 开销cost,值越小,路由记录的优先级最高
查看路由表:
[root@centos7 ~]# route
[root@centos7 ~]# route -n
范例:
[root@centos7 ~]# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default gateway 0.0.0.0 UG 100 0 0 eth0
10.0.0.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0
[root@centos7 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.0.0.2 0.0.0.0 UG 100 0 0 eth0
10.0.0.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0
[root@centos7 ~]#
添加路由信息:route add
route add [-net|-host|default] target [netmask Nm] [gw GW] [[dev] If]
删除路由信息:route del
route del [-net|-host] target [gw Gw] [netmask Nm] [[dev] If]
范例:
#目标:192.168.1.3 网关:172.16.0.1
route add -host 192.168.1.3 gw 172.16.0.1 dev eth0
#目标:192.168.0.0 网关:172.16.0.1
route add -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1 dev eth0
route add -net 192.168.0.0/24 gw 172.16.0.1 dev eth0
route add -net 192.168.8.0/24 dev eth1 metric 200
#默认路由,网关:172.16.0.1
route add -net 0.0.0.0 netmask 0.0.0.0 gw 172.16.0.1
route add default gw 172.16.0.1
#目标:192.168.1.3 网关:172.16.0.1
route del -host 192.168.1.3
#目标:192.168.0.0 网关:172.16.0.1
route del -net 192.168.0.0 netmask 255.255.255.0
2.4 配置动态路由
通过守护进程获取动态路由
安装quagga包,通过命令vtysh配置
支持多种路由协议:RIP、OSPF和BGP
2.5 netstat命令
显示网络连接:
netstat [--tcp|-t] [--udp|-u] [--raw|-w] [--listening|-l] [--all|-a] [--numeric|-n] [--extend|-e[--extend|-e]] [--program|-p]
常用选项
-t: tcp协议相关
-u: udp协议相关
-w: raw socket相关
-l: 处于监听状态
-a: 所有状态
-n: 以数字显示IP和端口
-e:扩展格式
-p: 显示相关进程及PID
常见组合
-tan, -uan, -tnl, -unl
显示路由表
netstat {--route|-r} [--numeric|-n]
-r: 显示内核路由表
-n: 数字格式
显示接口统计数据
netstat -i
netstat –I=IFACE
ifconfig -s IFACE
范例:
[root@centos7 ~]# netstat -I=eth0
Kernel Interface table
Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0 1500 887 0 0 0 702 0 0 0 BMRU
[root@centos7 ~]# ifconfig -s eth0
Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0 1500 953 0 0 0 742 0 0 0 BMRU
[root@centos7 ~]# netstat -nt
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 52 10.0.0.173:22 10.0.0.1:53127 ESTABLISHED
[root@centos7 ~]#
2.6 ip命令(重点)
来自于iproute包,将来代替ifconfig
2.6.1 配置Linux网络属性
ip [ OPTIONS ] OBJECT { COMMAND | help }
命令说明 :
OBJECT := { link | addr | route }
ip link - network device configuration
set dev IFACE,可设置属性: up and down:激活或禁用指定接口,相当于 ifup/ifdown
show [dev IFACE] [up]::指定接口 ,up 仅显示处于激活状态的接口
ip地址管理
ip addr { add | del } IFADDR dev STRING [label LABEL] [scope {global|link|host}]
[broadcast ADDRESS]
[label LABEL]:添加地址时指明网卡别名
[scope {global|link|host}]:指明作用域,global: 全局可用.link: 仅链接可用,host: 本机可用
[broadcast ADDRESS]:指明广播地址
ip address show
ip addr flush
#禁用网卡
ip link set eth1 down
#网卡改名
ip link set eth1 name songnet
#启用网卡
ip link set songnet up
#网卡别名
ip addr add 172.16.100.100/16 dev eth0 label eth0:0
ip addr del 172.16.100.100/16 dev eth0 label eth0:0
#清除网络地址
ip addr flush dev eth0
范例:
[root@centos7 ~]# ip a a 10.0.0.174/24 dev eth0
[root@centos7 ~]# ip a
......
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:06:98:35 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.173/24 brd 10.0.0.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet 10.0.0.174/24 scope global secondary eth0
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe06:9835/64 scope link
valid_lft forever preferred_lft forever
[root@centos7 ~]#
2.6.1 管理路由
ip route 用法
#添加路由:
ip route add TARGET via GW dev IFACE src SOURCE_IP
TARGET:
主机路由:IP
网络路由:NETWORK/MASK
#添加网关:
ip route add default via GW dev IFACE
#删除路由:
ip route del TARGET
#显示路由:
ip route show|list
#清空路由表:
ip route flush [dev IFACE] [via PREFIX]
范例:
ip route add 192.168.0.0/24 via 172.16.0.1
ip route add 192.168.1.100 via 172.16.0.1
ip route add default via 172.16.0.1
ip route flush dev eth0
2.7 ss 命令
netstat 通过遍历 /proc来获取 socket信息,ss 使用 netlink与内核 tcp_diag 模块通信获取 socket 信息
格式:
ss [OPTION]... [FILTER]
选项:
-t: tcp协议相关
-u: udp协议相关
-w: 裸套接字相关
-x:unix sock相关
-l: listen状态的连接
-a: 所有
-n: 数字格式
-p: 相关的程序及PID
-e: 扩展的信息
-m:内存用量
-o:计时器信息
格式说明:
FILTER : [ state TCP-STATE ] [ EXPRESSION ]
TCP的常见状态:
tcp finite state machine:
LISTEN: 监听
ESTABLISHED:已建立的连接
FIN_WAIT_1
FIN_WAIT_2
SYN_SENT
SYN_RECV
CLOSED
EXPRESSION:
dport =
sport =
常用组合:
-tan, -tanl, -tanlp, -uan
范例:常见用法
#显示本地打开的所有端口
ss -l
#显示每个进程具体打开的socket
ss -pl
#显示所有tcp socket
ss -t -a
#显示所有的UDP Socekt
ss -u -a
#显示所有已建立的ssh连接
ss -o state established '( dport = :ssh or sport = :ssh )'
#显示所有已建立的HTTP连接
ss -o state established '( dport = :http or sport = :http )'
[root@centos8 ~]#ss -no state established '( dport = :21 or sport = :21 )'
Netid Recv-Q Send-Q
Local Address:Port Peer Address:Port
tcp 0 0
[::ffff:10.0.0.8]:21 [::ffff:10.0.0.7]:46638
timer:(keepalive,119min,0)
#列出当前socket详细信息
ss -s
3 网络配置文件
3.1 网络基本配置文件
IP、MASK、GW、DNS相关的配置文件:
/etc/sysconfig/network-scripts/ifcfg-IFACE
说明参考:
/usr/share/doc/initcripts-*/sysconfig.txt
常见配置
设置 | 说明 |
---|---|
TYPE | 接口类型,常见有的Ethernet,Bridge |
NAME | 此配置文件应用到设备 |
DEVICE | 设备名 |
HWADDR | 对应的设备的MAC地址 |
UUID | 设备的唯一标识 |
BOOTPROTO: | 激活此设备时使用的地址配置协议,常用的dhcp, static, none, bootp |
IPADDR | 指明IP地址 |
NETMASK | 子网掩码,如:255.255.255.0 |
PREFIX | 网络ID的位数, 如:24 |
GATEWAY | 默认网关 |
DNS1 | 第一个DNS服务器地址 |
DNS2 | 第二个DNS服务器地址 |
DOMAIN | 主机不完整时,自动搜索的域名后缀 |
ONBOOT | 在系统引导时是否激活此设备 |
USERCTL | 普通用户是否可控制此设备 |
PEERDNS | 如果BOOTPROTO的值为“dhcp”,YES将允许dhcp server分配的dns服务 器信息直接覆盖至/etc/resolv.conf文件,NO不允许修改resolv.conf |
NM_CONTROLLED | NM是NetworkManager的简写,此网卡是否接受NM控制 |
范例:
[root@centos7 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
NAME=eth0
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=10.0.0.173
PREFIX=24
GATEWAY=10.0.0.2
DNS1=223.5.5.5
DNS2=180.76.76.76
[root@centos7 ~]#
3.2 配置当前主机的主机名
#centos6 之前版本
/etc/sysconfig/network
HOSTNAME=
#centos7 以后版
/etc/hostname
HOSTNAME
#更改完主机名后,添加与IP地址的映射
#优先于使用DNS前检查 getent hosts 查看/etc/hosts 内容
[root@centos7 ~]# vim /etc/hosts
3.3 DNS域名解析
/etc/resolv.conf
nameserver DNS_SERVER_IP1
nameserver DNS_SERVER_IP2
nameserver DNS_SERVER_IP3
search DOMAIN
3.4 修改 /etc/hosts和DNS的优先级
/etc/nsswitch.conf
hosts: files dns
3.5 路由相关的配置文件
/etc/sysconfig/network-scripts/route-IFACE
两种风格:
(1) TARGET via GW
如:10.0.0.0/8 via 172.16.0.1
(2) 每三行定义一条路由
ADDRESS#=TARGET
NETMASK#=mask
GATEWAY#=GW
4 CentOS 7 以上网络配置
4.1 更改网卡名称为eth0
-
编辑/etc/default/grub配置文件
GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"
-
为grub2生成其配置文件
grub2-mkconfig -o /etc/grub2.cfg
-
重启系统
4.2 主机名设置
配置文件
/etc/hostname
默认没有此文件,通过DNS反向解析获取主机名,主机名默认为:localhost.localdomain
设置主机名
hostnamectl set-hostname centos7.swyer.club
删除文件/etc/hostname,恢复主机名localhost.localdomain
显示主机名信息
hostname
hostnamectl status
范例:
[root@centos7 ~]# hostnamectl status
Static hostname: centos7.swyer.club
Icon name: computer-vm
Chassis: vm
Machine ID: 0018bccee2aa4a94bf6ede9328aeb9ff
Boot ID: b1655cb208c54cee8ddf1f5696a73931
Virtualization: vmware
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-1062.el7.x86_64
Architecture: x86-64
[root@centos7 ~]#
4.3 网络配置工具nmcli
nmcli命令相关术语
- 设备即网络接口
- 连接是对网络接口的配置,一个网络接口可有多个连接配置,但同时只有一个连接配置生效
格式:
nmcli [ OPTIONS ] OBJECT { COMMAND | help }
OPTIONS:
device - show and manage network interfaces
nmcli device help
connection - start, stop, and manage network connections
nmcli connection help
修改IP地址等属性:
nmcli connection modify IFACE [+|-]setting.property value
setting.property: ipv4.addresses ipv4.gateway ipv4.dns1 ipv4.method manual | auto
**修改配置文件执行生效:**CentOS 7以上通过此命令重启加载网卡更改信息
nmcli conn reload
nmcli conn up con-name
范例:
#查看帮助
[root@centos7 ~]# nmcli con add help
#使用nmcli配置网络
[root@centos7 ~]# nmcli con show
#显示所有活动连接
[root@centos7 ~]# nmcli con show --active
#显示网络连接配置
[root@centos7 ~]# nmcli con show "eth0"
#显示设备状态
[root@centos7 ~]# nmcli dev status
DEVICE TYPE STATE CONNECTION
eth0 ethernet connected eth0
lo loopback unmanaged --
#显示网络接口属性
[root@centos7 ~]# nmcli dev show eth0
#创建新连接default,IP自动通过dhcp获取
[root@centos7 ~]# nmcli con add con-name default type Ethernet ifname eth0
#删除连接
[root@centos7 ~]# nmcli con del default
#创建新连接static ,指定静态IP,不自动连接
[root@centos7 ~]# nmcti con add con-name static ifname eth0 autoconnect no type Ethernet
ipv4.addresses 172.25.X.10/24 ipv4.gateway 172.25.X.254
#启用static连接配置
[root@centos7 ~]# nmcli con up static
#启用default连接配置
[root@centos7 ~]# nmcli con up default
#修改连接设置
[root@centos7 ~]# nmcli con mod “static” connection.autoconnect no
[root@centos7 ~]# nmcli con mod “static” ipv4.dns 172.25.X.254
[root@centos7 ~]# nmcli con mod “static” +ipv4.dns 8.8.8.8
[root@centos7 ~]# nmcli con mod “static” -ipv4.dns 8.8.8.8
[root@centos7 ~]# nmcli con mod “static” ipv4.addresses “172.16.X.10/24 172.16.X.254”
[root@centos7 ~]# nmcli con mod “static” +ipv4.addresses 10.10.10.10/16
#DNS设置存放在/etc/resolv.conf,PEERDNS=no 表示当IP通过dhcp自动获取时,dns仍是手动设置,不自动获取等价于下面命令
[root@centos7 ~]# nmcli con mod “system eth0” ipv4.ignore-auto-dns yes
5 Ubuntu网络配置
官网文档:
https://help.ubuntu.com/
https://help.ubuntu.com/lts/serverguide/network-configuration.html.zh-CN
5.1 主机名设置
Ubuntu修改主机名
hostnamectl set-hostname ubuntu1804.swyer.club
永久更改方法等同与CentOS
5.2 网卡配置
配置动态IP
root@ubuntu1804:~# cat /etc/netplan/01-netcfg.yaml
network:
version: 2
renderer: networkd
ethernets:
ens33:
dhcp4: yes
root@ubuntu1804:~# netplan apply
配置静态IP
root@ubuntu1804:~# cat /etc/network/interfaces
# ifupdown has been replaced by netplan(5) on this system. See
# /etc/netplan for current configuration. #这里说明了网络配置的新路径
# To re-enable ifupdown on this system, you can run:
# sudo apt install ifupdown
root@ubuntu1804:~# ls /etc/netplan/
01-netcfg.yaml
root@ubuntu1804:~#
root@ubuntu1804:~# cat /etc/netplan/01-netcfg.yaml
# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
version: 2
renderer: networkd
ethernets:
ens33:
addresses: [10.0.0.100/24]
gateway4: 10.0.0.2
dhcp4: no
nameservers:
addresses: [180.76.76.76,223.6.6.6]
root@ubuntu1804:~#
#一定要注意缩进
root@ubuntu1804:~# netplan apply #设置静态IP和DNS后,更新网络设置
5.3 网卡更名eth0
#修改配置文件为下面形式
vi /etc/default/grub
GRUB_CMDLINE_LINUX="net.ifnames=0"
#生效新的grub.cfg文件
grub-mkconfig -o /boot/grub/grub.cfg
#或者
update-grub
#重启生效
reboot
范例:
root@ubuntu1804:~# ip a
...省略...
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:51:27:7c brd ff:ff:ff:ff:ff:ff
inet 10.0.0.100/24 brd 10.0.0.255 scope global ens33
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe51:277c/64 scope link
valid_lft forever preferred_lft forever
root@ubuntu1804:~# vim /etc/default/grub
#找到GRUB_CMDLINE_LINUX=""
#修改为GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"
#重新生成grub引导配置文件
root@ubuntu1804:~# grub-mkconfig -o /boot/grub/grub.cfg
#切记一定要更改网络配置文件
root@ubuntu1804:~# vim /etc/netplan/01-netcfg.yaml
root@ubuntu1804:~# cat /etc/netplan/01-netcfg.yaml
# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
version: 2
renderer: networkd
ethernets:
eth0: #对应的eth0
addresses: [10.0.0.100/24]
gateway4: 10.0.0.2
dhcp4: no
nameservers:
addresses: [180.76.76.76,223.6.6.6]
root@ubuntu1804:~# reboot