我想创建以下网络:
互联网 ---- 主机 ---- VM1 ---(本地网络)-- VM2
VM1 充当 NAT 路由器。VM1 和 VM2 通过 VirtualBox 运行 Ubuntu。
为了实现此目的,我为 VM1 (192.168.46.101) 和 VM2 (192.168.46.102) 创建了一个本地网络 192.168.46.x。我还将 /proc/sys/net/ipv4/ip_forward 中的值设置为 1(对于 VM1)。除此之外,我还将 VM1 连接到 NAT。
通过此配置,我可以从 VM2 ping 通 VM1 以及反之亦然,并且我还可以从 VM1 ping 通 google.com。
我认为为了能够从 VM2 ping google.com,我只需将以下条目添加到 VM2 的路由表中:
Dest Gateway Netmask Iface
0.0.0.0 192.168.46.101 255.255.255.0 enp0s3
(其中 enp0s3 是 VM2 的唯一网络接口)。
但是,VM2 在 ping 时仍然会收到“未知主机 google.com”的信息。
你能帮我找出原因吗?
VM1 的 ifconfig, VM2 的 ifconfig, VM1 的 route -n, VM2 的 route -n
答案1
我实际上缺少一些 iptables 条目,添加如下:
# iptables -t nat -A POSTROUTING -o enp0s3 -j MASQUERADE
# iptables -A FORWARD -i enp0s8 -o enp0s3 -m state --state RELATED,ESTABLISHED -j ACCEPT
# iptables -A FORWARD -i enp0s8 -o enp0s3 -j ACCEPT
其中 enp0s8 为与外界连接的接口,enp0s3 为与内部网络连接的接口。
来自 VM2 的互联网请求现在正在运行...:)