使用nmcli命令在各Linux系统上统一的配置网络

news/2024/5/21 4:41:42

前言:原文在我的博客网站中,持续更新数通、系统方面的知识,欢迎来访!

使用nmcli命令在各Linux系统上统一的配置网络icon-default.png?t=N7T8https://myweb.myskillstree.cn/123.html

        你是否会遇到在不同的Linux系统中配置网络时,修改的配置文件和语法都不一样的烦恼呢?

        各种不同的文件路径和语法,甚至Ubuntu系统中每隔几代网络配置文件就会变换位置和语法,这种情况非常不利于我们日常对系统的维护和管理。

        对于这种情况,我们可以使用NetworkManager工具在不同的系统上进行统一语法的配置与管理

        现阶段所发行的Linux版本基本都支持NetworkManager工具进行统一管理

        如果配置时发生语法错误,该工具将会暂停修改该网络,不会造成配置文件错误而导致的一系列问题

        甚至当你将原网络配置文件删除后,只要使用命令创建一个和原先参数一样的网络接口,该配置文件就会自动的重新生成

        使用该工具配置的所有网络配置文件会存于/etc/NetworkManager/system-connections/目录下

        PS:network-manager接管网络后使用nmcli命令修改网卡的相关配置后会永久生效(重启网卡后依旧生效)

目录

一、配置NetworkManager接管网络(选)

二、nmcli的相关配置

有线网络配置

使用nmcli添加一个网卡并配置静态ip地址

激活/关闭网卡

使用nmcli修改一个网卡的地址

使用nmcli添加一个网卡配置使其获取动态ip地址

使用nmcli将已有的静态网卡配置修改为动态网卡配置

使用nmcli将已有的动态网卡配置修改为静态网卡配置

使用nmcli删除一个网卡配置信息

使用nmcli为一张网卡配置多个ip地址

使用nmcli修改网卡设备的连接名称

无线网络配置(需要有无线网卡)

打开/关闭无线网络开关

查看无线网络开关状态:

连接无线网络

        扫描可用的无线网络

连接到无线网络

查看连接状态

查看连接的详细信息

开启无线热点(AP模式)

查看当前无线网卡是否支持AP模式:

为无线网卡接口配置地址

安装dhcp服务

进行源地址转换SNAT

开启路由转发

重启DHCP服务和新建WiFi热点

其他设置:

VLAN相关配置

创建vlan

网桥Bridge配置

创建名为br-vxlan的网桥

VXLAN配置

单播模式(点对点)

多播模式(点对多点)

在host1配置,使用多播模式

在host2配置,使用多播模式

互ping测试

VXLAN+网桥网络(Bridge)+组播

host1创建vxlan+bridge+组播网络:

host2创建vxlan+bridge+组播网络:

静态路由相关配置

三、总结


一、配置NetworkManager接管网络(选)

如果系统默认自带了NetworkManager工具就不用做此步,如果是后期手动安装的就需要配置接管网络

安装Network-Manager并启动

apt install network-manager -y
systemctl restart NetworkManager
systemctl enable NetworkManager

配置NetworkManager接管网络

        语法:

nmcli net <on/off>

        示例:

nmcli net on

此时已经可以通过nmcli管理网络了

        使用nmcli -p device查看设备状态  

nmcli -p device
============设备状态
============
DEVICE  TYPE      STATE   CONNECTION 
--------------------------------------------------
ens32   ethernet  已连接  有线连接 1 
lo      loopback  未托管  --         

二、nmcli的相关配置

有线网络配置

使用nmcli添加一个网卡并配置静态ip地址

        语法:

nmcli con add con-name <连接名> ifname <网卡名> type <连接类型> ipv4.method manual ipv4.addresses <ipv4地址> ipv4.gateway <ipv4网关地址> ipv4.dns <ipv4 dns服务器>

        注意:如果想要添加两个dns地址应该用双引号" "将两个地址包起来,表示两个地址都是DNS地址

        示例:

nmcli con add con-name test ifname ens32 type ethernet ipv4.method manual ipv4.addresses 192.168.10.10/24 ipv4.gateway 192.168.10.2 ipv4.dns 192.168.10.2连接 "test" (3ceeec8a-d92c-42dd-ae10-2f5478eda991) 已成功添加

        此时静态地址就配置完成了,如果不进行指定则NetworkManager默认会在接口创建的时候自动开启该接口,当然我们也可以指定某个接口的打开和关闭状态

激活/关闭网卡

        语法:

nmcli con {up/down} <连接名>

        示例:

nmcli con up test 连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/2)

        查看网卡信息

