繁体   English   中英

iptables通过VPN转发

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM