网络管理

查看网络配置

网卡信息

网卡名称:

  • 旧名称,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@centos7 ~]# ip -br link
lo               UNKNOWN        00:00:00:00:00:00 <LOOPBACK,UP,LOWER_UP> 
ens32            UP             00:0c:29:38:6d:bd <BROADCAST,MULTICAST,UP,LOWER_UP> 
... ...

# 查看单个网络设备信息
[root@centos7 ~]# 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:38:6d:bd brd ff:ff:ff:ff:ff:ff

查看 IP

关注IP地址和掩码位数:10.1.8.10/24。

[root@centos7 ~]# ip -br a
lo               UNKNOWN        127.0.0.1/8 ::1/128 
ens32            UP             10.1.8.10/24 fe80::6763:8ca5:3559:2caa/64 

[root@centos7 ~]# 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:38:6d:bd 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::6763:8ca5:3559:2caa/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

查看 route

default代表主机的网关,也就是10.1.8.2

[root@centos7 ~]# 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@centos7 ~]# route -n
# 或者
[root@centos7 ~]# netstat -nr
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
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0

说明:

  1. 直连网络10.1.8.0/24和192.168.122.0/24,可以 直接通信。
  2. 其他网络中主机,通过默认路由发送到目标,这里是default对应的条目,也就是10.1.8.2。

查看 dns

/etc/resolv.conf 文件中nameserver指明服务想哪个DNS服务器查询域名对应IP。

[root@centos7 ~]# cat /etc/resolv.conf 
# Generated by NetworkManager
search laoma.cloud
nameserver 223.5.5.5
nameserver 223.6.6.6

测试网络连通性

ping 测试

# ping 测试,选项-c控制ping次数,选项-w控制ping超时时间
[root@centos7 ~]# ping baidu.com -c 4 -w 2
PING baidu.com (110.242.68.66) 56(84) bytes of data.
64 bytes from 110.242.68.66 (110.242.68.66): icmp_seq=1 ttl=128 time=34.1 ms
64 bytes from 110.242.68.66 (110.242.68.66): icmp_seq=2 ttl=128 time=31.9 ms
64 bytes from 110.242.68.66 (110.242.68.66): icmp_seq=3 ttl=128 time=32.9 ms
64 bytes from 110.242.68.66 (110.242.68.66): icmp_seq=4 ttl=128 time=32.2 ms

--- baidu.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3006ms
rtt min/avg/max/mdev = 31.985/32.808/34.118/0.839 ms

# 说明:
# 1- 能够解析出ip 说明DNS配置正确
# 2- 能ping 通说明我们的网关配置正确

mtr 路由跟踪

# ping 主机不通,此时跟踪路由,查看数据最远到达的位置
[root@centos7 ~]# yum install -y mtr
[root@centos7 ~]# mtr -n 1.1.1.1
QQ_1721897826530

ss 工具

/etc/services 文件存储常见端口和服务对应关系。

[root@server ~]# 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
...
domain          53/tcp                          # name-domain server
domain          53/udp
...
http            80/tcp          www www-http    # WorldWideWeb HTTP
http            80/udp          www www-http    # HyperText Transfer Protocol
...
https           443/tcp                         # http protocol over TLS/SSL
https           443/udp                         # http protocol over TLS/SSL
...

ss 命令用于查看系统中网络状态信息。

以前使用 **netstat **查看网络状态信息,使用方法等效与 ss 命令。

# 默认显示是 ESTAB 状态
[root@server ~]# ss | grep :ssh
tcp   ESTAB  0      0         10.1.8.10:ssh             10.1.8.1:60081       
tcp   ESTAB  0      36        10.1.8.10:ssh             10.1.8.1:60229

# 只看 LISTEN,包含IPv4和IPv6
[root@server ~]# ss -l |grep :ssh
tcp   LISTEN 0      128         0.0.0.0:ssh                       0.0.0.0:*         
tcp   LISTEN 0      128            [::]:ssh                          [::]:* 

# 查看 ipv4 所有(LISTEN和ESTAB)网络状态
[root@server ~]# ss -a4|grep :ssh
tcp   LISTEN 0      128           0.0.0.0:ssh                   0.0.0.0:*           
tcp   ESTAB  0      0           10.1.8.10:ssh                  10.1.8.1:60081       
tcp   ESTAB  0      36          10.1.8.10:ssh                  10.1.8.1:60229

# -n 将服务的名称显示为数字
[root@server ~]# ss -an4|grep :22 
tcp   LISTEN 0      128           0.0.0.0:22           0.0.0.0:*           
tcp   ESTAB  0      0           10.1.8.10:22          10.1.8.1:60081       
tcp   ESTAB  0      36          10.1.8.10:22          10.1.8.1:60229