nmcli con show
NAME        UUID                                  TYPE      DEVICE 
test        3ceeec8a-d92c-42dd-ae10-2f5478eda991  ethernet  ens32  
有线连接 1   b640bf63-ac94-3547-be75-8fac06083304  ethernet  --    

使用nmcli修改一个网卡的地址

        语法:

nmcli con modify <连接名> ipv4.method manual ipv4.addresses <新的ipv4地址> ipv4.gateway <新的ipv4网关地址> ipv4.dns <dns服务器>

        示例:

nmcli con modify ens33 ipv4.method manual ipv4.addresses 192.168.10.20/24 ipv4.gateway 192.168.10.2 ipv4.dns 192.168.10.2

        刷新网卡并查看信息

nmcli con up test
ip add

使用nmcli添加一个网卡配置使其获取动态ip地址

        语法:

nmcli con add con-name <连接名> ifname <网卡名> type <连接类型> ipv4.method auto

        示例:

nmcli con add con-name test ifname ens32 type ethernet ipv4.method auto
nmcli con up test                        # 激活网卡

使用nmcli将已有的静态网卡配置修改为动态网卡配置

        语法:

nmcli con modify <连接名> ipv4.method auto

        示例:

nmcli con modify test ipv4.method auto
nmcli con up test

        然后需要将静态地址删除,否则使用ip add查看时会有两个地址出现

nmcli connection modify test ipv4.addresses "" ipv4.gateway ""  ipv4.dns ""       # 将test的静态地址设置为空,也就不存在了,只剩下了动态地址

        PS:需要先获取到dhcp地址才能删除原静态配置,否则会提示"ipv4.method=manual 不允许这个属性为空"

        当然,如果觉得麻烦,也可以将原静态连接删除后直接添加新的动态地址配置,如下:

nmcli con del test
nmcli con add con-name test ifname ens32 type ethernet ipv4.method auto

使用nmcli将已有的动态网卡配置修改为静态网卡配置

        语法:

nmcli con modify <连接名> ipv4.method manual ipv4.address <IP地址/子网掩码> ipv4.gateway <网关> ipv4.dns <dns地址>

        示例:

nmcli con modify test ipv4.method manual ipv4.address 192.168.10.20/24 ipv4.gateway 192.168.10.2 ipv4.dns 192.168.10.2
nmcli con up test

使用nmcli删除一个网卡配置信息

        语法:

nmcli con del <连接名> 

        示例:

nmcli con del test成功删除连接 "test" (3ceeec8a-d92c-42dd-ae10-2f5478eda991)

        查看网卡信息

nmcli con show
NAME        UUID                                  TYPE      DEVICE 
有线连接 1  b640bf63-ac94-3547-be75-8fac06083304  ethernet  ens32 

使用nmcli为一张网卡配置多个ip地址

首先需要先创建一个连接使其获得静态或动态ip地址才能在此基础上增加地址,这里不再讲述配置静态或动态地址的命令,直接进行增加地址的配置

        语法:

nmcli con modify <连接名> +ipv4.address <ipv4地址> ipv4.gateway <网关> ipv4.dns <dns地址>

        示例:

nmcli con modify ens32 +ipv4.address 192.168.10.160/24 ipv4.gateway 192.168.10.254 ipv4.dns 114.114.114.114
nmcli con up ens32

使用nmcli修改网卡设备的连接名称

        语法:

nmcli con modify <原连接名或UUID值> connection.id <新连接名>

        示例:

        先查看网卡设备的各项信息

nmcli con show
NAME        UUID                                  TYPE      DEVICE 有线连接 1   b640bf63-ac94-3547-be75-8fac06083304  ethernet  ens32   

        修改网卡设备的连接名称为ens32

nmcli con modify b640bf63-ac94-3547-be75-8fac06083304 connection.id ens32

        再次查看网卡设备的各项信息,可以发现NAME这一栏的名称被修改了

nmcli con show
NAME        UUID                                  TYPE      DEVICE ens32       b640bf63-ac94-3547-be75-8fac06083304  ethernet  ens32   

无线网络配置(需要有无线网卡)

打开/关闭无线网络开关

        语法:

nmcli radio all <on/off>

        示例:

nmcli radio all on

查看无线网络开关状态:

        语法:

nmcli radio <all--默认>

        示例:

nmcli radio WIFI-HW  WIFI    WWAN-HW  WWAN   已启用   已启用  已启用   已启用 

连接无线网络

        扫描可用的无线网络
nmcli device wifi list

        这个命令会列出所有可用的无线网络及其详细信息。

