我正在尝试将公共计算机的端口转发到通过 VPN 连接的另一台计算机。该机器通过此 VPN 连接到互联网。我在 debian 上使用 openvpn 和 iptables。
VPN 按预期工作,但我无法使端口转发工作。我在 stackexchange 上审查了许多其他问题,但没有成功。
VPN 客户端在 VPN 上有静态 IP。公共互联网地址也是静态的。
转发已启用...
$ sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1
客户端上的端口通过 VPN 接口向公共计算机开放,但不会从公共计算机转发。我已经尝试了 iptables 命令的许多变体,例如-d <public ip>
和-i eth0
,但无法弄清楚我做错了什么。
$ iptables -t nat -A PREROUTING -p tcp --dport 14333 -j DNAT --to-destination 10.8.0.10:14333
$ iptables -t nat -A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE
$ iptables -t nat -L -v
Chain PREROUTING (policy ACCEPT 5252 packets, 328K bytes)
pkts bytes target prot opt in out source destination
1471 85380 DNAT tcp -- any any anywhere anywhere tcp dpt:14333 to:10.8.0.10:64333
Chain INPUT (policy ACCEPT 50 packets, 2156 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 450 packets, 29316 bytes)
pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 1998 packets, 122K bytes)
pkts bytes target prot opt in out source destination
4435 272K MASQUERADE all -- any eth0 10.0.0.0/8 anywhere
公共接口是eth0
和 openvpn 是tun0