网络管理
1、网卡命名方式
1.1 传统网卡命名机制
传统的网卡命名方式:
以太网卡 eth [0,1,2,...]
无线网卡 wlan [0,1,2,...]
1.2 Redhat7网卡命名机制
Systemd对网卡的命名方式:
- 规则1:如果从BIOS中能够取到可用的,板载网卡的索引号,则使用这个索引号命名。例如:eno1
- 规则2:如果从BIOS中能够取到可以用的,网卡所在的PCI-E热插拔插槽的索引号,则使用这个索引号命名。例如:ens1
- 规则3:如果硬件接口的位置信息可用,则根据此信息进行命名。例如:enp2s0
- 规则4:根据MAC地址命名,默认不开启。例如:enx2387a1dc56
- 规则5:上述均不可用时,则使用传统命名机制。
注意:上述命名机制中,有的需要biosdevname程序的参与。所以必须安装biosdevname程序且启用它,默认启用。
网卡名称的组成格式
- 前两个字母标识固件
- 以太网卡以 en 开头
- 无线网卡以 wl 开头
- 后一个字母标识设备结构
- o:主板上集成的设备的设备索引号
- s:扩展槽的索引号
- p s:基于拓扑的命名。如enp2s1,表示PCI总线上第2个总线的第1个插槽的设备索引号
- x:基于MAC地址的命名
1.3 网卡设备的命名过程
按照如下顺序执行udev(设备管理器)的rule(规则):
1./usr/lib/udev/rules.d/60-net.rules
- 使用/lib/udev/rename_device这个程序,去查询/etc/sysconfig/network-scripts/下所有以ifcfg-开头的文件,如果在ifcfg-xx中匹配到HWADDR=xx:xx:xx:xx:xx:xx参数的网卡接口则选取DEVICE="name"中设置的名字作为网卡名称。
2./usr/lib/udev/rules.d/71-biosdevname.rules
- 如果系统中安装了biosdevname,且内核参数指定biosdevname=1,且上一步没有重命名网卡,则按照biosdevname的命名规范,从BIOS中取相关信息来命名网卡。
- 主要是取SMBIOS中的type 9 (System Slot) 和 type 41 (Onboard Devices Extended Information)不过要求SMBIOS的版本要高于2.6,且系统中要安装biosdevname程序。
3./lib/udev/rules.d/75-net-description.rules
-
依据/lib/udev/rules.d/75-net-description.rules,将udev工具会根据设备属性(device)填写网卡的属性命名,可能一个网卡会有多个维度的名称哦。
ID_NET_NAME_ONBOARD ID_NET_NAME_SLOT ID_NET_NAME_PATH ID_NET_NAME_MAC
4./usr/lib/udev/rules.d/80-net-name-slot.rules
-
如果在60-net.rules ,71-biosdevname.rules这两条规则中没有重命名网卡,且内核指定net.ifnames=1参数,则udev依次尝试使用以下属性值来命名网卡,如果这些属性值都没有,则网卡不会被重命名。
ID_NET_NAME_ONBOARD ID_NET_NAME_SLOT ID_NET_NAME_PATH
1.4 回归传统网卡命名
//修改网卡配置文件
[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
IPV4_FAILURE_FATAL=no
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
ens33: 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
//仅查看ens33网卡状态
[root@hzz ~]# ifconfig ens33
ens33: 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
ens33: 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: ens33: <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: ens33: <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: ens33: <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 ens33 地址是动态分配的
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 ens33
[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: ens33: <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 ens33
[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: ens33: <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 ens33 proto static metric 100
192.168.52.0/24 dev ens33 proto kernel scope link src 192.168.52.156 metric 100
//输出结果
default 默认路由
via 192.168.52.2 下一跳
dev ens33 网卡
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 ens33
[root@hzz ~]# ip route show
default via 192.168.52.2 dev ens33 proto static metric 100
192.168.1.0/24 via 192.168.52.2 dev ens33
192.168.52.0/24 dev ens33 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 ens33
[root@hzz ~]# ip route show
default via 192.168.52.2 dev ens33 proto static metric 100
192.168.52.0/24 dev ens33 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 ens33
192.168.52.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
////以数字方式显示路由表
[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 ens33
192.168.52.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
//输出结果
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 ens33
[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 ens33
192.168.1.0 192.168.52.2 255.255.255.0 UG 0 0 0 ens33
192.168.52.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
//增加主机路由
[root@hzz ~]# route add -host 192.168.2.1 gw 192.168.52.2 dev ens33
[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 ens33
192.168.1.0 192.168.52.2 255.255.255.0 UG 0 0 0 ens33
192.168.2.1 192.168.52.2 255.255.255.255 UGH 0 0 0 ens33
192.168.52.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
//删除路由
[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 ens33
192.168.52.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
3、网络相关配置文件
3.1 网卡配置文件
网卡(网络接口),其配置文件的路径是 /etc/sysconfig/network-scripts/ifcfg-INTERFACE_NAME。
[root@hzz ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=static
NAME=eth1
UUID=03be31f5-a3c1-4f8d-88b3-aea6e85c869f
DEVICE=eth1
ONBOOT=yes
IPADDR=192.168.52.156
NETMASK=255.255.255.0
GATEWAY=192.168.52.2
DNS1=192.168.52.2
////网卡配置说明
TYPE 接口类型。常见的接口类型有:Ethernet,bond,team,Bridge。
BOOTPROTO=static 启动的协议,获取IP的方式。可选值有{static|none|dhcp|bootp}。如果要使用静态地址,使用static或none都可以。
NAME="ens33" 连接名称
UUID 设备的唯一标识,全局唯一的IEEE机器识别号,可以不写
DEVICE="ens33" 关联的设备名称,要与文件名的后半部"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 第二个DNS服务器指向
DNS3 第三个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 路由配置文件
路由配置文件的路径是 /etc/sysconfig/network-scripts/route-INTERFACE_NAME ,该配置文件默认不存在。
//添加格式一:DEST via NEXTHOP
[root@hzz ~]# vim /etc/sysconfig/network-scripts/route-ens33
192.168.1.0/24 via 192.168.52.2
//添加格式二:三行为一条,序号不一样。
[root@hzz ~]# vim /etc/sysconfig/network-scripts/route-ens33
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.3 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.4 主机名配置文件
生产环境中必须配置主机名,同时主机名也需要遵循一定的规范, 例如:公有云中主机名就以 ”地区-项目-业务-服务-节点-地址“ 这种方式命名。
公有云: 地区-项目-业务-服务-节点-地址
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 wangqing
[root@localhost ~]# cat /etc/hostname
localhost.localdomain
//注意:修改主机名后需要重新登录用户才会显示效果
//rhel7系统建议使用hostnamectl修改和查看主机名
//设定永久名称
[root@localhost ~]# hostnamectl set-hostname seancheng
[root@localhost ~]# cat /etc/hostname
seancheng
//查看主机信息
[root@localhost ~]# hostnamectl
Static hostname: seancheng
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, nm-connection-editor。它可以管理网络接口(device)也就是网卡,管理的是物理设备。也可以管理网络的连接类型(网卡的配置文件)。 例如:Ethernet,VLANS,Bridges,Bonds,Teams等。
NetworkManager管理连接(connection)的特点:
- 1.一个物理设备可以配置多种网络连接类型,但是同一时间只能应用其中某一个网络连接类型。
- 2.针对物理网络接口, 设定不同的网络连接, 在不同的使用环境中激活相应的网络连接,就可以实现网络配置信息的自动切换了
4.1 nmcli命令查看设备状态
//查看设备状态
[root@hzz ~]# nmcli device
DEVICE TYPE STATE CONNECTION
ens33 ethernet connected ens33
lo loopback unmanaged --
//查看指定设备的详细状态
[root@hzz ~]# nmcli device show ens33
GENERAL.DEVICE: ens33
GENERAL.TYPE: ethernet
GENERAL.HWADDR: 00:0C:29:73:01:10
GENERAL.MTU: 1500
GENERAL.STATE: 100 (connected)
GENERAL.CONNECTION: ens33
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/1
WIRED-PROPERTIES.CARRIER: on
IP4.ADDRESS[1]: 192.168.52.156/24
IP4.GATEWAY: 192.168.52.2
IP4.DNS[1]: 192.168.52.2
IP4.DOMAIN[1]: localdomain
IP6.ADDRESS[1]: fe80::20c:29ff:fe73:110/64
IP6.GATEWAY: --
......
4.2 nmcli命令查看网卡配置信息
//查看网卡使用的配置文件
[root@hzz ~]# nmcli connection show
NAME UUID TYPE DEVICE
ens33 03be31f5-a3c1-4f8d-88b3-aea6e85c869f 802-3-ethernet ens33
//查看指定网卡配置文件详细信息
[root@localhost ~]# nmcli connection show ens33
connection.id: ens33
connection.uuid: 03be31f5-a3c1-4f8d-88b3-aea6e85c869f
connection.stable-id: --
connection.interface-name: ens33
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
......
//创建一个网卡配置文件
[root@localhost ~]# nmcli connection add type ethernet con-name hzz ifname eth0 ipv4.method auto autoconnect yes
[root@hzz ~]# nmcli connection show
名称 UUID 类型 设备
System eth0 5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03 802-3-ethernet eth0
hzz bf62579b-3d14-4a63-9124-a73c7f2803b3 802-3-ethernet --
//修改一个网卡配置文件
[root@hzz ~]# nmcli connection modify hzz ipv4.method manual ipv4.addresses 192.168.52.222/24 ipv4.gateway 192.168.52.2 ipv4.dns 192.168.52.2 autoconnect no
//启用一个网卡配置文件
[root@hzz ~]# nmcli connection up hzz
//关闭一个网卡配置文件
[root@hzz ~]# nmcli connection down hzz
//删除一个网卡配置文件
[root@hzz ~]# nmcli connection delete hzz
成功删除连接 'hzz'(bf62579b-3d14-4a63-9124-a73c7f2803b3)。
[root@hzz ~]# nmcli connection show
名称 UUID 类型 设备
System eth0 5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03 802-3-ethernet eth0
5、原生network管理网络
原生network和NetworkManager程序都是使用 /etc/sysconfig/network-scripts 下的配置文件,只不过原生network管理网络需要修改配置文件,而NetworkManager则是使用nmcli命令。
//设置NetworkManger开机不启动, 同时停止NetworkManager服务
[root@hzz ~]# systemctl disable NetworkManager
[root@hzz ~]# systemctl stop NetworkManager
//NetworkManger服务停止就使用传统network管理网络,也就是使用配置文件。
6、添加一块网卡
//添加一块物理网卡,新增加的网卡名称是根据你网卡命名机制来决定。
//但是新增加的物理网卡是没有配置文件的, 需要我们手动新增网络连接配置文件
//复制网卡ens33的配置文件,改为ens37的配置文件。
[root@hzz ~]# cp /etc/sysconfig/network-scripts/{ifcfg-ens33,ifcfg-ens37}
//编辑网卡配置文件
[root@hzz ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens37
TYPE=Ethernet
BOOTPROTO=static
NAME=eth1
UUID=03be31f5-a3c1-4f8d-88b3-aea6e85c869f
DEVICE=eth1
NM_CONTROLLED=no
ONBOOT=yes
IPADDR=192.168.52.158
NETMASK=255.255.255.0
GATEWAY=192.168.52.2
DNS1=192.168.52.2
//重启network网络服务加载网络并设置开机启动
[root@localhost ~]# systemctl restart network
[root@localhost ~]# systemctl enable network
7、网络检测工具与故障排查
7.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
7.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
7.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
7.4 netstat命令
netstat命令用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。
//语法:netstat [options]
//常用的options:
-r:显示路由表
-n:数字格式
-t:tcp协议连接
-u:udp协议连接
-l:listen状态的连接
-p:相关的程序及pid
-a:所有
//显示路由表
[root@hzz ~]# netstat -r
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
default gateway 0.0.0.0 UG 0 0 0 ens33
192.168.52.156 0.0.0.0 255.255.255.0 U 0 0 0 ens33
//以数字方式显示路由表
[root@hzz ~]# netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 192.168.52.156 0.0.0.0 UG 0 0 0 ens33
192.168.52.156 0.0.0.0 255.255.255.0 U 0 0 0 ens33
//显示建立的tcp连接
[root@hzz ~]# netstat -t
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 hzz:ssh 192.168.52.156:56187 ESTABLISHED
tcp 0 0 hzz:ssh 192.168.52.156:53808 ESTABLISHED
//显示udp连接
[root@hzz ~]# netstat -u
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
//显示监听状态的连接
[root@hzz ~]# netstat -l
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN
tcp 0 0 localhost:smtp 0.0.0.0:* LISTEN
tcp6 0 0 [::]:ssh [::]:* LISTEN
tcp6 0 0 localhost:smtp [::]:* LISTEN
//显示监听指定的套接字的进程的进程号及进程名
[root@hzz ~]# netstat -p
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 hzz:ssh 192.168.52.156:56187 ESTABLISHED 2094/sshd: root@pts
tcp 0 0 hzz:ssh 192.168.52.156:53808 ESTABLISHED 1077/sshd: root@pts
//显示所有状态的连接
[root@hzz ~]# netstat -a
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN
tcp 0 0 localhost:smtp 0.0.0.0:* LISTEN
tcp 0 0 hzz:ssh 192.168.52.156:56187 ESTABLISHED
tcp 0 0 hzz:ssh 192.168.52.156:53808 ESTABLISHED
tcp6 0 0 [::]:ssh [::]:* LISTEN
tcp6 0 0 localhost:smtp [::]:* LISTEN
udp 0 0 0.0.0.0:23511 0.0.0.0:*
udp 0 0 0.0.0.0:bootpc 0.0.0.0:*
udp6 0 0 [::]:35299 [::]:*
//常用选项
-anltup
[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
7.5 ss命令
ss是一种网络状态查看工具,取代netstat。
//语法:ss [options]
//常用的options:
-n:数字格式
-t:tcp协议相关
-u:udp协议相关
-l:listen状态的连接
-p:相关的程序及pid
-a:所有
//常见的state:
//tcp finite state machine:有限状态机
LISTENING:监听
ESTABLISHED:已建立的连接
//常用组合:以数字格式查看tcp相关信息
[root@hzz ~]# ss -ant
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:22 *:*
LISTEN 0 100 127.0.0.1:25 *:*
ESTAB 0 0 172.16.12.128:22 172.16.12.1:56187
ESTAB 0 0 172.16.12.128:22 172.16.12.1:53808
LISTEN 0 128 :::22 :::*
LISTEN 0 100 ::1:25 :::*
//常用组合:以数字格式查看监听的tcp端口
[root@hzz ~]# ss -tanl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:22 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 :::22 :::*
LISTEN 0 100 ::1:25 :::*
//常用组合:以数字格式查看监听的tcp端口和进程号
[root@hzz ~]# ss -antlp
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:22 *:* users:(("sshd",pid=889,fd=3))
LISTEN 0 100 127.0.0.1:25 *:* users:(("master",pid=1007,fd=13))
LISTEN 0 128 :::22 :::* users:(("sshd",pid=889,fd=4))
LISTEN 0 100 ::1:25 :::* users:(("master",pid=1007,fd=14))
//常用组合:以数字格式查看udp相关信息
[root@hzz ~]# ss -anu
State Recv-Q Send-Q Local Address:Port Peer Address:Port
UNCONN 0 0 *:23511 *:*
UNCONN 0 0 *:68 *:*
UNCONN 0 0 :::35299 :::*
//常用组合:以数字格式查看udp监听的端口
[root@hzz ~]# ss -anul
State Recv-Q Send-Q Local Address:Port Peer Address:Port
UNCONN 0 0 127.0.0.1:323 *:*
UNCONN 0 0 ::1:323 :::*
//常用组合:以数字格式查看监听的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
rsync 873/rsync
redis 6379/tcp
8、 网络故障排查
- 网络故障分为硬件/软件故障
- 网卡损坏
- 链路故障
- 网卡驱动不兼容
- 网络排查思路
- ping本地回环口, 确定本机TCP/IP协议栈是否正常
- ping本机IP地址, 确定本地设备以及驱动是否正常
- ping同网段主机, 确定二层网络是否正常工作
- ping网关地址, 确定本地与网络是否正常
- ping公网地址, 确定本地路由是否正常
- ping公网域名, 确定DNS客户端是否正常
- 服务故障排查思路
- 使用telnet检测端口是否开放
- 检查服务端防火墙以及SElinux
- 检查相应的权限是否配置正常
- 检查日志是否有异常
- 检查完毕后持续测试
建议:所有的排查思路都从OSI七层模型由下往上逐一进行排查(学会看日志)。