端口转发Linux的iptables

我目前的networking设置由一个物理nic eth1接收来自调制解调器的公共ip。 接下来,我使用IP范围192.168.122.0 - 200虚拟networking上运行的kvm / qemu虚拟机是由kvm创build的默认NATnetworking。 我的问题是,我有一个运行我的OpenVPN服务器的虚拟服务器,需要在局域网外访问。 VPN服务器的静态IP为192.168.122.4 。 我想端口端口943,1194到我的VPN服务器,我将如何做到这一点在Linux的iptables

注意:下面的规则被kvm添加到iptables:我也有其他的规则来过滤,但是我不认为这些规则是必须显示的。

 :OUTPUT ACCEPT [0:0] :PREROUTING ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] :INPUT ACCEPT [0:0] -A POSTROUTING -s 192.168.122.0/24 ! -d 192.168.122.0/24 -j MASQUERADE -A POSTROUTING -p udp -s 192.168.122.0/24 ! -d 192.168.122.0/24 -j MASQUERADE --to-ports 1024-65535 -A POSTROUTING -p tcp -s 192.168.122.0/24 ! -d 192.168.122.0/24 -j MASQUERADE --to-ports 1024-65535 -A POSTROUTING -s 192.168.122.0/24 -d 255.255.255.255/32 -j RETURN -A POSTROUTING -s 192.168.122.0/24 -d 224.0.0.0/24 -j RETURN -A POSTROUTING -s 192.168.122.93/32 -j SNAT --to-source (my public ip) 

下面应该做的伎俩,它会采取所有的stream量在你的公共接口进来的VPN端口和改变目的地到你的VPN机器。

 iptables -t nat -A PREROUTING -i eth1 -p tcp -m multiport --dports 943, 1194 -j DNAT --to 192.168.122.4 iptables -t nat -A PREROUTING -i eth1 -p tcp -m multiport --dports 943, 1194 -j DNAT --to 192.168.122.4 

这就像你没有任何规则来过滤你的转发。 如果你做下面的行将允许从外部到你的VPN机器的所有stream量。

 iptables -A FORWARD -i eth1 -d 192.168.122.4 -j ACCEPT