将安全VPN(ipsec)转发到PPTP

我已经configuration我的服务器(server1)通过IPsec(安全vpn)VPN连接到另一台服务器(server2)。 但现在我需要设置另一个VPN(工作VPN),所以我将能够连接到我的服务器(服务器1)和访问另一台服务器(服务器2)。

我的服务器有1个外部networking接口(eth0 IP 71.185.153.102 – 访问互联网)。 安全VPN使用eth0:0,它是一个IP 71.185.200.240的虚拟networking接口。

目标:连接到安全VPN(从我的办公室)并访问它的地址: http : /20.35.166.61 : 6084/test/

它应该如何工作:

我的家庭办公室 – >连接到VPN(在我的服务器上) – >服务器通过接口ppp0获取数据包 – > iptables应该转发并将所有数据包转换为eth0:0(VPN over IPsec)

到目前为止,我做了什么:

  • 安装了poptop(pptpd)
  • 给它一个localeip和一个remoteip(localeip 192.168.0.1 remoteip 192.168.0.100-200)
  • 接受来自ppp0的所有stream量:iptables -A INPUT -i ppp0 -j ACCEPT
  • 接受从ppp0到eth0的所有转发:iptables -A INPUT -i ppp0 -o eth0 -j ACCEPT打开gre协议:
    • iptables -A INPUT -p gre -j ACCEPT
    • iptables -A OUTPUT -p gre -j ACCEPT
  • 加上DNAT和SNAT:
    • iptables -A PREROUTING -p tcp -i ppp0 -j DNAT – 到91.185.200.240(转发到eth0:0)
    • iptables -t nat -A POSTROUTING -s 192.168.0.1 -o eth0 -j SNAT – 到71.185.200.240(如果来自ppp0则更改IP)

但问题是,没有任何工作,我不太清楚如何debugging,看看有什么问题(不是networking专家)。 我可以通过VPN连接,但几分钟后就会断开连接。 而且我不能在安全的VPN上ping IP(我可以从服务器ping它)。 另外当我连接到VPN我的互联网连接下降..

只要我能访问网页,我也愿意以任何其他方式做到这一点。

networking图: networking图

你真的有两种可能的方式去这里。

1.改用SSH隧道

摆脱所有的PPTP VPN的东西,并改为使用SSH隧道。 假设您可以通过SSH连接到您的机器,则不需要设置其他任何东西或执行任何可能会破坏任何东西的重新configuration。

你没有指定你在客户端上使用什么操作系统,但是我假设你在Windows上使用PuTTY或者在其他一些操作系统上使用OpenSSH(Mac OS X,Linux等)。

在Windows上的PuTTY上,你可以进入SSH-> Tunnels,并添加一个转发的端口,例如source = 6084,destination = 20.35.166.61:6084,然后连接到服务器。 (保存configuration文件可以帮助您避免每次都设置该configuration文件。

有了OpenSSH,你可以像ssh -L 6084:20.35.166.61:6084 [email protected] (如果你的计算机上的本地用户名与你的用户名相同,你的用户名可能会被忽略)。

您应该可以使用http://127.0.0.1:6084访问远程Web服务器。 一些networking应用程序不会喜欢你使用不同的IP地址,并将打破链接。 在某些情况下,将主机名添加到安全服务器到主机文件( C:\WINDOWS\SYSTEM32\DRIVERS\ETC\HOSTS ,OS X上的/etc/hosts以及其他类似的操作系统) – IP地址为127.0.0.1。 如果您尝试做其他任何事情,但是连接到该特定主机名上的端口6084,或者如果ssh会话未启动,这当然会破坏事情。

一个替代隧道的单一端口,是使用“dynamicSSH隧道”,这意味着SSH客户端模拟SOCKS代理。 在这种模式下,您可以执行ssh -D 3128 [email protected] (使用OpenSSH),或者使用PuTTYselect一个“3128”作为源端口的“dynamic”隧道(您不需要指定目的地)。 然后将127.0.0.1:3128configuration为您的网页浏览器作为您的SOCKS代理,并且bam – 您的所有网页浏览器stream量将通过您的服务器redirect。 这包括来自您的机器的任何其他networkingstream量,所以要小心,如果这不是你想要的。 另外,这意味着一旦SSH隧道closures,您的Web浏览器将停止工作。

2.修复你的PPtP隧道

你似乎列举了一些具体的问题。

1.几分钟后,VPN断开连接。

这可能是因为在你和服务器之间的某个地方有一个带有状态数据包检查的防火墙(比如你的花园多种“宽带路由器”)导致连接超时。 根据防火墙的品牌和型号,你可能会增加你的超时时间。 作为一种解决方法,您可能希望将PoPToP中的set link keep-alive选项设置为足够低以确保会话不会过期。

2.您的互联网连接在连接时停止工作。

这是因为当连接你的VPN时,你的“默认路由”将被设置为通过VPN连接。 即它将尝试通过您的服务器发送您的互联网stream量。 除非你设置源地址转换,否则从服务器到较大互联网的stream量将有一个介于192.168.0.100-200之间的IP作为它的源IP,而你的数据包可能到达你的目的地,所以你无法知道,因为远程主机无法将您的stream量发送回您的不可路由的IP地址。

这个问题有几个可能的解决scheme:

  • 在服务器上设置NAT,以便任何退出VPN的stream量的源地址与服务器的面向Internet的networking接口的IP地址相同。
  • 使用公共IP地址而不是私有IP地址,并相应地设置路由(在您的scheme中可能不切实际)
  • 不要通过VPN将stream量路由到互联网 – 您还没有指定使用的VPN客户端,所以我无法帮助您。 PoPToP 可能有能力将路由configuration“推”到PPtP客户端,但我不知道如何。 看看一些文档。 但最有可能的是,你可以在客户端解决这个问题。

3.您无法访问远程服务器

这不起作用的原因是您的Internet连接停止工作 – 数据包可能到达目的地,但远程服务器无法将数据包发回给您。

可能的解决scheme是

  • 确保远程服务器的路由表中有VPN。 (我怀疑这可能不适用于你的情况,我有一种感觉,你不pipe理远程服务器,远程pipe理员可能不愿意添加路由到私有IP范围…)
  • 使用source-NAT转换通过VPN退出的报文的源IP地址。