连接到无线网络

        如果您知道无线网络的 SSID(网络名称)和密码,可以直接连接:

        语法:

nmcli dev wifi connect <SSID> password <network-password>

        示例:

nmcli device wifi con 李李密制十三香 password MySkillstree设备 "wlx0013ef6f25bd" 成功以 "c2d01c8d-47e5-41ee-8a3c-171aaddf53a8" 激活。

        如果您知道无线网络的 SSID(网络名称)但不想显示密码,可以加入-a 或 --ask参数,此参数会询问缺少的参数

        语法:

nmcli -a device wifi con <SSID>

        示例:

nmcli -a device wifi con 李李密制十三香密码: ••••••••••••设备 "wlx0013ef6f25bd" 成功以 "afc44524-ba51-452b-ae51-21f2cd2b2f6f" 激活。
查看连接状态

        连接尝试后,您可以检查连接状态:

nmcli connection showNAME            UUID                                   TYPE      DEVICE          李李密制十三香   afc44524-ba51-452b-ae51-21f2cd2b2f6f   wifi      wlx0013ef6f25bd
查看连接的详细信息

        语法:

nmcli connection show <connetcion-name>

        示例:

nmcli connection show  李李密制十三香

 

开启无线热点(AP模式)

查看当前无线网卡是否支持AP模式:

安装iw命令

apt install iw -y

使用iw命令查看当前无线网卡是否支持AP模式

iw list
或
# iw list | grep -A 20 "Supported interface modes:" | grep -B 10 "Band 1:"

查找到Supported interface modes:字段下是否有AP字样,有则代表该无线网卡支持AP模式

添加无线网络并关闭自动连接

        语法:

nmcli con add con-name <连接名> ifname <网卡名> type wifi 802-11-wireless.ssid <SSID> 802-11-wireless-security.key-mgmt <wpa-psk/wpa-eap/ieee8021x/none> 802-11-wireless-security.psk <预共享密钥> autoconnect <on/off>

        wpa-psk:这是使用预共享密钥(PSK)的WPA(Wi-Fi Protected Access)安全模式。这种模式要求所有客户端都使用相同的密码进行身份验证,是家庭和小型企业网络中常用的安全方式。wpa-psk后加psk参数和预共享密钥

        wpa-eap:这是使用扩展认证协议(EAP)的WPA安全模式。结合WPA的安全性和802.1X的认证机制,通常用于需要更高安全性的场景,如企业网络。wpa-eap后可加的参数有:802-1x.eap、802-1x.phase2-auth、802-11-wireless-security.psk、802-1x.cert-path/802-1x.private-key-path、用户名和密码等

        ieee8021x:这是使用802.1X认证协议的安全模式。在这种模式下,客户端需要通过认证服务器(如RADIUS服务器)进行身份验证。ieee8021x后可加的参数有:认证方法(如:802-1x.eap)、证书和私钥(如:EAP-TLS)、认证服务器(如:RADIUS服务器)、用户身份和密码(802-1x.identity指定用户名和802-1x.password指定密码)等

        none:这表示不使用密钥管理,即无线网络不使用加密或身份验证。这种方式非常不安全,不建议在公共或未受保护的环境中使用

        示例:

        使用wpa-psk模式创建一个最常用的无线网络连接安全模式,我这里的无线网卡设备名为:wlx0013ef6f25bd

nmcli con add con-name MySkillstree ifname wlx0013ef6f25bd type wifi 802-11-wireless.ssid MySkillstree  802-11-wireless.mode ap 802-11-wireless-security.key-mgmt wpa-psk 802-11-wireless-security.psk a1234567 autoconnect no连接 "MySkillstree" (7f0c422d-644e-4c98-b615-8eac99304139) 已成功添加。

        以上配置命令过长和繁琐,可以简写为以下命令:

nmcli con add con-name MySkillstree ifname wlx0013ef6f25bd type wifi ssid MySkillstree mode ap wifi-sec.key-mgmt wpa-psk wifi-sec.psk a1234567 autoconnect no连接 "MySkillstree" (7f0c422d-644e-4c98-b615-8eac99304139) 已成功添加。

其中:

        802-11-wireless.ssid 可缩写为 ssid

        802-11-wireless.mode ap 可缩写为 mode ap

        802-11-wireless-security 可缩写为 wifi-sec

当然如果就只使用wpa-psk模式创建简单的个人热点,也可以使用device参数进行快速创建

