将一台机器变成 NAT 路由器

将一台机器变成 NAT 路由器

我想创建以下网络:

互联网 ---- 主机 ---- 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 的 ifconfigVM2 的 ifconfigVM1 的 route -nVM2 的 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 的互联网请求现在正在运行...:)

相关内容