无法从 Linux 网络命名空间 ping 自己的 IP

无法从 Linux 网络命名空间 ping 自己的 IP
 ┌─────────┐     ┌─────────┐
 │   nsa   │     │   nsb   │
 │     ┌───┤     ├───┐     │
 │     │ifa├─────┤ifb│     │
 │     └───┤     ├───┘     │
 │         │     │         │
 └─────────┘     └─────────┘
 ifa = 192.168.43.71/24
 ifb = 192.168.43.72/24

安装脚本如下:

  • 连接两个命名空间(nsaand nsb
  • 通过对等接口(ifaifb
  • 在同一 IP 网络内 ( 192.168.43.0/24)。

问题:

  • ifb如果我可以从nsaifa进行交叉 ping nsb
```bash
# succeeds:
sudo ip netns exec nsa ping 192.168.43.72    # nsa -> ifb
sudo ip netns exec nsb ping 192.168.43.71    # nsb -> ifa
```
  • ifa为什么我无法从nsaifb直接ping nsb
```bash
# fails (timeout):
sudo ip netns exec nsa ping 192.168.43.71    # nsa -> ifa
sudo ip netns exec nsb ping 192.168.43.72    # nsb -> ifb
```

可复制粘贴的安装脚本:

# create namespaces:
sudo ip netns add nsa
sudo ip netns add nsb

# create peer interfaces:
sudo ip link add ifa type veth peer name ifb

# assign peer interfaces to their namespaces:
sudo ip link set ifa netns nsa
sudo ip link set ifb netns nsb

# assign addresses:
sudo ip -n nsa addr add 192.168.43.71/24 dev ifa
sudo ip -n nsb addr add 192.168.43.72/24 dev ifb

# bring up:
sudo ip -n nsa link set ifa up
sudo ip -n nsb link set ifb up

详细信息:故障排除信息

nsa

sudo ip -n nsa addr
1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
38: ifa@if37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 9a:45:ed:0d:00:d7 brd ff:ff:ff:ff:ff:ff link-netns nsb
    inet 192.168.43.71/24 scope global ifa
       valid_lft forever preferred_lft forever
    inet6 fe80::9845:edff:fe0d:d7/64 scope link 
       valid_lft forever preferred_lft forever

sudo ip -n nsa route
192.168.43.0/24 dev ifa proto kernel scope link src 192.168.43.71 

nsb

sudo ip -n nsb addr
1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
37: ifb@if38: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether fe:ca:5b:72:e0:4c brd ff:ff:ff:ff:ff:ff link-netns nsa
    inet 192.168.43.72/24 scope global ifb
       valid_lft forever preferred_lft forever
    inet6 fe80::fcca:5bff:fe72:e04c/64 scope link 
       valid_lft forever preferred_lft forever

sudo ip -n nsb route
192.168.43.0/24 dev ifb proto kernel scope link src 192.168.43.72 

答案1

使固定:

sudo ip -n nsa link set lo up
sudo ip -n nsb link set lo up

请注意,ping上述问题中的 -s 是不是定向至环回。

尽管如此,如果环回接口关闭,则在其他接口上对自身进行 ping 操作也将不起作用!

环回接口lo是使用网络命名空间自动创建的,但默认情况下处于关闭状态。将任何其他本地 IP 地址固定到其他网络接口上需要处于开启状态这一点并不明显lo(即使没有分配任何环回 IP 地址,例如127.0.0.1/8)。

如果有任何官方文档或规范说明为什么会出现这种情况,请告诉我。

相关内容