猫言猫语

严以律己·宽以待人·自强不息·知行合一

vSphere 环境 CentOS 7 Proxy Arp 实践

| vSphere 环境 CentOS 7 Proxy Arp 实践已关闭评论

VM Public 有 2 块网卡 ens32 与 ens33,分别接着内网与外网,ens33 配置的 IP 地址是 192.168.254.216/24
VM Private 只有 1 块网卡 ens32 只与内网连接,ens32 配置的 IP 地址是 192.168.254.218/24

形状

我们的目标是想通过在 VM Public 上启用 Proxy Arp 使 VM Private 可以直接与 ens33 那头的 192.168.254.254 直接通信,达到类似 VM Public 内的 ens32 与 ens33 桥接的效果

虚拟机启动之后,我们在 VM Public 直接 ping VM Private 的地址,由于 VM Public ens33 与 VM Private ens32 并不在同一个广播域内,所以是不通的:

# ping 192.168.254.218
PING 192.168.254.218 (192.168.254.218) 56(84) bytes of data.
From 192.168.254.216 icmp_seq=1 Destination Host Unreachable
From 192.168.254.216 icmp_seq=2 Destination Host Unreachable

此时我们在 VM Public 上为 192.168.254.218 这个地址加一条路由,指定这个地址是在 ens32 那侧的网络内,然后再看看 ping 的效果

# ip route add 192.168.254.218 dev ens32
# ping 192.168.254.218
PING 192.168.254.218 (192.168.254.218) 56(84) bytes of data.
64 bytes from 192.168.254.218: icmp_seq=1 ttl=64 time=0.689 ms
64 bytes from 192.168.254.218: icmp_seq=2 ttl=64 time=0.505 ms

也就是说,加完这条路由之后,VM Public 已经可以与 VM Private 之间互通了,但是现在在 VM Public 外的机器 Gateway 想访问 Private 还是无法访问到的

# ping 192.168.254.218
PING 192.168.254.218 (192.168.254.218) 56(84) bytes of data.
From 192.168.254.216 icmp_seq=1 Destination Host Unreachable
From 192.168.254.216 icmp_seq=2 Destination Host Unreachable

此时我们就需要打开 VM Public 机器上的 ip forward 与 proxy arp

echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/conf/ens32/proxy_arp
echo 1 > /proc/sys/net/ipv4/conf/ens33/proxy_arp

然后,在 Gateway 上直接 ping 192.168.254.218 就直通了!

# ping 192.168.254.218
PING 192.168.254.218 (192.168.254.218) 56(84) bytes of data.
64 bytes from 192.168.254.218: icmp_seq=1 ttl=64 time=0.689 ms
64 bytes from 192.168.254.218: icmp_seq=2 ttl=64 time=0.505 ms

如果想把这些配置持久化,就需要把这些配置保存到配置文件中

systemctl disable NetworkManager
/etc/sysconfig/network-scripts/route-ens32
192.168.254.218 dev ens32
/etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.conf.default.proxy_arp = 1

评论已关闭。