nmcli device wifi hotspot con-name MySkillstree ifname wlx0013ef6f25bd ssid MySkillstree password a1234567设备 "wlan0" 成功以 "1facecb6-bf75-461a-b847-b63911bb3f61" 激活。提示:"nmcli dev wifi show-password" 显示 Wi-Fi 名称和密码。
为无线网卡接口配置地址
nmcli con modify MySkillstree ipv4.method manual ipv4.address 10.0.0.1/24 ipv4.gateway 10.0.0.1 ipv4.dns 114.114.114.114
安装dhcp服务

        用于下发无线热点和管理连接到热点的设备的 DNS 和 DHCP(ubuntu、kali中为isc-dhcp-server,在centos中为dhcpd)

apt install isc-dhcp-server
vim /etc/dhcp/dhcpd.conf
修改以下内容:
subnet 10.0.0.0 netmask 255.255.255.0 {range 10.0.0.1 10.0.0.100; option domain-name-servers 114.114.114.114;option subnet-mask 255.255.255.0;option routers 10.0.0.1; option broadcast-address 10.0.0.255;
}
保存退出

        指定dhcp服务下发地址的物理接口(当系统中存在多个网卡设备,不做会报错)

vim /etc/default/isc-dhcp-server
修改以下内容:
INTERFACESv4="wlx0013ef6f25bd"
保存退出
进行源地址转换SNAT

        网关默认是不知道我们自己创建的这个ip地址的,只有使用地址转换技术NAT将无线网卡上的收到的地址转换成我们连接公网的地址才能正常访问互联网

iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o ens32 -j MASQUERADE

        查看SNAT转换列表

iptables -t nat -nvL POSTROUTINGChain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)pkts   bytes  target     prot opt  in     out      source               destination         0     0    MASQUERADE   0    --  *      ens32    10.0.0.0/24          0.0.0.0/0
开启路由转发

        Linux系统默认不转发路由,只有开启路由转发后才会转发其他网卡接受到的数据包

echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
重启DHCP服务和新建WiFi热点
systemctl restart isc-dhcp-server
nmcli con up MySkillstree

此时通过手机连接到热点后可以正确获取地址和上网

这里还有一点要注意:

        如果是外接的usb无线网卡到虚拟机内,有可能会导致驱动和内核不匹配,即使无线网卡支持AP模式也能正常连接WiFi,但是在开启个人热点时依旧会报错802.1x认证超时

        当然以上情况会有但是不常见,但还是建议开启个人热点的话还是在自带wifi模块的Linux物理机上进行比较好

其他设置:

        对于其他设置如:动静态地址,修改连接名称,删除连接等均与有线网络设置一样,这里就不在讲述

VLAN相关配置

创建vlan

        创建一个vlan100接口并将物理网卡ens32绑定到vlan100中,这里的vlan是虚拟设备常被用做子接口配置,同样bond和team类型的网络接口也可以被配置为子接口

        语法:

nmcli con add con-name <连接名称> ifname <接口名称> type vlan id <vlan-id> dev <网卡设备> ipv4.method manual ipv4.address <ipv4地址> ipv4.gateway <网关> ipv4.dns <dns地址>

        示例:

nmcli con add con-name vlan100 ifname vlan100 type vlan id 100 dev ens32 ipv4.method manual ipv4.address 192.168.100.100/24 ipv4.gateway 192.168.100.254 ipv4.dns 114.114.114.114

网桥Bridge配置

        bridge 是内核提供的虚拟以太网桥,原理上类似于物理交换机,工作在第二层,可以将多个以太网接口连接在一起,使它们成为一个逻辑上的以太网段。这样,在同一个网桥上的设备可以直接通信,就像它们连接在同一个物理以太网上一样,同样也可以配置生成树(STP)协议

        要注意的是,绑定为bridge上的成员接口都无法配置地址且可以和bridge共用一个地址,如果要配置地址进行通信,可以配置子接口进行通信

创建名为br-vxlan的网桥

创建一个名为br-vxlan的网桥且不设置ip地址

        语法:

nmcli con add con-name <连接名> ifname <接口名> type bridge ipv4.method disabled ipv6.method disabled

        示例:

nmcli con add con-name br0 ifname br0 type bridge ipv4.method disabled ipv6.method disabled

VXLAN配置

        VXLAN可将二层报文用四层协议进行封装,即在四层网络的基础上构建一个虚拟的二层网络进行二层通信,包括广播

