我在使用 VPN 连接基础设施时遇到了麻烦。我对正在使用的 VM 没有太多权限,因此很难给您准确答案,所以这个主题应该是理论上的。
有 3 个接口:
- br-xxxxxxxxxxxx :Docker 用作所有容器之间的 NAT 网络。此网络应通过 VPN 暴露给外部
- docker0 :似乎没有被使用
- eth0 :物理接口
以下是 ifconfig 配置:
br-dd5a54c6d409: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.0.1 netmask 255.255.255.0 broadcast 0.0.0.0
inet6 fe80::42:2fff:fec9:ba04 prefixlen 64 scopeid 0x20<link>
ether 02:42:2f:c9:ba:04 txqueuelen 0 (Ethernet)
RX packets 5019 bytes 549801 (536.9 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 5791 bytes 676602 (660.7 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 172.17.0.1 netmask 255.255.0.0 broadcast 0.0.0.0
ether 02:42:b4:34:2c:04 txqueuelen 0 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.160.10 netmask 255.255.254.0 broadcast 192.168.161.255
inet6 fe80::215:5dff:fe38:10b prefixlen 64 scopeid 0x20<link>
ether 00:15:5d:38:01:0b txqueuelen 1000 (Ethernet)
RX packets 7819 bytes 1062488 (1.0 MiB)
RX errors 0 dropped 4345 overruns 0 frame 0
TX packets 770 bytes 48554 (47.4 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
问题是,当我在连接 eth0 的交换机中连接一个设备时,我给出了 192.168.0.0/24 中的地址(例如 192.16.0.1),该设备发送一个 ARP 请求以防止重复 IP(正常行为),但是虚拟机发出一个 ARP 回复,告诉我该 IP 当前已被使用(从突出显示的数据包中检查)。
顺便说一句,这是真的,因为其中一个容器使用了这个 IP 地址,但由于我的设备没有与 VPN 配对,VM 不应该响应 ARP 请求,对吗?只有通过 VPN 连接的设备才会接收 ARP 数据包?
我以为代理 arp 已经启用,所以行为应该是正常的,但似乎不是
[support@TPE-HOST ~]$ cat /proc/sys/net/ipv4/conf/br-dd5a54c6d409/proxy_arp
0
[support@TPE-HOST ~]$ cat /proc/sys/net/ipv4/conf/eth0/proxy_arp
0
为了防止这种情况,我建议在网络中添加 VLAN,这将完全分离接口,但客户不希望在他的网络中采用这种解决方案。
所以现在我完全迷茫了,是否存在一种可能导致这个问题发生的机制?