![客户端命名空间](https://linux22.com/image/1066072/%E5%AE%A2%E6%88%B7%E7%AB%AF%E5%91%BD%E5%90%8D%E7%A9%BA%E9%97%B4.png)
我们在 Ubuntu 16 中运行多个服务器,大量使用命名空间。
每个命名空间都会运行一个 openvpn 实例,基本上使每个命名空间成为自己的 VPN 集中器,并将 VLAN 放入其中,以便某些客户端在某些环境中为 BGP 提供点对点连接。我只是好奇人们使用命名空间和 Netplan 的体验如何,因为我在尝试使用配置相当简单的 Netplan 时遇到了很多问题,我们的标准命名空间将配置如下:
客户端命名空间
ip netns 添加客户端
ip netns exec 客户端 ip link set dev lo up
ip netns exec 客户端 ifconfig lo:0 xxxxnetmask 255.255.255.255 up
ip link add v-eth36 类型 veth 对等体名称 v-peer36
ip link set v-peer36 netns 客户端
ip 地址添加 10.200.1.141/30 dev v-eth36
ip link 设置 v-eth36 up
ip netns exec 客户端 ip addr add 10.200.1.142/30 dev v-peer36
ip netns exec 客户端 ip link set v-peer36 up
ip netns exec 客户端 sysctl -w net.ipv4.ip_forward=1
ip netns exec 客户端 openvpn --config /etc/openvpn/openvpn_Client.conf
ip link 添加链接 ens35 名称 vlan643 类型 vlan id 640
ip link set vlan643 netns 客户端
ip netns exec 客户端 ip addr add 172.31.240.221/31 dev vlan643
ip netns exec 客户端 ip link set vlan640 up
ip netns exec 客户端 iptables-restore < /etc/scripts/Metacom/startup/iptables.save.client
通过在 openvpn 的命名空间中监听环回,vlan 将在根 ns 中启动,然后移动到正确的命名空间,因为它们需要与根 ns 中的中继接口相关联。
通常,上述内容将被添加到接口中引用的启动脚本中作为帖子。但我遇到了许多问题,导致 networkd-dispatcher 无法为即将启动的每个接口执行脚本。
我还想知道如何为 netplan 添加额外的环回功能,因为我似乎找不到任何东西,例如可以使用 ifconfig up 来执行 lo:0。
如果 ifconfig 接口超出其配置的接口,netplan 似乎也会有问题。例如,如果我 ifconfig lo:0 192.168.1.1 netmask 255.255.255.255 up 然后运行 netplan apply,它会吐出以下错误
回溯(最近一次调用最后一次):文件“/usr/sbin/netplan”,第 23 行,在 netplan.main() 中文件“/usr/share/netplan/netplan/cli/core.py”,第 50 行,在 main self.run_command() 中文件“/usr/share/netplan/netplan/cli/utils.py”,第 130 行,在 run_command self.func() 中文件“/usr/share/netplan/netplan/cli/commands/apply.py”,第 43 行,在 run self.run_command() 中文件“/usr/share/netplan/netplan/cli/utils.py”,第 130 行,在 run_command self.func() 中文件“/usr/share/netplan/netplan/cli/commands/apply.py”,第 93 行,在 command_apply 中 stderr=subprocess.DEVNULL) 文件“/usr/lib/python3.6/subprocess.py”,行291,在 check_call 中引发 CalledProcessError(retcode,cmd) subprocess.CalledProcessError:命令 '['udevadm'、'test-builtin'、'net_setup_link'、'/sys/class/net/lo:1']' 返回非零退出状态 4。
我认为这是由于 lo:0 不存在于 netplan 中。但这让我担心,如果我设法完善我的启动脚本并使启动时一切正常,那么当我运行 netplan 时,我需要对主要接口的 netplan 进行更改。我将遇到上述错误,而我能够应用更改的唯一方法是通过重新启动。
我很想知道大家对 netplan 和启动脚本以及 netplan 和命名空间和环回的反馈或经验