注意!!!

        1、请事先关闭或放行防火墙和SELinux等

        2、以下实验如果是两个ubuntu虚拟机且其中一个是克隆,配置VXLAN时当接口名称(ifname)一样时可能会出现两个vxlan接口的MAC地址一样的情况。

        正常来讲Mac地址是唯一的,但是可能因为是vmware的小bug吧,导致罕见的Mac地址会冲突

        此时可以更改接口名称(ifname)为其他的,只要VNI也就是vxlan的id值一样就不影响,或者使用工具将某一vxlan接口的mac地址修改但这种方法通常关机后会恢复

        这种情况下使用wireshark抓包只能抓到对放发来的arp报文,但是没有arp回应报文,因为双方的mac地址一样,会被误以为是自己发的,就不会发送arp回复报文。

单播模式(点对点)

        语法:

nmcli con add con-name <连接名> ifname <接口名> type vxlan id <vni> local <本地地址> remote <对端地址> destination-port <UDP端口,默认为4789> dev <设备名> ipv4.method manual ipv4.address <ipv4地址> ipv4.gateway <网关> ipv4.dns <dns地址>

        示例:

        创建名为 vxlan100 的 vxlan 接口,指定其 vni、对端 ip、目的 udp 端口和本设备上承载 vxlan 流量的物理接口

nmcli con add con-name vxlan100 ifname vxlan100 type vxlan id 100 local 192.168.10.100 remote 192.168.10.200 destination-port 4789 dev ens32 ipv4.method manual ipv4.address 172.16.0.1/24 ipv4.gateway 172.16.0.254
nmcli con up vxlan100 

        查看 vxlan0 的详细信息

ip -d link show vxlan100

        查看系统路由表会发现多了172.16.1.0/24网段的路由表

route -n
内核 IP 路由表
目标            网关            子网掩码        标志  跃点    引用     使用 接口
0.0.0.0         192.168.10.2    0.0.0.0         UG    100    0        0 ens32
0.0.0.0         172.16.0.254    0.0.0.0         UG    20500  0        0 vxlan100
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 ens32
172.16.0.0      0.0.0.0         255.255.255.0   U     500    0        0 vxlan100
192.168.10.0    0.0.0.0         255.255.255.0   U     100    0        0 ens32

        查看vxlan的fdb表(转发表)

bridge fdb show dev vxlan10000:00:00:00:00:00 dst 192.168.10.200 via ens32 self permanent

        这个表项的意思是,默认的VTEP对端地址为 192.168.10.200。换句话说,原始报文经过vxlan0后,会被内核加上VXLAN头部,而外部UDP头部的目的IP地址为192.168.10.200(源VTEP封包过程)

        此时对端设备也配置vxlan100

        保证VNI也是100,dstport也是4789,并修改VTEP的local和remote IP地址的值

nmcli con add con-name vxlan100 ifname vxlan100 type vxlan id 100 local 192.168.10.200 remote 192.168.10.100 destination-port 4789 dev ens32 ipv4.method manual ipv4.address 172.16.0.2/24 ipv4.gateway 172.16.0.254
nmcli con up vxlan100

        ping测试

ping 172.16.0.2 -I 172.16.0.1

多播模式(点对多点)

        要组成同一个VXLAN网络,VTEP必须能够感知到彼此的存在,多播组本身的功能就是把网络中的某个节点组成一个虚拟的组,所以VXLAN最初想到用多播来实现也是很自然的。

        注意,如果VXLAN要使用多播,那么底层网络结构需要支持多播功能

        本实验与前面的实验比较相似,只不过主机之间不是点对点的连接,而是通过多播组成一个虚拟的整体。

在host1配置,使用多播模式

        此时参数remote应指定相同的多播地址(范围: 224.0.0.0~239.255.255.255)

nmcli con add con-name vxlan101 ifname vxlan101 type vxlan id 101 local 192.168.10.100 remote 239.1.1.1 destination-port 4789 dev ens32 ipv4.method manual ipv4.address 172.17.0.1/24 ipv4.gateway 172.17.0.254
nmcli con up vxlan101
在host2配置,使用多播模式

        此时参数remote应指定相同的多播地址(范围: 224.0.0.0~239.255.255.255)

nmcli con add con-name vxlan101 ifname vxlan101 type vxlan id 101 local 192.168.10.200 remote 239.1.1.1 destination-port 4789 dev ens32 ipv4.method manual ipv4.address 172.17.0.2/24 ipv4.gateway 172.17.0.254
nmcli con up vxlan101
互ping测试

