网络管理
1、网卡命名方式
1.1 网卡名称的组成格式
- 前两个字母标识固件
- 以太网卡以 en 开头
- 无线网卡以 wl 开头
- 后一个字母标识设备结构
- o:主板上集成的设备的设备索引号
- s:扩展槽的索引号
- p s:基于拓扑的命名。如enp2s1,表示PCI总线上第2个总线的第1个插槽的设备索引号
- x:基于MAC地址的命名
1.2 传统网卡命名方式
传统的网卡命名方式:
以太网卡 eth [0,1,2,…]
无线网卡 wlan [0,1,2,…]
1.3 Redhat7网卡命名机制
Systemd对网卡的命名方式:
- 规则1:如果从BIOS中能够取到可用的,板载网卡的索引号,则使用这个索引号命名。例如:eno1
- 规则2:如果从BIOS中能够取到可以用的,网卡所在的PCI-E热插拔插槽的索引号,则使用这个索引号命名。例如:ens1
- 规则3:如果硬件接口的位置信息可用,则根据此信息进行命名。例如:enp2s0
- 规则4:根据MAC地址命名,默认不开启。例如:enx2387a1dc56
- 规则5:上述均不可用时,则使用传统命名机制。
注意:网卡的命名方式有dell的biosdevname和systemd的net.ifnames两种命名规范;在此主要使用systemd的net.ifnames方案。
1.5 回归传统网卡命名
#修改网卡配置文件
[root@hzz ~]# cd /etc/sysconfig/network-scripts/
[root@hzz network-scripts]# mv ifcfg-ens33 ifcfg-eth0
[root@hzz network-scripts]# vim ifcfg-eth0
TYPE=Ethernet
BOOTPROTO=dhcp
DEFROUTE=yes
NAME=eth0 #此处要把ens33改成eth0
UUID=03be31f5-a3c1-4f8d-88b3-aea6e85c869f
DEVICE=eth0 #此处要把ens33改成eth0
ONBOOT=yes
#编辑/etc/default/grub配置文件,在以GRUB_CMDLINE_LINUX开头的行内rhgb的前面加上net.ifnames=0 biosdevname=0
[root@hzz ~]# vim /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap net.ifnames=0 biosdevname=0 rhgb quiet"
GRUB_DISABLE_RECOVERY="true"
#为grub2生成其配置文件
[root@hzz ~]# grub2-mkconfig -o /etc/grub2.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-693.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-693.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-fd0bcf5782d24ba5b903b175c35f328e
Found initrd image: /boot/initramfs-0-rescue-fd0bcf5782d24ba5b903b175c35f328e.img
done
#重启系统
[root@hzz ~]# reboot
2、网络管理常用命令
2.1 ifconfig命令
ifconfig命令,查看当前处于活动状态的所有网络接口(网卡)的信息,也可以临时修改网络接口(网卡)的配置。
#查看当前处于活动状态的所有网络接口
[root@hzz ~]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.52.156 netmask 255.255.255.0 broadcast 192.168.52.255
inet6 fe80::dbd:1db2:658d:30ab prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:ab:61:83 txqueuelen 1000 (Ethernet)
RX packets 3286 bytes 273792 (267.3 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 4677 bytes 615915 (601.4 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1 (Local Loopback)
RX packets 72 bytes 5560 (5.4 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 72 bytes 5560 (5.4 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
#仅查看eth0网卡状态
[root@hzz ~]# ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.52.156 netmask 255.255.255.0 broadcast 192.168.52.255
inet6 fe80::dbd:1db2:658d:30ab prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:ab:61:83 txqueuelen 1000 (Ethernet)
RX packets 4932 bytes 410142 (400.5 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 7576 bytes 944073 (921.9 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
#查看所有网卡状态信息, 包括禁用和启用
[root@hzz ~]# ifconfig -a
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.52.156 netmask 255.255.255.0 broadcast 192.168.52.255
inet6 fe80::dbd:1db2:658d:30ab prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:ab:61:83 txqueuelen 1000 (Ethernet)
RX packets 5834 bytes 484471 (473.1 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 9030 bytes 1113649 (1.0 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1 (Local Loopback)
RX packets 72 bytes 5560 (5.4 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 72 bytes 5560 (5.4 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ifconfig输出结果
#第一行网卡基本信息:
<UP,BROADCAST,RUNNING,MULTICAST>
UP #表示接口已启用
BROADCAST #表示支持广播
RUNNING #表示接口在工作中
MULTICAST #表示支持组播
MTU #1500(最大传输单元):1500字节
#第二行IPv4地址信息:
inet 192.168.52.156 #网卡的IP地址
netmask 255.255.255.0 #IP地址掩码
broadcast 192.168.52.255 #广播地址。
#第三行IPv6地址信息:
inet6 fe80::dbd:1db2:658d:30ab #网卡的IPv6地址。
prefixlen 64 #IPv6地址掩码长度。
scopeid 0x20<link> #作用域,link表示仅该接口有效。
#第四行mac地址信息:
ether 00:0c:29:ab:61:83 #网卡接口的MAC地址。
txqueuelen 1000 #传输队列长度。
(Ethernet) #接口类型为Ethernet。
#第五,六行接收报文信息:
RX packets 5834 #表示此接口正确接收数据包的个数。
bytes 484471 (473.1 KiB) #表示此接口正确接收数据包的总字节数。
RX errors 0 #接收时,产生错误的数据包的个数
dropped 0 #接收时,丢弃的数据包的个数。
overruns 0 #接收时,由于速度过快而丢失的数据包的个数。
frame 0 #接收时,发生frame错误而丢失的数据包的个数。
#第七,八行发送报文信息:
TX packets 9030 #表示此接口正确发送的数据包的个数。
bytes 1113649 (1.0 MiB) #表示此接口正确发送的数据包的总字节数。
TX errors 0 #发送时,产生错误的数据包的个数。
dropped 0 #发送时,丢弃的数据包的个数。
overruns 0 #发送时,由于速度过快而丢失的数据包的个数。
carrier 0 #发送时,发生carrier错误而丢失的数据包的个数。
collisions 0 #发送时,冲突的数据包的个数。
2.2 ip命令
ip命令,查看所有网络接口的信息,也可临时修改网卡配置。
语法:ip [ OPTIONS ] OBJECT { COMMAND | help }
OBJECT:
link #网络设备
addr #协议地址(IPv4/IPv6)
route #路由表
OPTIONS
-s #查看详细信息
COMMAND
show #显示信息
set #设置
add #添加
del #删除
ip link show
#查看网络设备属性
[root@hzz ~]# ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
link/ether 00:0c:29:ab:61:83 brd ff:ff:ff:ff:ff:ff
#显示报文统计信息
[root@hzz ~]# ip -s link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
RX: bytes packets errors dropped overrun mcast
5560 72 0 0 0 0
TX: bytes packets errors dropped carrier collsns
5560 72 0 0 0 0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
link/ether 00:0c:29:ab:61:83 brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped overrun mcast
8447543 103002 0 0 0 0
TX: bytes packets errors dropped carrier collsns
19165672 155011 0 0 0 0
ip link set 网卡名 {up | down}
#启用或禁用网络设备
[root@hzz ~]# ip link set lo down
[root@hzz ~]# ip link set lo up
ip addr show
#查看网络接口协议地址(IPv4/IPv6)信息
[root@hzz ~]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:ab:61:83 brd ff:ff:ff:ff:ff:ff
inet 192.168.52.156/24 brd 192.168.52.255 scope global dynamic ens33
valid_lft forever preferred_lft forever
inet6 fe80::dbd:1db2:658d:30ab/64 scope link
valid_lft forever preferred_lft forever
#ip addr show输出结果
<BROADCAST,MULTICAST,UP,LOWER_UP>
BROADCAST #表示该接口支持广播
MULTICAST #表示该接口支持多播
UP #表示该网络接口已启用
LOWER_UP #表示网络电缆已插入,设备已连接至网络
mtu 1500 #最大传输单位(数据包大小)1500字节
qdisc pfifo_fast #用于数据包排队
state UP #网络接口已启用
qlen 1000 #传输长度
link/ether 00:1e:4f:c8:43:fc #接口的MAC(硬件)地址
brd ff:ff:ff:ff:ff:ff #MAC广播地址
inet 192.168.52.156/24 #IPv4地址
brd 192.168.52.255 #IPv4广播地址
scope global #允许所有人访问此ip地址
dynamic eth0 #地址是动态分配的
valid_lft forever #IPv4地址的有效使用期限
preferred_lft forever #IPv4地址的首选生存期
inet6 fe80::dbd:1db2:658d:30ab/64 #IPv6地址
scope link #仅在允许此设备上访问此ip地址
valid_lft forever #IPv6地址的有效使用期限
preferred_lft forever #IPv6地址的首选生存期
ip addr add IP地址 dev 网卡名
#给网卡添加IP地址
[root@hzz ~]# ip addr add 192.168.52.157/24 dev eth0
[root@hzz ~]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:ab:61:83 brd ff:ff:ff:ff:ff:ff
inet 192.168.52.156/24 brd 192.168.52.255 scope global ens33
valid_lft forever preferred_lft forever
inet 192.168.52.157/24 scope global secondary ens33
valid_lft forever preferred_lft forever
inet6 fe80::dbd:1db2:658d:30ab/64 scope link
valid_lft forever preferred_lft forever
ip addr del IP地址 dev 网卡名
#删除网卡的IP地址
[root@hzz ~]# ip addr del 192.168.52.157/24 dev eth0
[root@hzz ~]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:ab:61:83 brd ff:ff:ff:ff:ff:ff
inet 192.168.52.156/24 brd 192.168.52.255 scope global ens33
valid_lft forever preferred_lft forever
inet6 fe80::dbd:1db2:658d:30ab/64 scope link
valid_lft forever preferred_lft forever
ip route show
[root@hzz ~]# ip route show
default via 192.168.52.2 dev eth0 proto static metric 100
192.168.52.0/24 dev eth0 proto kernel scope link src 192.168.52.156 metric 100
#输出结果
default #默认路由
via 192.168.52.2 #下一跳
dev eth0 #网卡
proto static #路由的协议,kernel是指由内核判断自动设定
metric 100 #度量值
scope link #有效范围本地,global全局,site站点。
ip route add 目的地址 via 下一跳 dev 网卡名
[root@hzz ~]# ip route add 192.168.1.0/24 via 192.168.52.2 dev eth0
[root@hzz ~]# ip route show
default via 192.168.52.2 dev eth0 proto static metric 100
192.168.1.0/24 via 192.168.52.2 dev eth0
192.168.52.0/24 dev eth0 proto kernel scope link src 192.168.52.156 metric 100
ip route del 目的地址 dev 网卡名
[root@hzz ~]# ip route del 192.168.1.0/24 dev eth0
[root@hzz ~]# ip route show
default via 192.168.52.2 dev eth0 proto static metric 100
192.168.52.0/24 dev eth0 proto kernel scope link src 192.168.52.156 metric 100
2.3 route命令
route命令和ip route命令类似。
#查看当前路由表
[root@hzz ~]# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default gateway 0.0.0.0 UG 100 0 0 eth0
192.168.52.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0
#以数字方式显示路由表
[root@hzz ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.52.2 0.0.0.0 UG 100 0 0 eth0
192.168.52.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0
#输出结果
Flags标志说明:
U #Up表示此路由启动状态
H #Host,表示此网关为一主机
G #Gateway,表示此网关为一路由器
R #Reinstate Route,使用动态路由重新初始化的路由
D #Dynamically,动态路由
M #Modified,此路由已被修改
! #表示此路由当前为关闭状态
Ref #该路由的引用数
Use #该路由被使用的次数
Iface #接口,也就是网卡
route命令添加或删除路由
route命令添加的路由是临时的,重启之后就会失效。
语法:route add或del [-net或-host] 目的地址 gw 网关地址 dev 网卡名
-net #表示目的地址是一个网段
-host #表示目的地址是一个具体的ip
#增加网段路由
[root@hzz ~]# route add -net 192.168.1.0/24 gw 192.168.52.2 dev eth0
[root@hzz ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.52.2 0.0.0.0 UG 100 0 0 eth0
192.168.1.0 192.168.52.2 255.255.255.0 UG 0 0 0 eth0
192.168.52.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0
#增加主机路由
[root@hzz ~]# route add -host 192.168.2.1 gw 192.168.52.2 dev eth0
[root@hzz ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.52.2 0.0.0.0 UG 100 0 0 eth0
192.168.1.0 192.168.52.2 255.255.255.0 UG 0 0 0 eth0
192.168.2.1 192.168.52.2 255.255.255.255 UGH 0 0 0 eth0
192.168.52.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0
#删除路由
[root@hzz ~]# route del -net 192.168.1.0/24
[root@hzz ~]# route del -host 192.168.2.1
[root@hzz ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.52.2 0.0.0.0 UG 100 0 0 eth0
192.168.52.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0
3、网络相关配置文件
3.1 网卡配置文件
网卡(网络接口),其配置文件的路径是 /etc/sysconfig/network-scripts/ifcfg-INTERFACE_NAME。
[root@hzz ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=static
NAME=eth0
UUID=03be31f5-a3c1-4f8d-88b3-aea6e85c869f
DEVICE=eth0
ONBOOT=yes
IPADDR=192.168.52.156
NETMASK=255.255.255.0
GATEWAY=192.168.52.2
DNS1=192.168.52.2
DNS2=8.8.8.8
#网卡配置说明
TYPE #接口类型。常见的接口类型有:Ethernet,bond,team,Bridge。
BOOTPROTO=static #启动的协议,获取IP的方式。可选值有{static|none|dhcp|bootp}。如果要使用静态地址,使用static或none都可以。
NAME="eth0" #连接名称
UUID #设备的唯一标识,全局唯一的IEEE机器识别号,可以不写
DEVICE="eth0" #关联的设备名称,要与文件名的后半部"INTERFACE_NAME"保持一致
ONBOOT=yes #在系统引导时是否自动激活此网络接口,可选值有{ yes | no }
IPADDR=192.168.52.156 #固定IP地址
PREFIX=24 #子网掩码,生产环境中不建议用
NETMASK=255.255.255.0 #子网掩码
GATEWAY=192.168.52.2 #默认网关
DNS1=192.168.52.2 #第一个DNS服务器指向
DNS2=8.8.8.8 #第二个DNS服务器指向
HWADDR #硬件地址(mac地址),要与硬件中的地址保持一致,可不写。
DEFROUTE={yes|no} #将接口设定为默认路由{yes|no}
USERCTL={yes|no} #是否允许普通用户控制此接口的启用与禁用
PEERDNS={yes|no} #是否在BOOTPROTO为dhcp时接受由dhcp服务器指定的DNS地址,此项设为yes时获得的DNS地址将直接覆盖至/etc/resolv.conf文件中
NM_CONTROLLED={yes|no} #NM是NetworkManager的简写,NM是由RHEL研发的在RHEL6中取代network脚本来实现网络管理、配置的服务脚本.可选值有{ yes | no },此项是设定此网卡是否接受NM控制。CentOS6建议设为“no”
3.2 添加一块网卡
#添加一块物理网卡,新增加的网卡名称是根据你网卡命名机制来决定。
#但是新增加的物理网卡是没有配置文件的, 需要我们手动新增网络连接配置文件
#复制网卡eth0的配置文件,改为eth1的配置文件。
[root@hzz ~]# cp /etc/sysconfig/network-scripts/{ifcfg-eth0,ifcfg-eth1}
#编辑网卡配置文件
[root@hzz ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth1
TYPE=Ethernet
BOOTPROTO=static
NAME=eth1
DEVICE=eth1
ONBOOT=yes
IPADDR=192.168.52.158
NETMASK=255.255.255.0
GATEWAY=192.168.52.2
DNS1=192.168.52.2
#7.0重启network网络服务加载网络并设置开机启动
[root@localhost ~]# systemctl restart network
[root@localhost ~]# systemctl enable network
#8.0重启NetworkManager网络服务加载网络并设置开机启动
[root@localhost ~]# systemctl restart NetworkManager
[root@localhost ~]# systemctl enable NetworkManager
[root@localhost ~]# nmcli connection up eth1
3.3 路由配置文件
路由配置文件的路径是 /etc/sysconfig/network-scripts/route-INTERFACE_NAME ,该配置文件默认不存在。
#添加格式一:DEST via NEXTHOP
[root@hzz ~]# vim /etc/sysconfig/network-scripts/route-eth0
192.168.1.0/24 via 192.168.52.2
#添加格式二:三行为一条,序号不一样。
[root@hzz ~]# vim /etc/sysconfig/network-scripts/route-eth0
ADDRESS0=192.168.2.0
NETMASK0=255.255.255.0
GATEWAY0=192.168.52.2
ADDRESS1=192.168.3.0
NETMASK1=255.255.255.0
GATEWAY1=192.168.52.2
3.4 DNS配置文件
DNS服务器配置文件的路径是 /etc/resolv.conf 。
#前面的nameserver固定,后面写DNS服务器地址。
[root@hzz ~]# vim /etc/resolv.conf
nameserver DNS_IP_1
nameserver DNS_IP_2
nameserver DNS_IP_3
- 本地DNS解析配置文件路径是 /etc/hosts 。
[root@hzz ~]# vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.52.156 hzz
3.5 主机名配置文件
生产环境中必须配置主机名,同时主机名也需要遵循一定的规范, 例如:公有云中主机名就以 ”地区-项目-业务-服务-节点-地址“ 这种方式命名。
公有云: 地区-项目-业务-服务-节点-地址
wh-shop-register-nginx-node1-192.168.56.13
wh-med-pay-mysql-master01-192.168.56.11
wh-med-pay-mysql-slave01-192.168.56.12
#主机名配置文件为/etc/hostname
[root@localhost ~]# cat /etc/hostname
localhost.localdomain
#hostname查看主机名
[root@localhost ~]# hostname
localhost.localdomain
#hostname临时修改主机名
[root@localhost ~]# hostname hzz
[root@localhost ~]# cat /etc/hostname
localhost.localdomain
#注意:修改主机名后需要重新加载shell才会显示效果
#rhel7系统建议使用hostnamectl修改和查看主机名
#设定永久名称
[root@localhost ~]# hostnamectl set-hostname hzz
[root@localhost ~]# cat /etc/hostname
hzz
#查看主机信息
[root@localhost ~]# hostnamectl
Static hostname: hzz
Icon name: computer-vm
Chassis: vm
Machine ID: fd0bcf5782d24ba5b903b175c35f328e
Boot ID: a060e3a2882f4d2c92884eee9db702bc
Virtualization: vmware
Operating System: Red Hat Enterprise Linux Server 7.4 (Maipo)
CPE OS Name: cpe:/o:redhat:enterprise_linux:7.4:GA:server
Kernel: Linux 3.10.0-693.el7.x86_64
Architecture: x86-64
注意:在Linux中以命令方式修改网络配置大部分情况只在当前状态有效,重启后将失效。故若想使修改的配置重启后依然有效,则必须编辑配置文件进行配置的修改。
4、NetworkManager管理网络
RHEL/CentOS7系统默认使用NetworkManager来提供网络服务,这是一种动态管理网络配置的守护进程,能够让网络设备保持连接状态。
NetworkManager提供了命令行和图形配置工具对网络进行设定, 设定保存的配置文件在/etc/sysconfig/network-scripts目录下, 工具有 nmcli, nmtui。它可以管理网卡硬件设备;也可以管理网络的连接类型(网卡的配置文件)。
NetworkManager管理连接(connection)的特点:
- 1.一个物理设备可以配置多种网络连接类型,但是同一时间只能应用其中某一个网络连接类型。
- 2.针对物理网络接口, 设定不同的网络连接, 在不同的使用环境中激活相应的网络连接,就可以实现网络配置信息的自动切换了
4.1 nmcli命令管理网卡配置信息
#查看网卡使用的配置文件
[root@hzz ~]# nmcli connection show
NAME UUID TYPE DEVICE
eth0 03be31f5-a3c1-4f8d-88b3-aea6e85c869f 802-3-ethernet eth0
#查看指定网卡配置文件详细信息
[root@localhost ~]# nmcli connection show eth0
connection.id: eth0
connection.uuid: 03be31f5-a3c1-4f8d-88b3-aea6e85c869f
connection.stable-id: --
connection.interface-name: eth0
connection.type: 802-3-ethernet
connection.autoconnect: yes
connection.autoconnect-priority: 0
connection.autoconnect-retries: -1 (default)
connection.timestamp: 1530455962
connection.read-only: no
connection.permissions: --
connection.zone: --
connection.master: --
connection.slave-type: --
connection.autoconnect-slaves: -1 (default)
connection.secondaries: --
connection.gateway-ping-timeout: 0
......
#开启连接名称为eth0的连接(启用指定网卡配置文件)
nmcli connection up eth0
#关闭连接名称为eth0的连接(关闭指定网卡配置文件)
nmcli connection down eth0
#修改连接名称为eth0的配置(修改指定网卡配置文件)
nmcli connection modify eth0 ...
#为eth0网卡添加一个连接名称eth0_hzz的以太网连接(为eth0网卡新增一个名为eth0_hzz的配置文件)
nmcli connection add type ethernet ifname eth0 con-name eth0_hzz ...
#删除连接名称为eth0_hzz的连接(删除名为hzz的网卡配置文件)
nmcli connection delete eth0_hzz
#操作示例及解释:
nmcli connection add type ethernet ifname eth0 con-name eth0_hzz ipv4.addresses 192.168.52.157/24 ipv4.gateway 192.168.52.2 ipv4.dns 192.168.52.2 ipv4.method manual autoconnect yes
add #添加
type #连接类型
ifname #设备名称
con-name #连接名称(名称随意,一般凸显此连接所应用的设备)
ipv4.addresses #指定ipv4地址
ipv4.gateway #指定ipv4网关
ipv4.dns #指定ipv4的DNS地址
ipv4.method #指定IP地址的获取方式 manual表示手动设置
autoconnect yes #开启开机自启(自动连接)
#修改连接名称为eth0_hzz的连接,修改IP地址为192.168.52.157/24
nmcli connection modify eth0_hzz ipv4.addresses 192.168.52.157/24
#修改连接名称为eth0_hzz的连接,添加一个IP地址192.168.52.158/24
nmcli connection modify eth0_hzz +ipv4.addresses 192.168.52.158/24
4.2 聚合网卡配置
#链路聚合两种类型:bond,team
bond:最多支持2块网卡
team:最多支持8块网卡
bond:负载轮询模式bond0(balance-rr),主备模式bond1(active-backup)
#添加bond类型网卡,设置网卡模式工作于负载轮询模式,创建一个bond0的网卡设备,设置连接名称为con-bond0,设置ipv4地址为192.168.52.140/24,设置网关为192.168.52.2,设置dns为192.168.52.2,选择IP地址获取方式为手动获取,设置连接开机自启
nmcli connection add type bond mode balance-rr ifname bond0 con-name con-bond0 ipv4.addresses 192.168.52.140/24 ipv4.gateway 192.168.52.2 ipv4.dns 192.168.52.2 ipv4.method manual autoconnect yes
#添加一个类型为bond-slave的连接,连接名为bond-slave0,将设备eth0添加至bond0网卡
nmcli connection add type bond-slave con-name bond-slave0 ifname eth0 master bond0
#添加第二个类型为bond-slave的连接,连接名为bond-slave1,将设备eth1添加至bond0网卡
nmcli connection add type bond-slave con-name bond-slave1 ifname eth1 master bond0
#查看bond0状态
cat /proc/net/bonding/bond0
team:主备模式activebackup,负载轮询模式roundrobin,负载均衡loadbalance,广播容错broadcast,lacp 需要交换机支持lacp协议
#添加team类型网卡,创建一个team0的网卡设备,设置连接名称为con-team0,设置网卡模式工作于主备模式,设置ipv4地址为192.168.52.140/24,设置网关为192.168.52.2,设置dns为192.168.52.2,选择IP地址获取方式为手动获取,设置连接开机自启
nmcli connection add type team ifname team0 con-name con-team0 config '{"runner":{"name":"activebackup"}}' ipv4.addresses 192.168.52.140/24 ipv4.gateway 192.168.52.2 ipv4.dns 192.168.52.2 ipv4.method manual autoconnect yes
#添加一个类型为team-slave的连接,连接名为team0-port1,将设备eth0添加至team0网卡
nmcli connection add type team-slave con-name team0-port1 ifname eth0 master team0
#添加一个类型为team-slave的连接,连接名为team0-port2,将设备eth1添加至team0网卡
nmcli connection add type team-slave con-name team0-port2 ifname eth1 master team0
#查看team0网卡工作状态
teamdctl team0 state
5、Centos7.0回归原生network管理网络
Centos7.0中原生network和NetworkManager程序都是使用 /etc/sysconfig/network-scripts 下的配置文件,只不过原生network管理网络需要修改配置文件,而NetworkManager则是使用nmcli命令。
#设置NetworkManger开机不启动, 同时停止NetworkManager服务
[root@hzz ~]# systemctl disable NetworkManager
[root@hzz ~]# systemctl stop NetworkManager
#NetworkManger服务停止就使用传统network管理网络,也就是使用配置文件。
6、网络检测工具与故障排查
6.1 ping命令
ping命令的目的在于测试另一台主机是否可达, 如果ping不到某台主机,就说明对方主机已经出现了问题, 但是不排除由于链路中的防火墙、ping被丢弃等原因造成ping不通的情况。
ping命令常用选项:
-c #指定ping的次数
-i #指定ping包的发送间隔
-w #指定ping的时间
#ping 3次后退出
[root@hzz ~]# ping -c 3 192.168.52.2
PING 192.168.52.2 (192.168.52.2) 56(84) bytes of data.
64 bytes from 192.168.52.2: icmp_seq=1 ttl=128 time=0.126 ms
64 bytes from 192.168.52.2: icmp_seq=2 ttl=128 time=0.235 ms
64 bytes from 192.168.52.2: icmp_seq=3 ttl=128 time=0.255 ms
--- 192.168.52.2 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 0.126/0.205/0.255/0.057 ms
#每隔两秒ping一次,一共ping3次。
[root@hzz ~]# ping -c 3 -i 2 192.168.52.2
PING 192.168.52.2 (192.168.52.2) 56(84) bytes of data.
64 bytes from 192.168.52.2: icmp_seq=1 ttl=128 time=0.135 ms
64 bytes from 192.168.52.2: icmp_seq=2 ttl=128 time=0.249 ms
64 bytes from 192.168.52.2: icmp_seq=3 ttl=128 time=0.163 ms
--- 192.168.52.2 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 4000ms
rtt min/avg/max/mdev = 0.135/0.182/0.249/0.049 ms
#一共ping3秒,3秒后退出
[root@hzz ~]# ping -w 3 192.168.52.1
PING 192.168.52.1 (192.168.52.1) 56(84) bytes of data.
64 bytes from 192.168.52.1: icmp_seq=1 ttl=128 time=0.495 ms
64 bytes from 192.168.52.1: icmp_seq=2 ttl=128 time=0.374 ms
64 bytes from 192.168.52.1: icmp_seq=3 ttl=128 time=0.297 ms
--- 192.168.52.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2001ms
rtt min/avg/max/mdev = 0.297/0.388/0.495/0.084 ms
6.2 host与nslookup
host和nslookup命令用于查询DNS记录。
#host和nslookup命令需要安装
yum -y install bind-utils
#使用host命令查询看DNS解析记录
[root@hzz ~]# host www.baidu.com
www.baidu.com is an alias for www.a.shifen.com.
www.a.shifen.com has address 36.152.44.95
www.a.shifen.com has address 36.152.44.96
www.a.shifen.com has IPv6 address ::1
#使用nslookup命令查询看DNS解析记录,nslookup命令可以看到查询DNS解析的流程
[root@hzz ~]# nslookup www.baidu.com
Server: 192.168.52.2
Address: 192.168.52.2#53
Non-authoritative answer:
www.baidu.com canonical name = www.a.shifen.com.
Name: www.a.shifen.com
Address: 36.152.44.96
Name: www.a.shifen.com
Address: 36.152.44.95
6.3 traceroute命令
traceroute命令用于路由跟踪, 检测网络故障出现在ISP运营商或是对端服务无法响应。
#traceroute命令需要安装
yum -y install traceroute
#traceroute命令只追踪内网路由
[root@hzz ~]# traceroute www.baidu.com
traceroute to www.baidu.com (220.181.38.150), 30 hops max, 60 byte packets
1 * * *
2 11.220.137.109 (11.220.137.109) 7.620 ms 11.220.137.45 (11.220.137.45) 6.852 ms 7.284 ms
3 11.220.136.54 (11.220.136.54) 3.305 ms 11.220.136.122 (11.220.136.122) 2.326 ms 11.220.136.58 (11.220.136.58) 2.092 ms
6.4 netstat命令
netstat命令用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。
语法:netstat [options]
-a #所有信息
-n #数字格式
-l #listen状态的连接
-t #tcp协议连接
-u #udp协议连接
-p #相关的程序及pid
#常见的state:
LISTENING:监听
ESTABLISHED:已建立的连接
#常用组合
[root@hzz ~]# netstat -anltup
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1093/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1325/master
tcp 0 0 192.168.52.156:22 192.168.52.1:50250 ESTABLISHED 3927/sshd: root@pts
tcp6 0 0 :::22 :::* LISTEN 1093/sshd
tcp6 0 0 ::1:25 :::* LISTEN 1325/master
udp 0 0 0.0.0.0:20009 0.0.0.0:* 7632/dhclient
udp 0 0 0.0.0.0:68 0.0.0.0:* 7632/dhclient
udp 0 0 127.0.0.1:323 0.0.0.0:* 749/chronyd
udp6 0 0 :::53754 :::* 7632/dhclient
udp6 0 0 ::1:323 :::* 749/chronyd
6.5 ss命令
ss是一种网络状态查看工具,取代netstat。
语法:ss [options]
-a #所有信息
-n #数字格式
-l #listen状态的连接
-t #tcp协议连接
-u #udp协议连接
-p #相关的程序及pid
#常见的state:
LISTENING:监听
ESTABLISHED:已建立的连接
#常用组合:以数字格式查看监听的tcp和udp端口以及进程pid
[root@hzz ~]# ss -anltup
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
udp UNCONN 0 0 127.0.0.1:323 *:* users:(("chronyd",pid=749,fd=1))
udp UNCONN 0 0 ::1:323 :::* users:(("chronyd",pid=749,fd=2))
tcp LISTEN 0 128 *:22 *:* users:(("sshd",pid=1093,fd=3))
tcp LISTEN 0 100 127.0.0.1:25 *:* users:(("master",pid=1325,fd=13))
tcp LISTEN 0 128 :::22 :::* users:(("sshd",pid=1093,fd=4))
tcp LISTEN 0 100 ::1:25 :::* users:(("master",pid=1325,fd=14))
#常见端口
http 80/tcp
https 443/tcp
ssh 22/tcp
ftp 20,21/tcp
mysql 3306/tcp
7、 网络故障排查
- 网络故障分为硬件/软件故障
- 网卡损坏
- 链路故障
- 网卡驱动不兼容
- 网络排查思路
- ping本地回环口, 确定本机TCP/IP协议栈是否正常
- ping本机IP地址, 确定本地设备以及驱动是否正常
- ping同网段主机, 确定二层网络是否正常工作
- ping网关地址, 确定本地与网络是否正常
- ping公网地址, 确定本地路由是否正常
- ping公网域名, 确定DNS客户端是否正常
- 服务故障排查思路
- 使用telnet检测端口是否开放
- 检查服务端防火墙以及SElinux
- 检查相应的权限是否配置正常
- 检查日志是否有异常
- 检查完毕后持续测试
建议:所有的排查思路都从OSI七层模型由下往上逐一进行排查(学会看日志)。