脚注:

脚注:

我正在设置 OpenVPN 服务器。我希望它将所有传入连接(端口 22(ssh)和 1194(VPN 服务器本身)除外)重定向到连接到 VPN 的客户端。

VPN 服务器位于 vpn.example.com 客户端位于 10.8.0.2,VPN 网关位于 10.8.0.1

我该如何设置 DMZ 来执行此操作?

脚注:

我在这里找到了如何通过 VPN 重定向单个端口:使用 OpenVPN 进行端口转发

要点是运行iptables -t nat -A PREROUTING -i eth0 -d VPN_IP_HERE -p tcp --dport PORT_TO_REDIRECT -j DNAT --to-destination 10.8.0.2

但是,这只能一次对一个端口起作用,我希望有这样的解决方案--dport *

答案1

如果你关心只将 tcp 重定向到你的客户端,你可以使用:

iptables -t nat -A PREROUTING -i eth0 -d VPN_IP_HERE -p tcp --dport ! 22 -j DNAT --to-destination 10.8.0.2

这将重定向所有 TCP 数据包除了将它们重定向到端口 22 (sshd)。只要您在 udp 上运行 OpenVPN(通常情况),这应该有效。如果您还想重定向 udp,请添加:

iptables -t nat -A PREROUTING -i eth0 -d VPN_IP_HERE -p udp --dport ! 1194 -j DNAT --to-destination 10.8.0.2

然后还有 icmp:您可能也希望重定向其中的至少一部分。

与其指定要重定向的流量(在您的情况下几乎是全部流量),不如反转问题更简单:

iptables -t nat -A PREROUTING -i eth0 -d VPN_IP_HERE -p udp --dport 1194 -j RETURN
iptables -t nat -A PREROUTING -i eth0 -d VPN_IP_HERE -p tcp --dport 22 -j RETURN
iptables -t nat -A PREROUTING -i eth0 -d VPN_IP_HERE -j DNAT --to-destination 10.8.0.2

停止处理当前链的方法-j RETURN。上面的前 2 条规则定义了“短路”重定向规则的情况。任何不符合前 2 条规则的内容都会被重定向。

一个方便的 iptables 参考:https://www.frozentux.net/iptables-tutorial/iptables-tutorial.html#RETURNTARGET

答案2

这可能已经被回答了,但你可以在 /etc/network/interfaces 中使用它

 post-up iptables -t nat -A POSTROUTING -s '10.0.0.0/8' -o eth0 -j MASQUERADE
 post-down iptables -t nat -D POSTROUTING -s '10.0.0.0/8' -o eth0 -j MASQUERADE

此规则为所有端口设置了完整的 nat,可以通过将单个 ip 设置为 10.8.0.3/32 而不是 10.0.0.0/8 来限制,以便对 eth0 上的任何端口进行 nat,这些端口必须由您的接口替换

此外,要转发特定的端口范围,您可以使用

--dport 20000:22000

在此示例中,端口 20 至 22k 将被转发

相关内容