VXLAN+网桥网络(Bridge)+组播

        上述的点对点 VXLAN 网络通信双方只有一个 VTEP,且只有一个通信实体,而在实际生产中(主要是云服务器),每台物理机上都有几十台甚至上百台虚拟机或容器需要通信,因此需要一种机制将这些通信实体组织起来,再通过隧道口 VTEP 转发出去。

        方案其实也很常见,Linux Bridge 就可以将多块虚拟网卡连接起来,因此可以选择使用 Bridge 将多个虚拟机或容器放到同一个 VXLAN 网络中。和上面的模式相比,这里只是多了一个 Bridge,用来连接不同 network namespace (网络名称空间)中的 veth pair,同时 VXLAN 网卡也需要连接到该 Bridge。

        其实说大白话就是:

题目:

  • 在两台物理设备上创建网络命名空间ns0和ns1,veth pair
  • 新建vxlan隧道,网桥名称为 br-vxlan,网桥的出口为vxlan103,id为103
  • 设备-1的vxlan隧道地址为172.18.0.1/24,设备-2的vxlan隧道地址为172.18.0.2/24.
  • 新建网桥bridge,将vxlan网络和veth pair绑定到bridge上
  • 测试不同设备中命名空间内网络的二层联通性。

注意!!!

        以下实验如果是在两台ubuntu虚拟机上做的,且一台为克隆,最好将vxlan,bridge,veth pair的ifname修改,否则可能会有mac地址冲突的情况发生,会导致实验结果不通

host1创建vxlan+bridge+组播网络:
# 创建vxlan网络,如果ipv6.method disabled不可用,也可以将disabled换成ignore,主要是为了让其不获取地址
nmcli con add con-name vxlan102 ifname vxlan102 type vxlan id 102 local 192.168.10.100 remote 239.1.1.1 destination-port 4789 dev ens32 ipv4.method disabled ipv6.method disabled
# 然后创建网桥 br0,把 VXLAN 网卡 vxlan102 绑定到上面,如果ipv6.method disabled不可用,也可以将disabled换成ignore,主要是为了让其不获取地址
nmcli con add con-name br0 ifname br0 type bridge ipv4.method disabled ipv6.method disabled
nmcli con modify vxlan102 master br0
# 刷新vxlan102
nmcli con up vxlan102
# 下面创建一对veth pair(veth0和veth1)
ip link add veth0 type veth peer name veth1
# 把veth pair一端veth0绑定到网桥
ip link set veth0 master br0
ip link set veth0 up
# 创建命名空间
ip netns add ns0
# 把veth pair一端veth1放到命名空间
ip link set dev veth1 netns ns0
# 给veth1设置ip
ip netns exec ns0 ip addr add 172.18.0.1/24 dev veth1
# 把veth1 和 lo up
ip netns exec ns0 ip link set lo up
ip netns exec ns0 ip link set veth1 up
# 查看 ns0 的网卡信息
ip netns exec ns0 ip add
host2创建vxlan+bridge+组播网络:
# 创建vxlan网络,如果ipv6.method disabled不可用,也可以将disabled换成ignore,主要是为了让其不获取地址
nmcli con add con-name vxlan102 ifname vxlan102 type vxlan id 102 local 192.168.10.200 remote 239.1.1.1 destination-port 4789 dev ens32 ipv4.method disabled ipv6.method disabled
# 然后创建网桥 br0,把 VXLAN 网卡 vxlan102 绑定到上面,如果ipv6.method disabled不可用,也可以将disabled换成ignore,主要是为了让其不获取地址
nmcli con add con-name br0 ifname br0 type bridge ipv4.method disabled ipv6.method disabled
nmcli con modify vxlan102 master br0
# 刷新vxlan102
nmcli con up vxlan102
# 下面创建一对veth pair(veth0和veth1)
ip link add veth0 type veth peer name veth1
# 把veth pair一端veth0绑定到网桥
ip link set veth0 master br0
ip link set veth0 up
# 创建命名空间
ip netns add ns1
# 把veth pair一端veth1放到命名空间
ip link set dev veth1 netns ns1
# 给veth1设置ip
ip netns exec ns1 ip addr add 172.18.0.2/24 dev veth1
# 把veth1 和 lo up
ip netns exec ns1 ip link set lo up
ip netns exec ns1 ip link set veth1 up
# 查看 ns1 的网卡信息
ip netns exec ns1 ip add

        互ping测试,隧道建立需要一定时间,可以耐心等一会

静态路由相关配置

添加静态路由和优先级

        语法:

nmcli con modify <连接名> ipv4.routes "<目标网段/子网掩码> <下一跳>"
或
nmcli con modify <连接名> ipv4.routes "<目标网段/子网掩码> <下一跳> <优先级>"
nmcli con up <连接名>

        示例:

