全栈运维必修:Linux 网络配置与简单故障处理
·
网络管理
查看网络配置
网卡信息
网卡名称:
- 旧名称,eth0 eth1 (Ethernet)
- 新名称,根据网卡的拓扑类型命名。例如ens32,eno4。
**linux网络接口传统的名称为eth0 eth1 eth2 …ethN。**然而这种机制会引起一些问题,例如网络接口的增加和删除。
在rhel7或者更高版本中,接口命名规则如下:
- 前2个字符:Ethernet 接口以en开头,WLAN接口以wl开头,WWAN接口以ww开头。
- 下一个字符:o(onboard)代表板载设备,s(slot)代表PCI热插拔,p代表pci接口网卡。
- 最后N表示index ID或者port。
例如
- eno1,代表Ethernet 类型、板载设备、端口号是1的网卡。
- wlp4s0,代表位于PCI总线4上插槽0中的WLAN卡。如果该卡是一个多功能设备(具有多个端口或者具有一些其他功能)。示例,enp0s1f0代表位于PCI总线0上插槽1中的以太网卡的功能0。
- 如果无法分配固定接口名,将使用传统方式ethN命名。
查看 link
关注mac地址。
# 查看网络设备清单
[root@server ~ 14:02:28]# ip -br link
lo UNKNOWN 00:00:00:00:00:00 <LOOPBACK,UP,LOWER_UP>
ens32 UP 00:0c:29:bc:c0:80 <BROADCAST,MULTICAST,UP,LOWER_UP>
... ...
# 查看单个网络设备信息
[root@server ~ 14:03:31]# ip link show ens32
2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether 00:0c:29:bc:c0:80 brd ff:ff:ff:ff:ff:ff
查看 IP
关注IP地址和掩码位数:10.1.8.10/24。
[root@server ~ 14:04:16]# ip -br a
lo UNKNOWN 127.0.0.1/8 ::1/128
ens32 UP 10.1.8.10/24 fe80::2cf2:b846:63b9:4a8f/64
[root@server ~ 14:04:31]# ip addr show ens32
2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:bc:c0:80 brd ff:ff:ff:ff:ff:ff
inet 10.1.8.10/24 brd 10.1.8.255 scope global noprefixroute ens32
valid_lft forever preferred_lft forever
inet6 fe80::2cf2:b846:63b9:4a8f/64 scope link noprefixroute
valid_lft forever preferred_lft forever
查看 route
default代表主机的网关,也就是10.1.8.2。
[root@server ~ 14:05:32]# ip route
default via 10.1.8.2 dev ens32 proto static metric 100
10.1.8.0/24 dev ens32 proto kernel scope link src 10.1.8.10 metric 100
# 还可以使用以下命令
[root@server ~ 14:07:48]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.1.8.2 0.0.0.0 UG 100 0 0 ens32
10.1.8.0 0.0.0.0 255.255.255.0 U 100 0 0 ens32
# 或者
[root@server ~ 14:07:54]# netstat -nr
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 10.1.8.2 0.0.0.0 UG 0 0 0 ens32
10.1.8.0 0.0.0.0 255.255.255.0 U 0 0 0 ens32
注意:在 CentOS/RHEL 等系统中,route 和 netstat 命令都包含在 net-tools 软件包中。你只需要使用 yum 安装这个包即可。
yum install -y net-tools
说明:
第一行:
- Destination 0.0.0.0:代表“所有我不认识的目的地”。只要目标 IP 不在你本地局域网内(比如你要访问百度、谷歌),数据包都会走这条路。
- Gateway 10.1.8.2:这是你的网关地址。数据包会先交给 10.1.8.2,由它帮你转发到外网。
- Flags UG:
U代表这条路由是启用的(UP),G代表需要经过网关(Gateway)。 - Iface ens32:数据包会从
ens32这张网卡发出去。
第二行:
- Destination 10.1.8.0:代表你的本地局域网网段。
- Gateway 0.0.0.0:这里显示 0.0.0.0(或星号),意味着不需要经过网关。
- Genmask 255.255.255.0:子网掩码,说明 10.1.8.1 到 10.1.8.254 之间的所有设备都属于这个局域网。
- 含义:只要访问 10.1.8.x 网段内的其他机器,数据包会直接通过
ens32网卡发送,不走弯路。
查看 dns
/etc/resolv.conf 文件中nameserver指明服务想哪个DNS服务器查询域名对应IP。
[root@server ~ 14:15:24]# cat /etc/resolv.conf
# Generated by NetworkManager
search gsb
nameserver 223.5.5.5
nameserver 223.6.6.6
测试网络连通性
ping 测试
# ping 测试,选项-c控制ping次数,选项-w控制ping超时时间
[root@server ~ 14:16:08]# ping baidu.com -c 3 -w 3
PING baidu.com (111.63.65.247) 56(84) bytes of data.
64 bytes from 111.63.65.247 (111.63.65.247): icmp_seq=1 ttl=128 time=28.6 ms
64 bytes from 111.63.65.247 (111.63.65.247): icmp_seq=2 ttl=128 time=27.5 ms
64 bytes from 111.63.65.247 (111.63.65.247): icmp_seq=3 ttl=128 time=33.2 ms
--- baidu.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2004ms
rtt min/avg/max/mdev = 27.587/29.811/33.201/2.439 ms
# 说明:
# 1- 能够解析出ip 说明DNS配置正确
# 2- 能ping 通说明我们的网关配置正确
mtr 路由跟踪
# ping 主机不通,此时跟踪路由,可以查看数据最远到达的位置
[root@server ~ 14:18:28]# yum install -y mtr
[root@server ~ 14:26:16]# mtr -n 1.1.1.1

