[英]Iptables forward over VPN
我正在连接Windows中的VPN,以使用静态IP访问远程计算机(Linux)。 我可以从这台远程计算机访问不同的机器(数据库,svn等)。
我试图将我的远程计算机设置为可以从Windows计算机访问数据库,svn服务器等,因为在远程连接上工作非常缓慢。
所以我在/etc/rc.local
尝试了下/etc/rc.local
行,但是它不起作用:
/sbin/iptables -P FORWARD ACCEPT
/sbin/iptables --table nat -A POSTROUTING -o eth0 -j MASQUERADE
/sbin/iptables -t nat -A PREROUTING -i eth0 -p tcp -d B1.B2.B3.B4 --dport 89 -j DNAT --to R1.R2.R3.R4:89
/sbin/iptables -A FORWARD -p tcp -d R1.R2.R3.R4 --dport 89 -j ACCEPT
其中B1.B2.B3.B4
是我的远程数据库IP, 89
是我们用来访问数据库的端口,而R1.R2.R3.R4
是我的远程计算机IP。
这种配置有什么问题?
谢谢。
确保已启用ip_forward
:
echo 1 > /proc/sys/net/ipv4/ip_forward
另外,在连接时,您需要确保VPN将B1.B2.B3.B4的路由推送到Windows计算机。 如果不是,则必须自己添加路线。
我认为MASQUERADE规则应该足够,但应这样写:
iptables -t nat -A POSTROUTING -s WINDOWS_BOX_VPN_IP -j MASQUERADE
但是,如果您不想弄乱iptables,则可以使用SSH设置到远程服务的隧道(例如(您需要一些可以创建隧道的Windows SSH客户端,我在此举例说明如何从linux盒):
ssh user@R1.R2.R3.R4 -L 8989:B1.B2.B3.B4:89
这将在localhost:8989
上创建一个隧道,该隧道会将连接转发到B1.B2.B3.B4:89
(查找“本地端口转发”, http B1.B2.B3.B4:89
-tunnelling-解释/ )
最后,我发现Rinetd允许通过简单的配置进行TCP重定向。
根据我的问题,我必须在/etc/rinetd.conf
添加的配置为:
R1.R2.R3.R4 89 B1.B2.B3.B4 89
然后我运行Rinetd:
/usr/sbin/rinetd
就这样。
如果要在每次重新启动计算机时自动运行它,则可以在/etc/rc.local
文件中之前添加命令。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.