在 Linux 网络命名空间上使用公共 IPv4

在 Linux 网络命名空间上使用公共 IPv4

我正在使用 VPS 并获得了额外的 IP 地址。我正在尝试将第二个 IP 地址分配给单独的网络命名空间,但失败了。

假设我的主 IP 和网络掩码是x.x.133.39/23,分配的辅助 IP 是x.x.137.159,默认网关是x.x.132.1

我通常可以使用 : 将辅助 IP 地址分配给默认命名空间,ip addr add x.x.137.145/32 dev enp1s0 label enp1s0:1并使用新 IP ssh 进入我的服务器以确认其正常工作。

现在,为了将 IP 移动到网络命名空间,我运行以下命令。 (无需将辅助IP分配给默认命名空间)

ip netns add ns0
ip netns exec ns0 ip link set lo up
ip link add macvlan0 link enp1s0 type macvlan mode bridge
ip link set macvlan0 netns ns0
ip netns exec ns0 ip link set macvlan0 up
ip netns exec ns0 ip addr add x.x.137.159/32 dev macvlan0

执行此操作后,我无法从命名空间内 ping 到我的主 IP 或默认网关或互联网上的任何位置。我究竟做错了什么?

而且我主要只需要访问互联网。

主机配置:

❯ ip -br link 
lo               UNKNOWN        00:00:00:00:00:00 <LOOPBACK,UP,LOWER_UP>
enp1s0           UP             56:00:xx:xx:xx:xx <BROADCAST,MULTICAST,ALLMULTI,UP,LOWER_UP>

❯ ip -4 -br address
lo               UNKNOWN        127.0.0.1/8     
enp1s0           UP             xx.xx.133.39/23

❯ ip -4 route
default via xx.xx.132.1 dev enp1s0 proto dhcp src xx.xx.133.39 metric 102
xx.xx.132.0/23 dev enp1s0 proto kernel scope link src xx.xx.133.39 metric 102
169.254.169.254 via xx.xx.132.1 dev enp1s0 proto dhcp src xx.xx.133.39 metric 102

❯ ip -4 neigh
xx.xx.132.1 dev enp1s0 lladdr 2a:e3:xx:xx:xx:xx REACHABLE
10.101.100.31 dev enp1s0 lladdr 2a:e3:xx:xx:xx:xx STALE

/etc/network/interfacesVultr 给出的用于配置两个 IP 的

auto lo
iface lo inet loopback

auto enp1s0
iface enp1s0 inet static
    address xx.xx.133.39
    netmask 255.255.254.0
    gateway xx.xx.132.1
    dns-nameservers 108.61.10.10
    post-up ip route add 169.254.0.0/16 dev enp1s0

auto enp1s0:1
iface enp1s0:1 inet static
    address xx.xx.137.159
    netmask 255.255.255.255

相关内容