我正在尝试将到达主机的数据包转发到虚拟机。 目前的目标是将xxx.xxx.xxx.xxx:3022转发给vm 192.168.10.2:22 。
我尝试通过命令行添加以下规则,但没有运气:
iptables -t nat -A PREROUTING -d xxx.xxx.xxx.xxx -p tcp -i routed0 --dport 3022 -j DNAT --to 192.168.10.2:22 iptables -A FORWARD -p tcp -i routed0 -d 192.168.10.2 --dport 3022 -j ACCEPT
我想这可能是因为以前的规则。 这是iptables-save的输出,包括Xen生成的所有规则:
*nat :PREROUTING ACCEPT [1299:340167] :POSTROUTING ACCEPT [703:144619] :OUTPUT ACCEPT [5:390] -A POSTROUTING -s 192.168.10.0/24 ! -d 192.168.10.0/24 -p tcp -j MASQUERADE --to-ports 1024-65535 -A POSTROUTING -s 192.168.10.0/24 ! -d 192.168.10.0/24 -p udp -j MASQUERADE --to-ports 1024-65535 -A POSTROUTING -s 192.168.10.0/24 ! -d 192.168.10.0/24 -j MASQUERADE -A POSTROUTING -s 192.168.122.0/24 ! -d 192.168.122.0/24 -p tcp -j MASQUERADE --to-ports 1024-65535 -A POSTROUTING -s 192.168.122.0/24 ! -d 192.168.122.0/24 -p udp -j MASQUERADE --to-ports 1024-65535 -A POSTROUTING -s 192.168.122.0/24 ! -d 192.168.122.0/24 -j MASQUERADE -A POSTROUTING -s 192.168.30.0/27 ! -d 192.168.30.0/27 -p tcp -j MASQUERADE --to-ports 1024-65535 -A POSTROUTING -s 192.168.30.0/27 ! -d 192.168.30.0/27 -p udp -j MASQUERADE --to-ports 1024-65535 -A POSTROUTING -s 192.168.30.0/27 ! -d 192.168.30.0/27 -j MASQUERADE COMMIT *filter :INPUT ACCEPT [2554:538140] :FORWARD ACCEPT [105104:11434430] :OUTPUT ACCEPT [900:115541] -A INPUT -i nat-internal -p udp -m udp --dport 53 -j ACCEPT -A INPUT -i nat-internal -p tcp -m tcp --dport 53 -j ACCEPT -A INPUT -i nat-internal -p udp -m udp --dport 67 -j ACCEPT -A INPUT -i nat-internal -p tcp -m tcp --dport 67 -j ACCEPT -A INPUT -i virbr0 -p udp -m udp --dport 53 -j ACCEPT -A INPUT -i virbr0 -p tcp -m tcp --dport 53 -j ACCEPT -A INPUT -i virbr0 -p udp -m udp --dport 67 -j ACCEPT -A INPUT -i virbr0 -p tcp -m tcp --dport 67 -j ACCEPT -A INPUT -i nat-t1 -p udp -m udp --dport 53 -j ACCEPT -A INPUT -i nat-t1 -p tcp -m tcp --dport 53 -j ACCEPT -A INPUT -i nat-t1 -p udp -m udp --dport 67 -j ACCEPT -A INPUT -i nat-t1 -p tcp -m tcp --dport 67 -j ACCEPT -A INPUT -i routed175 -p udp -m udp --dport 53 -j ACCEPT -A INPUT -i routed175 -p tcp -m tcp --dport 53 -j ACCEPT -A INPUT -i routed175 -p udp -m udp --dport 67 -j ACCEPT -A INPUT -i routed175 -p tcp -m tcp --dport 67 -j ACCEPT -A FORWARD -m state --state RELATED,ESTABLISHED -m physdev --physdev-out vif59.0 -j ACCEPT -A FORWARD -m physdev --physdev-in vif59.0 -j ACCEPT -A FORWARD -d 192.168.10.0/24 -o nat-internal -m state --state RELATED,ESTABLISHED -j ACCEPT -A FORWARD -s 192.168.10.0/24 -i nat-internal -j ACCEPT -A FORWARD -i nat-internal -o nat-internal -j ACCEPT -A FORWARD -o nat-internal -j REJECT --reject-with icmp-port-unreachable -A FORWARD -i nat-internal -j REJECT --reject-with icmp-port-unreachable -A FORWARD -m state --state RELATED,ESTABLISHED -m physdev --physdev-out vif57.0 -j ACCEPT -A FORWARD -m physdev --physdev-in vif57.0 -j ACCEPT -A FORWARD -m state --state RELATED,ESTABLISHED -m physdev --physdev-out vif37.0 -j ACCEPT -A FORWARD -m physdev --physdev-in vif37.0 -j ACCEPT -A FORWARD -s 10.10.0.0/24 -d 192.168.30.0/27 -i eth0 -m policy --dir in --pol ipsec --reqid 16385 --proto esp -j ACCEPT -A FORWARD -s 192.168.30.0/27 -d 10.10.0.0/24 -o eth0 -m policy --dir out --pol ipsec --reqid 16385 --proto esp -j ACCEPT -A FORWARD -m state --state RELATED,ESTABLISHED -m physdev --physdev-out vif36.0 -j ACCEPT -A FORWARD -m physdev --physdev-in vif36.0 -j ACCEPT -A FORWARD -m state --state RELATED,ESTABLISHED -m physdev --physdev-out vif31.0 -j ACCEPT -A FORWARD -m physdev --physdev-in vif31.0 -j ACCEPT -A FORWARD -d 192.168.122.0/24 -o virbr0 -m state --state RELATED,ESTABLISHED -j ACCEPT -A FORWARD -s 192.168.122.0/24 -i virbr0 -j ACCEPT -A FORWARD -i virbr0 -o virbr0 -j ACCEPT -A FORWARD -o virbr0 -j REJECT --reject-with icmp-port-unreachable -A FORWARD -i virbr0 -j REJECT --reject-with icmp-port-unreachable -A FORWARD -d 192.168.30.0/27 -o nat-t1 -m state --state RELATED,ESTABLISHED -j ACCEPT -A FORWARD -s 192.168.30.0/27 -i nat-t1 -j ACCEPT -A FORWARD -i nat-t1 -o nat-t1 -j ACCEPT -A FORWARD -o nat-t1 -j REJECT --reject-with icmp-port-unreachable -A FORWARD -i nat-t1 -j REJECT --reject-with icmp-port-unreachable -A FORWARD -m state --state RELATED,ESTABLISHED -m physdev --physdev-out vif18.0 -j ACCEPT -A FORWARD -m physdev --physdev-in vif18.0 -j ACCEPT -A FORWARD -d xxx.xxx.xxx.xxx/32 -i eth0 -o routed175 -j ACCEPT -A FORWARD -s xxx.xxx.xxx.xxx/32 -i routed175 -o eth0 -j ACCEPT -A FORWARD -i routed175 -o routed175 -j ACCEPT -A FORWARD -o routed175 -j REJECT --reject-with icmp-port-unreachable -A FORWARD -i routed175 -j REJECT --reject-with icmp-port-unreachable COMMIT
有人能把我指向正确的方向吗?
你的FORWARD规则看起来很奇怪。 当你的数据包到达FORWARD表时,它应该有192.168.10.2:22的目的地址,但是你testing的是192.168.10.2:3022。
也尝试追加
iptables -t nat -A OUTPUT -d xxx.xxx.xxx.xxx -p tcp -i routed0 --dport 3022 -j DNAT --to 192.168.10.2:22
我觉得这个问题可能与界面有关。 你应该提到的物理接口,而不是桥梁。 例如,我会用eth0replacerouted0
那我用-d xxx.xxx.xxx.xxx有点不舒服 通常我们不需要提及目的IP,因为我们已经知道它是你的公有IP。 如果你不把你的公共IP,它可能无法正常工作。 我会删除它。
iptables -t nat -A PREROUTING -p tcp -i eth0 –dport 3022 -j DNAT – 到192.168.10.2:22