# -p 显示相应的进程
[root@server ~]# ss -lnp4|grep :22 
tcp   LISTEN 0      128           0.0.0.0:22         0.0.0.0:*    users:(("sshd",pid=3186,fd=3)

模拟环境

[root@server ~]# yum install -y nginx
[root@server ~]# systemctl start nginx.service
[root@server ~]# echo "Hello World" > /usr/share/nginx/html/index.html
[root@server ~]# curl http://10.1.8.10
Hello World

[root@server ~]# yum install -y httpd
[root@server ~]# systemctl start httpd
[root@server ~]# systemctl status httpd.service|grep use 
Jul 25 17:14:47 server.laoma.cloud httpd[14016]: (98)Address already in use: AH00072: make_sock: could not bind to address [::]:80
Jul 25 17:14:47 server.laoma.cloud httpd[14016]: (98)Address already in use: AH00072: make_sock: could not bind to address 0.0.0.0:80

查找端口被哪个程序使用

[root@server ~]# ss -lnp4|grep :80
tcp   LISTEN 0      511           0.0.0.0:80         0.0.0.0:*    users:(("nginx",pid=14009,fd=6),("nginx",pid=14008,fd=6),("nginx",pid=14007,fd=6))

解决方法

[root@server ~]# systemctl stop nginx
[root@server ~]# systemctl start httpd

配置网络

网络配置是由 NetworkManager 服务管理的,确保该服务开机自启。

环境准备

  1. 虚拟机新增加一个NAT网卡。

  2. 自动获取的前提条件是直连的网络中有dhcp服务器。

    对于 vmware workstations:

    image-20221110150958828

nmtui 命令

自动配置
# 服务器配置
[root@centos7 ~]# nmtui

使用上下键、tab进行移动,回车选中条目。

image-20221223161932704 image-20221110151307448

image-20221110151403308

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

image-20221110151523232

返回

image-20221110151620152 image-20221110151708468

更改完成后,选择启用连接,重新激活ens33。

手动配置

部分截图

image-20221110152337434

更改完成后,重新激活ens33。

**思考:**什么情况下用自动配置和手动配置?

  • 自动配置:无静态IP地址需求的其他情况。例如:办公环境员工的电脑,公共场所无线。
  • 手动配置:需要一个静态IP地址,例如:对外提供服务的数据库服务器,需要一个静态的IP地址。

nmcli 命令

网络启停

如果网络停用,右上角网络链接图标消失。图形化界面效果如下:

消失前

QQ_1721961859871

消失后

QQ_1721961848456

# 停用网络,并不会停止 NetworkManager 服务。
[root@server ~]# nmcli networking off
# 网卡状态变化:activated -> deactivating -> disconnected -> unmanaged -> unavailable 

# 启用网络
[root@server ~]# nmcli networking on
# 网卡状态变化:unavailable -> disconnected -> auto-activating
设备控制
  • DEVICE,是设备,也就是网卡。
  • CONNECTION,是连接,也就是网卡的配置。

一个 DEVICE 可以有多个配置,同一时刻只能激活一个配置。

# 显示设备列表状态信息
[root@server ~]# nmcli device 
DEVICE  TYPE      STATE   CONNECTION 
ens160  ethernet  已连接   ens160     
ens192  ethernet  已连接   ens192     
virbr0  bridge    未托管   --         
lo      loopback  未托管   --         

# 断开设备链接
[root@server ~]# nmcli device disconnect ens192 
成功断开设备 "ens192"[root@server ~]# nmcli device 
DEVICE  TYPE      STATE   CONNECTION 
ens160  ethernet  已连接  ens160     
ens192  ethernet  已断开  --         
virbr0  bridge    未托管  --         
lo      loopback  未托管  -- 

# 连接设备
[root@server ~]# nmcli device connect ens192 
成功用 "ens1920f5eac2c-9a92-494e-9cca-f97230d2314a" 激活了设备 ""[root@server ~]# nmcli device 
DEVICE  TYPE      STATE   CONNECTION 
ens160  ethernet  已连接  ens160     
ens192  ethernet  已连接  ens192     
virbr0  bridge    未托管  --         
lo      loopback  未托管  --  

# 显示特定设备详细信息
[root@server ~]# nmcli device show ens192
GENERAL.DEVICE:                         ens192
GENERAL.TYPE:                           ethernet
GENERAL.HWADDR:                         00:0C:29:08:CF:C7
GENERAL.MTU:                            1500
GENERAL.STATE:                          100(已连接)
GENERAL.CONNECTION:                     ens192
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/15
WIRED-PROPERTIES.CARRIER:               开
IP4.ADDRESS[1]:                         10.1.8.10/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]:                             223.5.5.5
IP4.DNS[2]:                             114.114.114.114
IP6.ADDRESS[1]:                         fe80::20c:29ff:fe08:cfc7/64
IP6.GATEWAY:                            --
IP6.ROUTE[1]:                           dst = fe80::/64, nh = ::, mt = 256

