网络管理

查看网络配置

网卡信息

网卡名称:

  • 旧名称,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 等系统中,routenetstat 命令都包含在 net-tools 软件包中。你只需要使用 yum 安装这个包即可。

yum install -y net-tools

说明

第一行:

  • Destination 0.0.0.0:代表“所有我不认识的目的地”。只要目标 IP 不在你本地局域网内(比如你要访问百度、谷歌),数据包都会走这条路。
  • Gateway 10.1.8.2:这是你的网关地址。数据包会先交给 10.1.8.2,由它帮你转发到外网。
  • Flags UGU 代表这条路由是启用的(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
516 14:52:05 server.gsb httpd[1584]: (98)Address already in use: AH00072: make_sock: could not bind to address [::]:80
516 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 服务管理的,确保该服务开机自启。

环境准备

  1. 虚拟机新增加一个NAT网卡。
  2. 自动获取的前提条件是直连的网络中有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 
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