我正在运行 proxmox 服务器,并通过 IPTABLES 将端口重定向到内部虚拟机。
我按照这里的说明进行操作http://www.ameir.net/blog/archives/55-Running-Proxmox-behind-a-single-IP-address.html
-A PREROUTING -i vmbr0 -p tcp -m tcp --dport 2222 -j DNAT --to-destination 192.168.4.100:22
-A PREROUTING -i vmbr0 -p tcp -m tcp --dport 2223 -j DNAT --to-destination 192.168.4.101:22
-A PREROUTING -i vmbr0 -p tcp -m tcp --dport 2224 -j DNAT --to-destination 192.168.4.104:22
-A POSTROUTING -s 192.168.4.0/24 -o vmbr0 -j MASQUERADE
我尝试在主机 IP 上设置端口 80 以重定向到虚拟机,这导致我的所有虚拟机端口 80 也被重定向。
有没有办法可以预先路由并让其忽略任何 192.xxx 地址?
答案1
如果您只希望将到主机 IP 的流量通过 NAT 传输到其他地方,则可以使用-d
iptables 规则中的选项指定主机 IP:
-A PREROUTING -i vmbr0 -p tcp -m tcp -d $HOSTIP --dport 2222 -j DNAT --to-destination 192.168.4.100:22
答案2
目标ACCEPT
相当于IGNORE
NAT 规则中的。因此,要免除192.168.0.0/16
(我假设您不是真的要免除192.0.0.0/8
)任何 NAT 的地址,您可以说
iptables -t nat -I PREROUTING 1 -s 192.168.0.0/16 -j ACCEPT
请注意,这将使这些地址免于全部链中遵循的 NAT 规则PREROUTING
。