┌─────────┐ ┌─────────┐
│ nsa │ │ nsb │
│ ┌───┤ ├───┐ │
│ │ifa├─────┤ifb│ │
│ └───┤ ├───┘ │
│ │ │ │
└─────────┘ └─────────┘
ifa = 192.168.43.71/24
ifb = 192.168.43.72/24
安装脚本如下:
- 连接两个命名空间(
nsa
andnsb
) - 通过对等接口(
ifa
和ifb
) - 在同一 IP 网络内 (
192.168.43.0/24
)。
问题:
ifb
如果我可以从nsa
和ifa
进行交叉 pingnsb
:
```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
为什么我无法从nsa
和ifb
直接pingnsb
?
```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
)。
如果有任何官方文档或规范说明为什么会出现这种情况,请告诉我。