[root@server ~]# nmcli device show ens192 | grep IP4
IP4.ADDRESS[1]:                         10.1.8.10/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]:                             223.5.5.5
IP4.DNS[2]:                             114.114.114.114
动态获取
# 查看connection清单
[root@server ~]# nmcli connection 
NAME    UUID                                  TYPE      DEVICE 
ens160  5f61d96b-a284-41e9-9bf6-5cf3de6250cd  ethernet  ens160 
ens192  0f5eac2c-9a92-494e-9cca-f97230d2314a  ethernet  ens192

# 删除连接
[root@server ~]# nmcli connection delete ens192
成功删除连接 "ens192" (0f5eac2c-9a92-494e-9cca-f97230d2314a)[root@server ~]# nmcli connection 
NAME    UUID                                  TYPE      DEVICE 
ens160  5f61d96b-a284-41e9-9bf6-5cf3de6250cd  ethernet  ens160 

# 添加网卡配置:自动获取IP地址
[root@server ~]# nmcli connection add type ethernet ifname ens192 con-name ens192-dynamic
连接 "ens192-dynamic" (27d7dd0a-a5d1-4ed8-81ad-1051f89f89d1) 已成功添加。

[root@server ~]# nmcli connection show
NAME            UUID                                  TYPE      DEVICE 
ens160          5f61d96b-a284-41e9-9bf6-5cf3de6250cd  ethernet  ens160 
ens192-dynamic  27d7dd0a-a5d1-4ed8-81ad-1051f89f89d1  ethernet  ens192

[root@server ~]# nmcli connection show ens192-dynamic
connection.id:                          ens192-dynamic
connection.uuid:                        27d7dd0a-a5d1-4ed8-81ad-1051f89f89d1
connection.stable-id:                   --
connection.type:                        802-3-ethernet
connection.interface-name:              ens192
...
ipv4.method:                            auto
...
ipv6.method:                            auto
...

# 修改配置指定获取IP方式
[root@server ~]# nmcli connection modify ens192-dynamic ipv4.method auto

# 激活配置
[root@server ~]# nmcli connection up ens192-dynamic 
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/18)
静态配置
# 添加一个静态配置的连接
[root@server ~]# nmcli connection add type ethernet ifname ens192 con-name ens192-static ipv4.method manual ipv4.addresses 10.1.8.10/24
连接 "ens192-static" (652c8436-ac91-4697-b4ad-43d8dac83f8f) 已成功添加。

# 修改 ipv4 相关属性
[root@server ~]# nmcli connection modify ens192-static ipv4.gateway 10.1.8.2 ipv4.dns 10.1.8.2

# 激活连接
[root@server ~]# nmcli connection up ens192-static 
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/19)

# 查看状态
[root@server ~]# nmcli connection 
NAME             UUID                                  TYPE      DEVICE 
ens160           5f61d96b-a284-41e9-9bf6-5cf3de6250cd  ethernet  ens160 
ens192-static    652c8436-ac91-4697-b4ad-43d8dac83f8f  ethernet  ens192 
ens192-dynamic   27d7dd0a-a5d1-4ed8-81ad-1051f89f89d1  ethernet  --  
其他操作
# 停用连接
[root@server ~]# nmcli connection down ens192-static
成功停用连接 "ens192-static"(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/20)

[root@server ~]# nmcli connection show
NAME             UUID                                  TYPE      DEVICE 
ens160           5f61d96b-a284-41e9-9bf6-5cf3de6250cd  ethernet  ens160 
ens192-dynamic   27d7dd0a-a5d1-4ed8-81ad-1051f89f89d1  ethernet  ens192 
ens192-static    652c8436-ac91-4697-b4ad-43d8dac83f8f  ethernet  --   

# 根据需要配置路由
[root@server ~]# nmcli connection modify ens192-static ipv4.routes "192.168.50.0/24 10.1.8.2"

网络配置文件

**提示:**尽量不要通过手动修改配置,来配置网络。

# 动态配置
[root@server ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens192-dynamic 
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=default
NAME=ens192-dynamic
UUID=27d7dd0a-a5d1-4ed8-81ad-1051f89f89d1
DEVICE=ens192
ONBOOT=yes

# 静态配置
[root@server ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens192-static 
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
IPADDR=10.1.8.10
PREFIX=24
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=default
NAME=ens192-static
UUID=652c8436-ac91-4697-b4ad-43d8dac83f8f
DEVICE=ens192
ONBOOT=yes
GATEWAY=10.1.8.2
DNS1=10.1.8.2

# 某个网卡的路由配置
[root@server ~]# cat /etc/sysconfig/network-scripts/route-ens192-static 
ADDRESS0=192.168.50.0
NETMASK0=255.255.255.0
GATEWAY0=10.1.8.2

手动修改配置文件后,续需要重新加载才能生效:

[root@server ~]# nmcli connection reload
[root@server ~]# nmcli connection up ens192-static 
Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