nmcli con modify ens32 ipv4.routes "10.0.0.0/24 192.168.10.2 99"

注意:

        1、在命令中如果为设置优先级则默认为100,默认路由为20100

        2、优先级越小越优先,如:100 > 110

        3、默认路由的优先级无法更改

三、总结

        本文所有内容都由我亲自试验并总结,如果有朋友转载,请标明出处

        毕竟网上对于NetworkManager工具的各种解释都过于片面,也没有一个比较全面的示例,所以在本文上我还是耗费了很多的精力和时间的

        这其中当属无线网络的AP模式开启和两个ubuntu系统配置Vxlan上最耗费时间

        因为是虚拟机,会遇到各种各样的不适配或者其他bug,都需要一样找出问题来

        目前这里暂时只展现这些最常用的配置示例,目的是为了让大家在以后面对各式各样的Linux系统时能够更便捷的进行统一的网络配置

        当然后期也会逐渐对本文进行补充和更改,感谢支持!!!


http://www.mrgr.cn/p/10803034

相关文章

深入探索JavaScript中的structuredClone:现代深拷贝的解密指南

在 JavaScript 中,实现深拷贝的方式有很多种,每种方式都有其优点和缺点。今天介绍一种原生 JavaScript 提供的structuredClone实现深拷贝。 下面列举一些常见的方式,以及它们的代码示例和优缺点: 1. 使用 JSON.parse(JSON.stringify(obj)) 代码示例:function deepClone(ob…

keycloak~登录皮肤动态切换的尝试

keycloak的登录皮肤theme,可以设置领域全局的,或者每个客户端进行单独设置,这种设计是没有问题的,但有时,一个客户端可能有多种主题,这时,你只能再加个客户端,对应新的主题,但这样不方便日后的统计,因为很多统计维度都是以client为基础的,所以,我们需要在进入登录页…

基于TRIZ理论的锂电池生产工艺优化思路

在能源科技迅猛发展的今天&#xff0c;锂电池作为重要的储能元件&#xff0c;其生产工艺的优化与革新显得尤为关键。本文将基于TRIZ理论&#xff0c;探讨锂电池生产工艺的优化路径&#xff0c;以期提升能源产业的效率与环保性。 TRIZ&#xff0c;即发明问题解决理论&#xff0…

爆爽,英语小白怒刷 50 课!像玩游戏一样学习英语~

### 重点!!!(先看这) 1. 清楚自己学英语的`目的`, 先搞清楚目标,再行动2. 自身现在最需要的东西:`词汇量`?`口语`?还是`阅读能力`?3. 找对应的书籍,学习资料4. 往`兴趣靠拢`:网上有大量的推荐美剧学习、小说学习,不要被他们迷了眼,适合他们的不一定适合你,找到适合…

【数据结构】 二叉树的顺序结构——堆的实现

普通的二叉树是不适合用数组来存储的&#xff0c;因为可能会存在大量的空间浪费。而完全二叉树更适合使用顺序结构存储。现实中我们通常把堆(一种二叉树)使用顺序结构的数组来存储 。 一、堆的概念及结构 父节点比孩子结点大 是大堆 父节点比孩子结点小 是小堆 堆的性质 堆中某…

如何在ArcGIS Pro中添加无标注的底图

在ArcGIS 3.0中,新建一个地图会自带两个图层,分别是 World Topographic Map 和 World _Hillshade,也就是世界地形图和世界山体阴影,这套底图的颜色和符号的使用都非常赏心悦目。 但是我们在制图时,有时候想利用这个底图,却不想使用地图中的标注。而这个标注是没办法通过简…

Google搜索广告怎么开户?谷歌广告开户投放引流技巧、账户搭建、谷歌ads广告推广投放策略 #搜索引擎 #谷歌广告#互联网营销

Google搜索广告开户步骤&#xff1a; 选择代理商&#xff1a;首先&#xff0c;您需要选择一个经验丰富、信誉良好的Google广告代理商。可以选择上海上弦来广告开户和代运营。 初步咨询&#xff1a;与代理商进行初步沟通&#xff0c;了解他们的服务内容、成功案例、收费标准等。…

PyQt 入门

Qt hello - 专注于Qt的技术分享平台 Python体系下GUI框架也多了去了&#xff0c;PyQt算是比较受欢迎的一个。如果对Qt框架熟悉&#xff0c;那掌握这套框架是很简单的。 一&#xff0c;安装 1.PyQt5 pip3 install PyQt5 2.Designer UI工具 pip3 install PyQt5-tools 3.UI…

JL-杰理芯片-认识TA的SDK的第一天

编写不同SDK的软件用宏定义进行包含,方便知道它的效果,也方便删除不用,更容易知道是什么模块的 原理图决定软件板级根据板子名称决定板子的配置 板级文件的选择不注释哪个就使用哪个

SOLIDWORKS参数化设计的作用

SOLIDWORKS参数化设计软件,主要解决加工制造型企业普遍存在的系列化产品设计周期长和出图效率低。重复工作多、人员工作强度大的问题。传统的设计模式下大规模定制型产品结构设计周期长,问题多,以及大量重复性工作让工程师疲于应对,这些严重阻碍了公司订单承接能力和技术创…

使用Docker安装MySQL5.7.36

拉取镜像并查看 docker pull mysql:5.7.36拉取成功后查看&#xff08;非必须&#xff09; docker images创建并设置宿主机 mysql 配置文件目录和数据文件目录 创建相关文件夹将容器中的mysql数据保存到本地&#xff0c;这样即使容器被删除&#xff0c;数据也不会丢失。 mkd…

【IDEA神器插件推荐】国产崛起!地表最强API测试插件

1.前言 在开发SpringBoot网站应用的过程中,前端后端会对接口进行请求测试。相信很多小伙伴都用过Postman,但是在IDE和Postman切换难免令人心烦。所以今天给大家带来一款IDEA内置的接口测试插件。 2.简介 根据插件的简介:Restful Fast Request 是一个类似于 Postman 的 Intel…

京东手势验证码-YOLO姿态识别+Bézier curve轨迹拟合

这次给老铁们带来的是京东手势验证码的识别。 目标网站&#xff1a;https://plogin.m.jd.com/mreg/index 验证码如下图: 当第一眼看到这个验证码的时候&#xff0c;就头大了&#xff0c;这玩意咋识别&#xff1f;&#xff1f;&#xff1f; 静下心来细想后的一个方案&#xf…

django显示网页步骤

显示网页步骤 小白的django学习笔记 2024/5/6 8:30 文章目录 显示网页步骤创建输入框&#xff08;文本、单选、多选&#xff09;效果如何在django中显示网页写函数配置地址运行&#xff0c;要选择这个工程名的&#xff0c;使用socket复制ip&#xff0c;后面在加上名字,成功&…

linux安装python3.8

一、卸载损坏的yum并安装 本来想直接下载安装python3.8,结果过程中损坏了yum,导致yum无法使用。 参考了【故障】6、yum不可用_yum命令无法使用-CSDN博客 1、删除python #删除现有的python rpm -qa|grep python|sudo xargs rpm -ev --allmatches --nodeps #强制删除已安装程…

2024好用的网页客服系统推荐?

2024好用的网页客服系统推荐&#xff1f;Zoho SalesIQ是一款强大的实时聊天工具&#xff0c;专为网站和在线商店设计。它提供了一套全面的功能&#xff0c;帮助企业实时解决客户问题&#xff0c;提高转化率和客户满意度。 实时监控 Zoho SalesIQ能够实时监控网站的访问者活动&…

Spring添加注解读取和存储对象

5大注解 Controller 控制器 Service 服务 Repository 仓库 Componet 组件 Configuration 配置 五大类注解的使用 //他们都是放在同一个目录下&#xff0c;不同的类中 只不过这里粘贴到一起//控制器 Controller public class UserController {public void SayHello(){System.ou…

智启蒸汽时代:数字孪生锅炉的革新之旅

数字孪生,就是通过数字技术为物理世界中的物体创建一个数字化的“双胞胎”。对于蒸汽工厂锅炉来说,数字孪生系统能够实时模拟锅炉的运行状态,预测可能出现的问题,并通过数据分析和智能决策为工人提供精准的操作建议。在飞速发展的工业4.0时代,数字孪生技术已经深入到我们生…

python数据分析——数据预处理

数据预处理 前言一、查看数据数据表的基本信息查看info&#xff08;&#xff09;示例 查看数据表的大小shape&#xff08;&#xff09;示例 数据格式的查看type()dtype&#xff08;&#xff09;dtypes&#xff08;&#xff09;示例一示例二 查看具体的数据分布describe()示例 二…

35岁自学编程有必要吗

在当今这个快速发展的数字化时代&#xff0c;学习编程已经不再局限于特定年龄层。对于35岁的人来说&#xff0c;自学编程不仅有必要&#xff0c;而且可能开启职业生涯的全新篇章。首先&#xff0c;编程技能是通往高科技行业的一把钥匙&#xff0c;能够为个人职业发展拓宽道路&a…