admin管理员组

文章数量:1594642

一、 前言

  • 网络的作用就是用于多台主机互相通信的,早期的实现方式是给每个主机一个唯一标识(MAC地址),然后把它们都链接上同轴线缆进行的,但是这种解决方案的缺点也很明显,就是通信冲突的问题,后出现CSMA/CD(载波侦听、多路访问、冲突检测)机制,用来解决这个问题,实现逻辑就是每个主机在发送信号前,先在线缆上侦听有没有其它主机正进行通信,如果没有的话就发送信号,冲同检测就是通过边发信号边检测实现的,一旦发现冲突就会向后延迟一段时间而后再重复之前的过程。
  • 交换机:对于大型的网络,多台主机争用同一个底层信道,CSMA/CD的机制仍然不够用。于是,人们就把一个大网络切割成多个小型网络,每个小型网络通过网桥进行通信,这也就是交换机的雏形,交换机可以解决冲突域的问题,它有一个表格,记录接口和主机MAC地址的对应信息,这样就可以将网络报文正确送达。
  • 路由器:随着网络发展,交换机的制造成本越来越低,一台交换机所能接入的设备也就越来越多,这也就造成了一个小型网络的广播报文越来越多,为了切割广播域就诞生了路由器。既然切割了广播域,各广播域之间通信也就需要使用一个标识来完成,这个标识不能太扁平化,并且,需要一致的命名机制,于是就诞生了IP地址。

二、配置文件

1. 网络接口命名机制

  • centos 6
    以太网接口使用eth[0、1、2],这样的方式进行命名
    ppp网络使用pp[0、1、2]命名方式
  • Centos7网卡
    (1)如果固件或BIOS为主板上集成的设备提供的索引信息可用,且可预测,则根据此索引命名
    (2)如果Firmware或BIOS为PCI-E扩展槽提供的索引信息可用,且可预测,则根据此索引命名
    (3)如果硬件接口的物理位置信息可用,则根据此信息进行命名
    (4)如果用户指定,也可根据MAC命名
    (5)上述均不可用,才会使用eth0

2. 名称组成格式

接口的类型标识符+名称类型

  • 接口的类型标识符
    en:ethernet,以太网接口
    wl:wlan,无线局域网接口
    ww:wwan,无线关于网设备
    
  • 名称类型
    o<index>:onboard,主板上集成的设备与其索引号命名
    s<index>:slot,插拔式的网卡,使用扩展槽的索引号命名
    x<index>:基于mac地址命名
    p<index>:基于总线命名	
    

3. 网卡设备的命名过程

(1)首先udev机制能够将内核识别的每一个硬件设备及其相关信息通过/sys伪文件系统向用户空间进行输出,接着用户空间的工具根据这些信息判断出设备型号,并根据这些型号关联到特性驱动或者加载额外的辅助功能,那么在网卡命名过程中,就是udev就是利用一个辅助工具程序/lib/udev/rename_device ,这个工具辅助工具程序会根据/usr/lib/udev/rules.d/60-net.rules文件中的规则,去查询/etc/sysconfig/network-scripts/目录下的网卡配置文件,然后参照网卡配置文件去命名,如果命名失败则进行第二步
(2) 如果没有在内核启动过程中向内核传递biosdevname=0参数,则biosdevname程序会根据/usr/lib/udev/rules.d/71-biosdevname.rules进行命名
(3)通过udev机制检测网络接口设备,根据/usr/lib/udev/rules.d/75-net-description文件中的规则进行命名

4. 回归传统命名方式

(1)编辑/etc/default/grub,在文件中GRUB_CMDLINE_LINUX=关键字中加入"net.ifnames=0”参数
(2)为grub2生成配置文件,使用命令grub2-mkconfig -o /etc/grub2.cfg
(3)重启系统

5. 配置文件位置

  • /etc/sysconfig/network-scripts/ifcfg-IF_name,文件中可修改IP地址,子网掩码、网关地址和DNS相关
  • /etc/sysconfig/network-scripts/route-IF_name,路由相关的配置文件,默认不存在
  • /etc/sysconfig/network:主机名称配置文件
  • /etc/udev/rules.d/70-persistent-net.rules:此文件可以对centos6的网卡命名机制进行更改

