端口转发 linux iptables

端口转发 linux iptables

我当前的网络设置包括一个物理网卡 eth1,它从调制解调器接收我的公共 IP。接下来,我让 kvm/qemu 虚拟机在虚拟网络上运行,使用的 IP 范围192.168.122.0 - 200是 kvm 创建的默认 NAT 网络。我的问题是,我有一个运行 OpenVPN 服务器的虚拟服务器,需要在 LAN 之外访问。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)    

答案1

下面的操作应该可以解决问题,它将把您公共接口上进入 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 机器。

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

相关内容