我正在使用Windows中的VPN连接到使用静态IP的远程计算机(Linux)。从这台远程计算机,我可以访问不同的机器(数据库,svn等)。
我正在尝试将远程计算机设置为从Windows计算机访问数据库,svn服务器等,因为在远程连接上工作非常慢。
所以我尝试了/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。
此配置有什么问题?
感谢。
答案 0 :(得分:1)
确保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://chamibuddhika.wordpress.com/2012/03/21/ssh-tunnelling-explained/)
答案 1 :(得分:0)
最后,我发现Rinetd允许TCP重定向,配置简单。
根据我的问题,我必须在/etc/rinetd.conf
中添加的配置是:
R1.R2.R3.R4 89 B1.B2.B3.B4 89
然后我运行Rinetd:
/usr/sbin/rinetd
就是这样。
如果您想在每次重新启动计算机时自动运行它,可以先在文件/etc/rc.local