6. 配置文件中关键字的意义

  • /etc/sysconfig/network-scripts/ifcfg-IF_name
    NAME="" :网络接的名称
    DEVICE=""  :此配置文件关联的设备
    HWADDR=""  :对应设备的MAC地址
    BOOTPROTO=""  :激活此设备时使用的地址配置协议,可选[ dhcp | static | none | bootp ]
    NM_CONTROLLED=""  :此网卡是否接受NM控制,建议Centos6建议为no
    ONBOOT=""  :在操作系统引导时,是否激活此设备
    TYPE=""  :网络接口工作时的接口类型 [ Ethernet | Bridge ]
    UUID=""  :设备的唯一标识
    IPADDR=""  :手动指明地址
    NETMASK=""  :子网掩码
    GATEWAY=""  :默认网关
    DNS1=""  :指定DNS服务器指向,此处优先级比/etc/resolv.conf高
    USERCTL=""  :普通用户是否可激活此设备
    PEERDNS=""  :如果BOOTPROTO的值为dhcp,那么是否允许dhcp分配的dns指向覆盖/etc/resolv.conf的原有内容
    PEERROUTES=""  :是否通过dhcp获取路由信息
    DEFROUTE=""  :默认路由
    IPV4_FAILURE_FATAL=""  :ipv4如果出现问题的话,是否认为这是致命错误
    IPV6INIT=""  :是否启用ipv6
    
    注意网卡别名不能使用dhcp分配地址
  • /etc/sysconfig/network-scripts/route-IF_name
    此文件中可以使用两种定义格式
    格式1
    ADDRESS0=ip地址
    NETMASK0=netmask
    GATEWAY0=gateway_ip
    ADDRESS1=ip地址
    NETMASK1=netmask
    GATEWAY1=gateway_ip
    
    格式2
    target  via  GW
    
  • /etc/sysconfig/network
    NETWORKING=: 是否允许此主机使用网络
    HOSTNAME=: 设置主机名称
    
  • /etc/udev/rules.d/70-persistent-net.rules
    设置centos6的网卡命名机制,设置完毕后需要对网卡驱动进行拆除
    拆除命令modprobe -r e1000
    安装命令modprobe e1000

三、网络配置命令

1. ifconfig命令

用来实现网络信息显示和配置的命令,配置完毕后立即生效,命令格式为:
ifconfig [interface]
ifconfig [interface] address
混杂模式:目标mac即便不是自己,收到的报文也会接受一份,在网络抓包时很有用[-]promisc

2. route命令

命令格式:route [option] [add|del] [-net|-host] target/prefix [netmask] [gw GW] [dev ifc]

option
-n:不反解

示例1:添加目标为192.168.2.100的主机路由
~]# route add -host 192.168.2.100/32 gw 192.168.2.254 dev ens33
示例2:添加目标为192.168.3.0的网络路由
~]# route add -net 192.168.3.0 netmask 255.255.255.0 gw 192.168.2.254 dev ens33
示例3:添加默认路由
~]# route add -net 0.0.0.0 netmask 0.0.0.0 gw 192.168.2.254 dev ens33
~]# route add default gw 192.168.2.254
示例4:删除路由
~]# route del -net 0.0.0.0 gw 192.168.2.254
~]# route del -host 192.168.2.100

3. dns设定

编辑配置文件/etc/resolv.conf,在文件中使用nameserver关键字指定,可以同时指定多个

nameserver DNS_SERVER_IP1
nameserver DNS_SERVER_IP2
nameserver DNS_SERVER_IP3

设置完毕后验证dns解析功能

  • 正解:FQDN --> IP,使用命令dig -t A FQDN
  • 反解:IP --> FQDN,使用命令dig -x IP

4. ip命令

命令格式:ip [ OPTIONS ] OBJECT { COMMAND | help }

object:

link {COMMAND}
	set dev DEV_NAME up|down:指定激活或禁用指定接口
	show [dev DEV_NAME|up]:显示设备简要属性
	broadcast:广播
	multicast:组播
	mtu:最大传输单元
	qlen:传输队列
	link/ether:mac地址
	brd:广播地址
	help:帮助
addr {COMMAND}
	show [DEV_NAME|scope|to PREFIX|label PATTER]:显示指定设备的信息
	add IP/PREFIX dev DEV [label ‘name’]:添加地址,可指定别名
	del IP/PREFIX dev DEV:删除地址
	flush [DEV_NAME]:清除指定设备地址
	scope VALUE:
	    global:全局有效
	    link:仅在当前接口有效
	    host:仅主机内部有限
route:
	add {ip/prefix} {via ip} [dev DEV_NAME]:
	show:
	del {ip/prefix} {via ip} [dev DEV_NAME]:
	flush:

5. nmcli命令

命令格式:nmcli [OPTIONS...] {OBJECT} [COMMAND] [ARGUMENTS...]

5.1 option

  • -t {device|connection}: 简明扼要的将状态输出,此模式更适用于脚本运行过程对网络状态的取值
  • -f <field1,field2...>:指定仅显示某些字段
    [root@C ~]# nmcli -f DEVICE,TYPE device
    DEVICE  TYPE     
    ens17   ethernet 
    lo      loopback 
    
  • -p {device|connection}: 美观的输出对应的信息
    [root@C ~]# nmcli -p conn
    ======================================
      NetworkManager connection profiles
    ======================================
    NAME          UUID                                  TYPE      DEVICE 
    --------------------------------------------------------------------
    System ens17  a576bc27-4b66-8dc3-655a-116541f596cb  ethernet  ens17  
    ens17         cf306567-fa07-49c0-ad7b-ef17bc4d0d6e  ethernet  --     
    ens18         5bc0db65-41e0-4181-9c80-f0ca7600a4d7  ethernet  --
    

