使用 iptables 在本地网桥上为特定范围设置 NAT

使用 iptables 在本地网桥上为特定范围设置 NAT

我正在尝试为特定范围的 IP 地址设置 NAT。我运行 QEMU/KVM 虚拟机管理程序,该管理程序具有 IP 范围为 10.0.0.0/8 的本地网桥。在该网桥上,我为不同的机器类别设置了多个 IP 范围。其中几个范围用于通过 1 对 1 NAT 为虚拟机提供外部 IP 地址。这非常有效。

现在,我想为通过常规 NAT(例如消费者路由器)访问互联网的机器设置一个 IP 地址范围。IP 范围是 10.0.0.5-10.0.0.150。在网上搜索后,我尝试添加一条规则,如下所示:

iptables -t nat -m iprange -A PREROUTING -i eth0 --dst-range 10.0.0.5-10.0.0.150 -j MASQUERADE

iptables未设置为阻止任何流量。但 NAT 仍不起作用。我的 VM 可以 ping 虚拟机管理程序,但无法 ping 互联网上的任何主机。已启用 IP 数据包转发。

有任何想法吗?

答案1

使用不同的搜索词,我发现serverfault 上的这个答案

我的问题只是我使用了错误的链来应用规则。正确的命令是:

iptables -t nat -miprange -A POSTROUTING -o eth0 --src-range 10.0.0.5-10.0.0.150 -j MASQUERADE

相关内容