ss 工具
/etc/services 文件存储常见端口和服务对应关系。
[root@server ~ 14:33:39]# vim /etc/services
......
ftp-data 20/tcp
ftp-data 20/udp
# 21 is registered to ftp, but also used by fsp
ftp 21/tcp
ftp 21/udp fsp fspd
ssh 22/tcp # The Secure Shell (SSH) Protocol
ssh 22/udp # The Secure Shell (SSH) Protocol
telnet 23/tcp
telnet 23/udp
......
ss 命令用于查看系统中网络状态信息。
以前使用 netstat 查看网络状态信息,使用方法等效与 ss 命令。
- LISTEN:正在等待别人来连我(比如 Web 服务器开着 80 端口等用户)。
- ESTAB:正在通信中(比如你正在下载文件,或者数据库正在读写)。
# 默认显示是 ESTAB 状态
[root@server ~ 14:36:11]# ss |grep :ssh
tcp ESTAB 0 0 10.1.8.10:ssh 10.1.8.1:59466
tcp ESTAB 0 0 10.1.8.10:ssh 10.1.8.1:59456
# 只看 LISTEN,包含IPv4和IPv6
[root@server ~ 14:40:23]# ss -l |grep :ssh
tcp LISTEN 0 128 *:ssh *:*
tcp LISTEN 0 128 [::]:ssh [::]:*
# 查看 ipv4 所有(LISTEN和ESTAB)网络状态
[root@server ~ 14:40:35]# ss -a4|grep :ssh
tcp LISTEN 0 128 *:ssh *:*
tcp ESTAB 0 0 10.1.8.10:ssh 10.1.8.1:59466
tcp ESTAB 0 36 10.1.8.10:ssh 10.1.8.1:59456
# -n 将服务的名称显示为数字
[root@server ~ 14:43:41]# ss -an4 |grep :22
tcp LISTEN 0 128 *:22 *:*
tcp ESTAB 0 0 10.1.8.10:22 10.1.8.1:59466
tcp ESTAB 0 36 10.1.8.10:22 10.1.8.1:59456
# -p 显示相应的进程
[root@server ~ 14:43:51]# ss -lnp4|grep :22
tcp LISTEN 0 128 *:22 *:* users:(("sshd",pid=967,fd=3))
模拟环境
[root@server ~ 14:46:09]# yum install -y nginx
[root@server ~ 14:46:23]# systemctl start nginx
[root@server ~ 14:46:43]# systemctl status nginx
[root@server ~ 14:46:51]# echo "ni hao world" > /usr/share/nginx/html/index.html
[root@server ~ 14:47:56]# curl http://10.1.8.10
ni hao world
[root@server ~ 14:48:07]# yum install -y httpd
[root@server ~ 14:50:00]# systemctl start httpd
Job for httpd.service failed because the control process exited with error code. See "systemctl status httpd.service" and "journalctl -xe" for details.
[root@server ~ 14:52:05]# journalctl -xe
5月 16 14:52:05 server.gsb httpd[1584]: (98)Address already in use: AH00072: make_sock: could not bind to address [::]:80
5月 16 14:52:05 server.gsb httpd[1584]: (98)Address already in use: AH00072: make_sock: could not bind to address 0.0.0.0:80
.....
查找端口被哪个程序使用
[root@server ~ 14:57:03]# ss -lnp4|grep :80
tcp LISTEN 0 128 *:80 *:* users:(("nginx",pid=1509,fd=6),("nginx",pid=1508,fd=6),("nginx",pid=1507,fd=6))
解决方法
[root@server ~ 14:58:47]# systemctl stop nginx.service
[root@server ~ 14:59:02]# systemctl start httpd
配置网络
网络配置是由 NetworkManager 服务管理的,确保该服务开机自启。
环境准备
- 虚拟机新增加一个NAT网卡。
- 自动获取的前提条件是直连的网络中有dhcp服务器。
对于 vmware workstations:
nmtui 命令
自动配置
# 服务器配置
[root@centos7 ~]# nmtui
使用上下键、tab进行移动,回车选中条目。