5.2 object

5.2.1 device

用于管理和显示网络设备信息的子命令。通过 nmcli device 可以列出系统中所有的网络设备,并查看它们的状态、连接信息等。

  • status:显示设备连接状态,status是可缺省的,也可以将命令写成nmcli device,效果相同

    [root@C2024-arthur-sh-test ~]# nmcli device status
    DEVICE  TYPE      STATE      CONNECTION   
    ens17   ethernet  connected  System ens17 
    lo      loopback  unmanaged  --           
    
  • show [DEV]:显示指定设备的状态信息,设备名称如果缺省则显示全部网卡设备
    示例1:如下缺省设备文件,则显示每个网卡接口的详细信息,示例中有两个网卡接口ens17和lo

    [root@C2024-arthur-sh-test ~]# nmcli device show
    GENERAL.DEVICE:                         ens17
    GENERAL.TYPE:                           ethernet
    GENERAL.HWADDR:                         B0:09:C0:00:09:AB
    GENERAL.MTU:                            1500
    GENERAL.STATE:                          100 (connected)
    GENERAL.CONNECTION:                     System ens17
    GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/12
    WIRED-PROPERTIES.CARRIER:               on
    IP4.ADDRESS[1]:                         198.200.38.6/24
    IP4.GATEWAY:                            198.200.38.254
    IP4.ROUTE[1]:                           dst = 198.200.38.0/24, nh = 0.0.0.0, mt = 100
    IP4.ROUTE[2]:                           dst = 0.0.0.0/0, nh = 198.200.38.254, mt = 100
    IP4.DNS[1]:                             8.8.8.8
    IP4.DNS[2]:                             8.8.4.4
    IP6.ADDRESS[1]:                         fe80::b209:c0ff:fe00:9ab/64
    IP6.GATEWAY:                            --
    IP6.ROUTE[1]:                           dst = ff00::/8, nh = ::, mt = 256, table=255
    IP6.ROUTE[2]:                           dst = fe80::/64, nh = ::, mt = 256
    
    GENERAL.DEVICE:                         lo
    GENERAL.TYPE:                           loopback
    GENERAL.HWADDR:                         00:00:00:00:00:00
    GENERAL.MTU:                            65536
    GENERAL.STATE:                          10 (unmanaged)
    GENERAL.CONNECTION:                     --
    GENERAL.CON-PATH:                       --
    IP4.ADDRESS[1]:                         127.0.0.1/8
    IP4.GATEWAY:                            --
    IP6.ADDRESS[1]:                         ::1/128
    IP6.GATEWAY:                            --
    IP6.ROUTE[1]:                           dst = ::1/128, nh = ::, mt = 256
    
  • connect DEV:启用链接设备。提供一个设备接口,网络管理器将尝试找到一个合适的连接并激活。为验证效果,创建了两个链接文件, 尝试disconnect后在运行connect,发现其会依然启用上次链接的文件,即便把链接文件改名或移动位置,依然能正常启用,而且ip是生效的。于是挪动默认的链接文件,仅保留新创建的链接文件并重启,发现它应用了新创建的链接文件,尝试disconnect、connect后,依然链接新创建的链接文件。
    示例命令~]# nmcli device connect ens17

  • disconnect DEV:禁用链接设备,和启用相反
    示例命令~]# nmcli device disconnect ens17

  • set:用于设置网络设备属性的命令。通过这个命令,你可以配置设备的各种参数,比如管理状态、MTU(最大传输单元)、MAC 地址等。如果想设置nmcli不管理某些网卡设备,可以下面的示例

    示例2:默认情况下,NetworkManager 服务会管理 除lo (环回)设备以外的所有设备。但是,也可以将某些设备设置为非受管设备,让NetworkManager 忽略这些设备。达到手动管理这些设备的目的将网卡设备临时设置为非受管设备nmcli device set DEV managed [no | on]

    ~]# nmcli device status
    DEVICE  TYPE      STATE         CONNECTION
    enp1s0  ethernet  disconnected  --
    ...
    ~]# nmcli device set enp1s0 managed no
    ~]# nmcli device status
    DEVICE  TYPE      STATE      CONNECTION
    enp1s0  ethernet  unmanaged  --
    ...
    

    示例3:将网卡设备永久设置为非受管设备

    # nmcli device status
    DEVICE  TYPE      STATE         CONNECTION
    enp1s0  ethernet  disconnected  --
    ...
    

    创建/etc/NetworkManager/conf.d/99-unmanaged-devices.conf文件,将希望不受管的设备添加到其中

    [keyfile]
    unmanaged-devices=interface-name:enp1s0
    

    要将多个设备设置为非受管设备,请使用分号分隔 unmanaged-devices 参数中的条目:

    [keyfile]
    unmanaged-devices=interface-name:interface_1;interface-name:interface_2;...
    

    重新载入 NetworkManager 服务:

    ~]# systemctl reload NetworkManager
    
  • reapply DEV:重新应用与指定设备相关的所有网络设置。它会强制 NetworkManager 重新加载和应用与指定设备相关的所有配置,包括 IP 地址、网关、DNS 设置等。
    示例命令~]# nmcli device replay ens17

  • modify:修改设备上处于活动的设备,但该修改只是临时的,并不会写入文件。命令格式和 nmcli connection modify 相同
    示例命令~]# nmcli device modify eth0 +ipv4.addresses 192.168.100.103/24

  • delete:删除指定设备,该命令从系统中删除接口。请注意, 这仅适用于诸如bonds, bridges, teams等软件设备。命令无法删除硬件设备 (如以太网)。超时时间为10秒
    示例命令~]# nmcli device delete bonds

  • monitor:用于监视特定网络设备(如 ens17)的状态变化,并实时显示相关事件。网上查的很多文档说还可以检测ip增加和减少,但是测试时仅仅打印了网卡up和down的相关信息,运行该命令会占据一个终端
    示例命令~]# nmcli device monitor ens17

