我正在设置一个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 *这样的解决方案。
发布于 2019-09-29 15:12:25
无论如何,这可能已经得到了回答,但您可以在/etc/网络/接口中使用此方法。
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,设置为10.8.0.3/32,而不是将单个ip设置为eth0上必须由接口替换的任何端口的10.0.0.0/8。
此外,要转发一个特定的端口,您可以使用
--dport 20000:22000在本例中,将使用从20到22k的端口格式。
发布于 2019-09-29 16:26:21
如果您只关心将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条规则不匹配的内容都会被重定向。
一个方便的iptable参考资料:https://www.frozentux.net/iptables-tutorial/iptables-tutorial.html#RETURNTARGET
https://serverfault.com/questions/986081
复制相似问题