使用方向键,下移到最下面

返回

更改完成后,选择启用连接,按三下Enter,重新激活ens33,再确定。

手动配置
部分截图

更改完成后,重新激活ens33。
- 自动配置:无静态IP地址需求的其他情况。例如:办公环境员工的电脑,公共场所无线。
- 手动配置:需要一个静态IP地址,例如:对外提供服务的数据库服务器,需要一个静态的IP地址。
nmcli 命令
网络启停
若网络停用,在图形化界面上右上角网络链接图标消失。
# 停用网络,并不会停止 NetworkManager 服务。
[root@server ~ 15:23:23]# nmcli networking off
# 网卡状态变化:activated -> deactivating -> disconnected -> unmanaged -> unavailable
# 启用网络
[root@server ~ 15:49:37]$ nmcli networking on
# 网卡状态变化:unavailable -> disconnected -> auto-activating
设备控制
- DEVICE,是设备,也就是网卡。
- CONNECTION,是连接,也就是网卡的配置。
一个 DEVICE 可以有多个配置,同一时刻只能激活一个配置。
# 显示设备列表状态信息
[root@server ~ 16:29:58]# nmcli device
DEVICE TYPE STATE CONNECTION
ens32 ethernet 已连接 ens32
ens33 ethernet 已连接 ens33
lo loopback 未托管 --
# 断开设备链接
[root@server ~ 16:30:01]# nmcli device disconnect ens33
成功断开设备 "ens33"。
[root@server ~ 16:30:05]# nmcli device
DEVICE TYPE STATE CONNECTION
ens32 ethernet 已连接 ens32
ens33 ethernet 已断开 --
lo loopback 未托管 --
# 连接设备
[root@server ~ 16:30:59]# nmcli device connect ens33
成功用 "ens33f7936a25-e118-4feb-a80a-f2a29d1f4a4c" 激活了设备 ""。
[root@server ~ 16:31:22]# nmcli device
DEVICE TYPE STATE CONNECTION
ens32 ethernet 已连接 ens32
ens33 ethernet 已连接 ens33
lo loopback 未托管 --
# 显示特定设备详细信息
[root@server ~ 16:31:27]# nmcli device show ens33
GENERAL.DEVICE: ens33
GENERAL.TYPE: ethernet
GENERAL.HWADDR: 00:0C:29:BC:C0:8A
GENERAL.MTU: 1500
GENERAL.STATE: 100(已连接)
GENERAL.CONNECTION: ens33
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/7
WIRED-PROPERTIES.CARRIER: 开
IP4.ADDRESS[1]: 10.1.8.128/24
IP4.GATEWAY: 10.1.8.2
IP4.ROUTE[1]: dst = 0.0.0.0/0, nh = 10.1.8.2, mt = 101
IP4.ROUTE[2]: dst = 10.1.8.0/24, nh = 0.0.0.0, mt = 101
IP4.DNS[1]: 10.1.8.2
IP4.DOMAIN[1]: localdomain
IP6.ADDRESS[1]: fe80::6e51:76d4:2507:a96f/64
IP6.GATEWAY: --
IP6.ROUTE[1]: dst = fe80::/64, nh = ::, mt = 101
IP6.ROUTE[2]: dst = ff00::/8, nh = ::, mt = 256, table=255
[root@server ~ 16:32:50]# nmcli device show ens33 |grep IP4
IP4.ADDRESS[1]: 10.1.8.128/24
IP4.GATEWAY: 10.1.8.2
IP4.ROUTE[1]: dst = 0.0.0.0/0, nh = 10.1.8.2, mt = 101
IP4.ROUTE[2]: dst = 10.1.8.0/24, nh = 0.0.0.0, mt = 101
IP4.DNS[1]: 10.1.8.2
IP4.DOMAIN[1]: localdomain
动态获取
# 查看connection清单
[root@server ~ 16:32:58]# nmcli connection
NAME UUID TYPE DEVICE
ens32 2ee3795a-60c3-43d5-b648-80347d1dabf8 ethernet ens32
ens33 f7936a25-e118-4feb-a80a-f2a29d1f4a4c ethernet ens33
# 删除连接
[root@server ~ 16:33:47]# nmcli connection delete ens33
成功删除连接 "ens33" (f7936a25-e118-4feb-a80a-f2a29d1f4a4c)。
[root@server ~ 16:33:58]# nmcli connection
NAME UUID TYPE DEVICE
ens32 2ee3795a-60c3-43d5-b648-80347d1dabf8 ethernet ens32
# 添加网卡配置:自动获取IP地址
[root@server ~ 16:34:24]# nmcli connection add type ethernet ifname ens33 con-name ens33-auto
连接 "ens33-auto" (02aa577b-cc05-4869-903f-a1dffa4ba590) 已成功添加。
[root@server ~ 16:35:17]# nmcli connection
NAME UUID TYPE DEVICE
ens32 2ee3795a-60c3-43d5-b648-80347d1dabf8 ethernet ens32
ens33-auto 02aa577b-cc05-4869-903f-a1dffa4ba590 ethernet ens33
[root@server ~ 16:35:20]# nmcli connection show ens33-auto
connection.id: ens33-auto
connection.uuid: 02aa577b-cc05-4869-903f-a1dffa4ba590
connection.stable-id: --
connection.type: 802-3-ethernet
......
ipv4.method: auto
......
ipv6.method: auto
......
# 修改配置指定获取IP方式
[root@server ~ 16:38:43]# nmcli connection modify ens33-auto ipv4.method auto
# 激活配置
[root@server ~ 16:39:23]# nmcli connection up ens33-auto
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/9)
[root@server ~ 16:39:57]# nmcli device
DEVICE TYPE STATE CONNECTION
ens32 ethernet 已连接 ens32
ens33 ethernet 已连接 ens33-auto
静态配置
# 添加一个静态配置的连接
[root@server ~ 16:40:26]# nmcli connection add type ethernet ifname ens33 con-name ens33-static ipv4.method manual ipv4.addresses 10.1.8.150/24 ipv4.gateway 10.1.8.2 ipv4.dns 10.1.8.20
连接 "ens33-static" (12e3151c-519c-4371-869d-4b64404738db) 已成功添加。
[root@server ~ 16:43:54]# nmcli connection
NAME UUID TYPE DEVICE
ens32 2ee3795a-60c3-43d5-b648-80347d1dabf8 ethernet ens32
ens33-auto 02aa577b-cc05-4869-903f-a1dffa4ba590 ethernet ens33
ens33-static 12e3151c-519c-4371-869d-4b64404738db ethernet --
# 激活连接
[root@server ~ 16:44:58]# nmcli connection up ens33-static
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/10)
# 查看状态
[root@server ~ 16:45:47]# nmcli connection
NAME UUID TYPE DEVICE
ens32 2ee3795a-60c3-43d5-b648-80347d1dabf8 ethernet ens32
ens33-static 12e3151c-519c-4371-869d-4b64404738db ethernet ens33
ens33-auto 02aa577b-cc05-4869-903f-a1dffa4ba590 ethernet --
# 修改 ipv4 相关属性
[root@server ~ 16:45:50]# nmcli connection modify ens33-static ipv4.dns 10.1.8.111
[root@server ~ 16:49:48]# nmcli connection up ens33-static
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/11)
[root@server ~ 16:50:54]# nmcli device show ens33
GENERAL.DEVICE: ens33
GENERAL.TYPE: ethernet
GENERAL.HWADDR: 00:0C:29:BC:C0:8A
GENERAL.MTU: 1500
GENERAL.STATE: 100(已连接)
GENERAL.CONNECTION: ens33-static
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/11
WIRED-PROPERTIES.CARRIER: 开
IP4.ADDRESS[1]: 10.1.8.150/24
IP4.GATEWAY: 10.1.8.2
IP4.ROUTE[1]: dst = 10.1.8.0/24, nh = 0.0.0.0, mt = 101
IP4.ROUTE[2]: dst = 0.0.0.0/0, nh = 10.1.8.2, mt = 101
IP4.DNS[1]: 10.1.8.111
IP6.ADDRESS[1]: fe80::7672:d446:1e13:1693/64
IP6.GATEWAY: --
IP6.ROUTE[1]: dst = fe80::/64, nh = ::, mt = 101
IP6.ROUTE[2]: dst = ff00::/8, nh = ::, mt = 256, table=255
其他操作
# 停用连接
[root@server ~ 16:52:47]# nmcli connection down ens33-static
成功停用连接 "ens33-static"(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/11)
[root@server ~ 16:53:09]# nmcli connection
NAME UUID TYPE DEVICE
ens32 2ee3795a-60c3-43d5-b648-80347d1dabf8 ethernet ens32
ens33-auto 02aa577b-cc05-4869-903f-a1dffa4ba590 ethernet ens33
ens33-static 12e3151c-519c-4371-869d-4b64404738db ethernet --
# 根据需要配置路由
[root@server ~ 16:53:16]# nmcli connection modify ens33-static ipv4.gateway 10.1.8.133
网络配置文件
**提示:**尽量不要通过手动修改配置,来配置网络。
# 动态配置
[root@server ~ 16:55:22]# cat /etc/sysconfig/network-scripts/ifcfg-ens33-auto
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33-auto
UUID=02aa577b-cc05-4869-903f-a1dffa4ba590
DEVICE=ens33
ONBOOT=yes
# 静态配置
[root@server ~ 16:56:50]# cat /etc/sysconfig/network-scripts/ifcfg-ens33-static
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
IPADDR=10.1.8.150
PREFIX=24
GATEWAY=10.1.8.133
DNS1=10.1.8.111
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33-static
UUID=12e3151c-519c-4371-869d-4b64404738db
DEVICE=ens33
ONBOOT=yes
# 某个网卡的路由配置
[root@server ~ 17:06:55]# ip route show |grep 'dev ens33'
default via 10.1.8.133 dev ens33 proto static metric 101
10.1.8.0/24 dev ens33 proto kernel scope link src 10.1.8.150 metric 101
手动修改配置文件后,续需要重新加载才能生效:
[root@server ~ 17:07:50]# nmcli connection reload
[root@server ~ 17:07:50]# nmcli connection up ens33-static
更多推荐



所有评论(0)