5.2.2 connection

用于管理和配置网络连接的子命令。通过 nmcli connection 可以列出、创建、修改、删除和显示网络连接的详细信息。

  • show:显示当前连接

    ~]$ nmcli connection show
      NAME       UUID                                  TYPE      DEVICE
    Profile 1  db1060e9-c164-476f-b2b5-caec62dc1b05  ethernet    ens3
    ens3       aaf6eb56-73e5-4746-9037-eed42caa8a65  ethernet    --
    
    仅显示当前活跃的连接
    ~]$ nmcli connection show --active
    NAME       UUID                                  TYPE      DEVICE
    Profile 1  db1060e9-c164-476f-b2b5-caec62dc1b05  ethernet     ens3
    
    
  • add:添加一个新连接
    示例4: 添加一个以太网链接:nmcli con add ifname enp1s0 type ethernet

    ~]# nmcli conn add ifname ens17 type ethernet
    Connection 'ethernet-ens17' (a8e9f1de-2f2d-452f-9185-c933e163c540) successfully added.
    ~]# nmcli conn show
    NAME             UUID                                  TYPE      DEVICE 
    System ens17     a576bc27-4b66-8dc3-655a-116541f596cb  ethernet  ens17  
    ens17            cf306567-fa07-49c0-ad7b-ef17bc4d0d6e  ethernet  --          
    ethernet-ens17   a8e9f1de-2f2d-452f-9185-c933e163c540  ethernet  -- 
    

    使用这个命令添加的网络连接,可以看到其NAME显示的是ethernet-ens17,如果想让这个名称和真实的网络设备报保持一致,需要结合con-name选项一起使用,命令示例:nmcli conn add ifname ens17 type ethernet con-name ens17,这样就可以保证添加的网络连接名称叫ens17,其对应的网卡也是ens17,更方便理解。但是nmcli可以创建和关联网卡名称不同的连接,比如给特定的网络环境起一个方便识别的名称,示例如下:

    ~]# nmcli conn add ifname eth3 type ethernet connection.id "office net"  #关联的网卡叫做eth3,但是链接名称叫做office net
    ~]# nmcli conn show
    NAME             UUID                                  TYPE      DEVICE 
    System ens17     a576bc27-4b66-8dc3-655a-116541f596cb  ethernet  ens17  
    ens17            cf306567-fa07-49c0-ad7b-ef17bc4d0d6e  ethernet  --     
    office net       5cf840c6-47b5-475a-9f6c-25ab23f5e193  ethernet  --
    

    示例5:示例4只能创建一个使用dhcp协议获取IP的链接文件,如果想创建一个拥有静态IP地址的网卡文件,需要使用以下命令:nmcli connection add type ethernet con-name CONNECTION-NAME ifname INTERFACE-NAME ip4 ADDRESS gw4 ADDRESS

    添加IPV4地址示例:
    ~]# nmcli con add type ethernet con-name test-lab ifname ens9 ip4 10.10.10.10/24 gw4 10.10.10.254
    
    添加IPV6地址示例:
    ~]$ nmcli con add type ethernet con-name test-lab ifname ens9 ip6 abbe::cafe gw6 2001:db8::1
    

    示例6:添加静态、默认路由

    添加默认路由:~]# nmcli connection modify enp1s0 ipv4.gateway 192.168.1.1
    添加静态路由:~]# nmcli connection modify enp1s0 +ipv4.routes "192.168.122.0/24 10.10.10.1"  #这会将去往192.168.122.0/24 子网的流量定向到网关 10.10.10.1

    示例7:添加DNS

    设置两个 IPv4 DNS 服务器地址:
    ~]# nmcli conn modify eth0 ipv4.dns "8.8.8.8 8.8.4.4"
    
    请注意,这将取代任何先前设置的 DNS 服务器。设置两个 IPv6 DNS 服务器地址:
    ~]# nmcli conn modify eth0 ipv6.dns "2001:4860:4860::8888 2001:4860:4860::8844"
    
    请注意,这将取代任何先前设置的 DNS 服务器。另外,要将额外的 DNS 服务器添加到任何先前设置中,请使用 + 前缀:
    ~]# nmcli conn modify eth0 +ipv4.dns "8.8.8.8 8.8.4.4"
    ~]# nmcli conn modify eth0 +ipv6.dns "2001:4860:4860::8888 2001:4860:4860::8844"
    

    示例8:添加bond接口
    添加bond接口的命令很简单:~]# nmcli con add type bond ifname mybond0这个命令就会创建一个名称叫mybond0的设备,如果没有指定链接名称,则链接名称将继承设备名称。

    ~]# nmcli conn add type bond ifname mybond0
    Connection 'bond-mybond0' (9cce2792-4945-4d42-8150-77a8bd1f2dc0) successfully added.
    ~]# nmcli conn show
    NAME          UUID                                  TYPE      DEVICE  
    System ens17  a576bc27-4b66-8dc3-655a-116541f596cb  ethernet  ens17   
    bond-mybond0  9cce2792-4945-4d42-8150-77a8bd1f2dc0  bond      mybond0     
    

    创建bond设备可以指定一些接口运行的属性,如命令:~]# nmcli con add type bond ifname mybond0 bond.options "mode=balance-rr,miimon=100",各个属性需要使用bond.options显示给定,下面是一些常用的属性及其可使用的参数

    mode:指定绑定模式
      0 - balance-rr	轮询(Round-Robin),循环分发数据包
      1 - active-backup	主备模式,一个接口为活动状态,另一个为备用
      2 - balance-xor	需要启用静态的 Etherchannel(未启用 LACP 协商)
      3 - broadcast	需要启用静态的 Etherchannel(未启用 LACP 协商)
      4 - 802.3ad	需要启用 LACP 协商的 Etherchannel
      5 - balance-tlb	需要可自主端口
      6 - balance-alb	需要可自主端口- bala
    
    miimon:指定多长时间检查一次各子接口的状态,单位为毫秒
    
    updelay:设置接口从未启动到激活状态的延迟时间。这个选项用于确保在启动接口时,系统有足够的时间等待连接稳定
    
    downdelay:设置接口从激活到非激活状态的延迟时间。这个选项用于在接口失效或断开时,系统等待一段时间后再进行状态切换,以避免过于敏感地进行状态变更。
    
    xmit_hash_policy :用于指定绑定(bond)接口传输哈希策略的选项。这个选项决定了如何根据数据流的特征,将数据分布到绑定接口的成员之间,以实现负载均衡和最大化带宽利用。
      - layer2:基于源和目标 MAC 地址进行哈希。适用于基于以太网的负载均衡。
      - layer3+4:基于源和目标 IP 地址及端口号进行哈希。适用于基于 IP 的负载均衡。
      - layer3+4+6:基于源和目标 IP 地址、端口号以及传输层协议(TCP/UDP)进行哈希。
      - layer3+4+6+7:基于源和目标 IP 地址、端口号、传输层协议以及应用层数据(如 HTTP 头部)进行哈希。
    

    如果bond模式设置为主备模式,想切换当前的主子接口,可以使用命令:~]# nmcli dev mod bond0 +bond.options "active_slave=ens17",或者使用命令:~]$ nmcli dev mod bond0 +bond.options "primary=ens17"

    创建好bond后,需要为bond指定从接口,示例如下

    ~]# nmcli con add type bond-slave ifname ens17 master mybond
    ~]# nmcli conn show
    NAME          UUID                                  TYPE      DEVICE 
    bond-ens17    4c5b499b-5392-4ba2-8366-869dbeec74b7  bond      mybond
    System ens17  a576bc27-4b66-8dc3-655a-116541f596cb  ethernet  ens17
    

    bond-slave文件内容

    TYPE=Ethernet
    NAME="System ens17"
    UUID=a576bc27-4b66-8dc3-655a-116541f596cb
    DEVICE=ens17
    ONBOOT=yes
    MASTER_UUID=4c5b499b-5392-4ba2-8366-869dbeec74b7
    MASTER=mybond
    SLAVE=yes
    

    bond文件内容

    BONDING_OPTS=mode=active-backup
    TYPE=Bond
    BONDING_MASTER=yes
    PROXY_METHOD=none
    BROWSER_ONLY=no
    BOOTPROTO=none
    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=bond-ens17
    UUID=4c5b499b-5392-4ba2-8366-869dbeec74b7
    DEVICE=mybond
    ONBOOT=yes
    IPADDR=198.200.38.6
    PREFIX=24
    GATEWAY=198.200.38.254
    

    小tips:

    • 在 RHEL 7 中,默认情况下不会加载 bonding 模块。使用 root 用户身份运行以下命令来载入该模块:~]# modprobe --first-time bonding

    • 验证bond接口是否可以通信,可以从绑定接口 Ping 目标 IP。
      ~]# ping -I mybond 8.8.8.8

    • 查看处于活跃状态的接口,路径需要根据bond的名称更换路径,我这里的名称叫做mybond:~]# cat /sys/class/net/mybond/bonding/active_slave

    示例9:nmcli创建wifi链接
    首先需要使用nmcli device wifi list查看可以用的wifi接入点

    ~]$ nmcli dev wifi list
      SSID            MODE  CHAN  RATE     SIGNAL  BARS  SECURITY
      FedoraTest     Infra  11    54 MB/s  98      ▂▄▆█  WPA1
      Red Hat Guest  Infra  6     54 MB/s  97      ▂▄▆█  WPA2
      Red Hat        Infra  6     54 MB/s  77      ▂▄▆_  WPA2 802.1X
    * Red Hat        Infra  40    54 MB/s  66      ▂▄▆_  WPA2 802.1X
      VoIP           Infra  1     54 MB/s  32      ▂▄__  WEP
      MyCafe         Infra  11    54 MB/s  39      ▂▄__  WPA2
    

    接着使用静态 IP 配置创建 Wi-Fi 连接配置集,但允许自动 DNS 地址分配:

    ~]$ nmcli con add con-name MyCafe ifname wlp61s0 type wifi ssid MyCafe \
    ip4 192.168.100.101/24 gw4 192.168.100.1
    ---
    - con add con-name MyCafe:创建一个新的连接,并指定连接名称为 MyCafe。
    - ifname wlp61s0:指定连接将使用的 Wi-Fi 接口名称为 wlp61s0。这是用于指定连接要使用的实际物理接口名称。
    - type wifi:指定连接的类型为 Wi-Fi。
    - ssid MyCafe:指定 Wi-Fi 的 SSID(服务集标识符)为 MyCafe。这是无线网络的名称。
    - ip4 192.168.100.101/24:指定IPv4地址及其子网掩码。
    - gw4 192.168.100.1:指定连接的 IPv4 网关为 192.168.100.1

    然后设置 WPA2 密码,如 “caffeine” :

    ~]$ nmcli con modify MyCafe wifi-sec.key-mgmt wpa-psk
    ~]$ nmcli con modify MyCafe wifi-sec.psk caffeine
    

    更改 Wi-Fi 状态:

    ~]$ nmcli radio wifi [on | off ]
    
  • delete:删除连接,这将删除一个连接,同时删除链接文件。

    ~]# nmcli connection delete eth0_1
    
  • load:命令格式:nmcli conn reload [File],重新加载网络连接文件,可缺省指定文件。但是这个命令不会重新加载配置,可能会和以往管理centos 7的感觉不太一样

    ~]# nmcli connection reload
    
  • up | down:启动、关闭网络连接

    以连接名进行激活或关闭: ~]# nmcli connection up eth0
    以uuid进行激活:~]# nmcli connection up 5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03
    以设备接口名进行激活:~]# nmcli connection up ifname eth0
    
  • modify:修改网络连接的属性

    示例10:将网络连接office net改名为my office

    ~]# nmcli connection show
    NAME             UUID                                  TYPE      DEVICE 
    System ens17     a576bc27-4b66-8dc3-655a-116541f596cb  ethernet  ens17  
    ens17            cf306567-fa07-49c0-ad7b-ef17bc4d0d6e  ethernet  --     
    office net       b38c0ac5-e46c-41be-b9c9-e836be36ac23  ethernet  --     
    
    ~]# nmcli c modify "office net" con-name "my office"
    ~]# nmcli conn show
    NAME             UUID                                  TYPE      DEVICE 
    System ens17     a576bc27-4b66-8dc3-655a-116541f596cb  ethernet  ens17  
    ens17            cf306567-fa07-49c0-ad7b-ef17bc4d0d6e  ethernet  --     
    my office        b38c0ac5-e46c-41be-b9c9-e836be36ac23  ethernet  --          
    

    示例11:修改网络连接的名称并修改其关联的网卡
    nmcli conn modify "office net" con-name "my office" ifname eth3

    示例12:当你的网卡使用 DHCP 协议获取 IP 地址时,这个选项指定发送给 DHCP 服务器的主机名。这个主机名可以帮助 DHCP 服务器识别和记录客户端,甚至在某些情况下,服务器可能根据主机名来分配特定的 IP 地址。示例中使用的是ipv4.dhcp-hostname,使用ipv4.dhcp-client-id <client-ID-string>也可以达到相同的效果。

    ~]# nmcli con modify my-office ipv4.dhcp-hostname my-host ipv6.dhcp-hostname my-host
    

    示例13:添加或删除ip,命令格式:nmcli conn modify DEV [+|-]setting ip,注意这里的+ - 是可缺省的,如果缺省则意为修改主ip,setting需要明确给定,指明需要修改什么,可接受的选项有ipv4.addresses、ipv4.gateway、ipv4.dns1、ipv4.method,后面的ip则需要给定符合格式的ip地址,下面是几个示例:

    修改主ip:~]# nmcli conn modify ens17 ipv4.addresses 198.200.60.60/24 ipv4.gateway 198.200.60.254
    修改主ip也可以不指定网关,只简单的改个主ip, nmcli conn是命令的nmcli connection的简写,我个人比较喜欢写conn,更为简写的方式你可以写成nmcli c,效果相同
    
    修改DNS:~]# nmcli conn modify ens17 ipv4.dns 8.8.8.8,8.8.4.4
    
    删除ip方式一:~]# nmcli conn modify ens17 -ipv4.addresses 198.200.60.60/24
    
    删除ip方式二:nmcli会给每个ip加一个索引,也可以指定索引值删除ip,需要先查看ip对应的索引值
    [root@www ~]# nmcli -f IP4 connection show eth0
    IP4.ADDRESS[1]:                         192.168.100.101/24
    IP4.ADDRESS[2]:                         192.168.100.102/24
    IP4.ADDRESS[3]:                         192.168.100.103/24
    IP4.ADDRESS[4]:                         192.168.100.104/24
    IP4.GATEWAY:                            192.168.100.100
    IP4.DNS[1]:                             8.8.8.8
    删除索当前索引为2的地址:~]# nmcli connection modify eth0 -ipv4.addresses 2
    
    修改ipv4的配置方式:~]# nmcli conn modify ens17 ipv4.method {auto | manual | disabled | shared}
    - auto:自动配置,通常使用 DHCP来获取 IP 地址和其他网络参数。
    - manual:手动配置,需要手动指定 IP 地址、子网掩码、网关和 DNS 服务器。
    - disabled:禁用 IPv4 配置。
    - shared:共享配置,用于将当前连接的网络共享给其他设备,常用于创建热点。
    

    clone:克隆某个已存在链接,除了连接名称和uuid是新生成的,其他都是一样的,看官方文档中对克隆命令应用场景部分的说明,可能会使用A链接去模拟某B链接的mac地址,从而达到让本应该分配给B链接的配置分配给A 。我能想到的应用场景:机器上有个网卡A 对应链接文件A ,某天网卡A突然坏了,但是上级DHCP的配置是固定的,如果懒得去交换机上修改DHCP设置,那么就可以克隆个B链接文件,从而继承A的链接属性。
    命令格式:nmcli conn clone OLD_CONN NEW_CONN,你甚至可以让克隆出来的链接名称保持和老的一样,但是UUID一定会是新生成的。不过启用相同的链接名称,管理的时候需要用UUID指定链接,如果指定链接名称则两个会同步管理,比如删除,则会两个都删除。

    ~]# nmcli conn clone eth0 eth0
    eth0 (c96b5ac5-1cbe-4c54-bbab-4f6cd3385028) cloned as eth0 (0cae3553-643d-443e-9192-9d2a72197f62).
    ~]# nmcli conn show
    NAME          UUID                                  TYPE      DEVICE 
    System ens17  a576bc27-4b66-8dc3-655a-116541f596cb  ethernet  ens17  
    eth0          c96b5ac5-1cbe-4c54-bbab-4f6cd3385028  ethernet  --     
    eth0          0cae3553-643d-443e-9192-9d2a72197f62  ethernet  --   
    
  • monitor:和nmcli monitor命令差不多,个人感觉debug的时候可能会用到,平时应用场景较少,并未深入研究,知道即可。

    ~]# nmcli conn momitor 
    
5.2.3 general:显示各类网络接口的链接状态
  • status:显示网络管理器的整体状态
    ~]# nmcli general status
    STATE      CONNECTIVITY  WIFI-HW  WIFI     WWAN-HW  WWAN
    connected  full          enabled  enabled  enabled  enabled
    
    ~]# nmcli -t -f STATE general
    connected
    
    ---
    STATE (状态):显示网络管理器的总体状态。可能的值有:
     - connected:至少有一个网络连接处于活动状态。
     - connecting:正在尝试连接到网络。
     -  disconnected:没有活动的网络连接。
     -  asleep:网络管理器处于睡眠状态,通常是因为计算机处于睡眠或休眠状态。
     - unknown:无法确定网络管理器的状态。
     
    CONNECTIVITY (连接性):显示网络连接的整体状况。可能的值有:
     - none:没有网络连接。
     - portal:连接到网络,但无法访问互联网。可能被重定向到登录门户。
     - limited:连接到网络,但只能访问部分互联网资源。
     - full:完全连接,可以访问互联网。
    
    WIFI-HW (Wi-Fi 硬件):显示Wi-Fi硬件的状态。可能的值有:
     - enabled:Wi-Fi硬件已启用。
     - disabled:Wi-Fi硬件已禁用。
     
    WIFI (Wi-Fi):显示Wi-Fi软件的状态。可能的值有:
     - enabled:Wi-Fi软件已启用。
     - disabled:Wi-Fi软件已禁用。
     
    WWAN-HW (移动宽带硬件):显示移动宽带硬件的状态。可能的值有:
     - enabled:移动宽带硬件已启用。
     - disabled:移动宽带硬件已禁用。
     
    WWAN (移动宽带):显示移动宽带软件的状态。可能的值有:
     - enabled:移动宽带软件已启用。
     - disabled:移动宽带软件已禁用。
    
  • hostname:用于查看主机名或更改主机名
    查看主机名:~]# nmcli general hostname
    设置主机名:~]# nmcli general hostname <new-hostname>
    
  • permissions:显示当前用户在 NetworkManager 中的拥有的权限信息。例如修改网络设置、激活或停用连接等。
    ~]# nmcli general permissions
    PERMISSION                                                        VALUE
    org.freedesktop.NetworkManager.enable-disable-network             yes
    org.freedesktop.NetworkManager.enable-disable-wifi                yes
    org.freedesktop.NetworkManager.enable-disable-wwan                yes
    org.freedesktop.NetworkManager.sleep-wake                         yes
    org.freedesktop.NetworkManagerwork-control                    yes
    org.freedesktop.NetworkManager.wifi.share.protected               yes
    org.freedesktop.NetworkManager.wifi.share.open                    yes
    org.freedesktop.NetworkManager.settings.modify.system             auth
    
    ----解释
    org.freedesktop.NetworkManager.enable-disable-network: 允许启用或禁用整个网络。
    org.freedesktop.NetworkManager.enable-disable-wifi: 允许启用或禁用 Wi-Fi。
    org.freedesktop.NetworkManager.enable-disable-wwan: 允许启用或禁用移动宽带。
    org.freedesktop.NetworkManager.sleep-wake: 允许使 NetworkManager 进入或退出睡眠状态。
    org.freedesktop.NetworkManagerwork-control: 允许对网络进行控制(例如,激活或停用连接)。
    org.freedesktop.NetworkManager.wifi.share.protected: 允许共享受保护的 Wi-Fi 连接。
    org.freedesktop.NetworkManager.wifi.share.open: 允许共享开放的 Wi-Fi 连接。
    org.freedesktop.NetworkManager.settings.modify.system: 允许修改系统网络设置。auth 表示需要身份验证(例如,输入管理员密码)才能进行此操作。
    这些权限值可以是 yes(允许)、no(不允许)或者 auth(需要身份验证)。
    
5.2.4 networking

主要用于管理和查询网络管理器的全局网络设置
命令格式:nmcli networking [on | off | reload | connectivity | connectivity check],大多选项都可见名知意,下面是难理解的选项用法

示例14nmcli networking connectivity,这个命令直接返回当前网络连接的状态,它报告的是网络管理器上一次检查到的连接状态。这意味着它可能会使用先前的结果,而不会立即重新检查连接状态。该命令会有几个返回值,代表的意义不同

~]# nmcli networking connectivity
full

full:表示网络连接完全正常,可以访问互联网。
limited:表示网络连接有限。可能只能访问本地网络资源,不能访问互联网。通常,这种情况表示路由或网关配置有问题,或者互联网连接中断。
none:表示没有网络连接。系统没有连接到任何网络,或者网络连接不可用。
portal:表示网络连接到达了一个门户网站,通常是需要认证的页面,例如公共 Wi-Fi 热点的登录页面。需要通过该门户进行认证才能访问互联网。
unknown:表示网络连接状态未知。网络管理器无法确定当前的连接状态。

示例15::~]# nmcli networking connectivity check
这个命令强制网络管理器立即检查当前的网络连接状态,并返回最新的结果。它会实际尝试连接到一个预定的测试网址,通常是一个公共的、可信赖的互联网资源,以确定当前的连接状态

四、链接状态查看

1. netstat命令

可以显示网络链接、路由表、接口数据统计、地址伪装链接、组播成员关系

  • 功能1:显示网络连接相关
    命令格式:netstat [options]
    -t:显示tcp协议的相关链接
    -u:显示udp协议的相关链接
    -n:不反解IP地址
    --numeric-hosts:不反解主机名
    --numeric-ports:不反解端口
    -a:显示所有连接
    -w:显示裸套接字的相关链接,裸套接字意为不经过传输层,由应用层直接调用IP来实现数据传输的
    -l:显示监听状态的链接
    -e:扩展格式的链接信息
    -p:显示与此链接相关的进程号
    
  • 功能2:显示内核路由表信息
    -r:显示内核路由表
    -n:不反解
    
  • 功能3:显示接口统计数据
    -i:显示所用接口
    -I[IFC_NAME]:显示指定接口
    

2. ss命令

命令格式:ss [options] [ FILTER ]

option:
-t:显示tcp相关链接
-u:显示udp相关链接
-x:unix sock相关
-n:不反解
-a:显示所有连接
-w:显示裸套接字相关链接
-l:显示监听状态链接
-e:扩展格式
-p:显示相关的进程号
-m:内存使用情况
-o:显示计时器信息
filter
state ESTABLISHED:显示已建立的链接
dport = :22   :通过目标端口过滤链接
sport = :22   :通过源端口过滤链接

五、 文本窗口配置网络

  • system-config-network-tui setup
  • nmtui
    ~]# yum install NetworkManager

本文标签: 网络管理Linux