如何使服务器在我的 VPN 上可见?

如何使服务器在我的 VPN 上可见?

我正在摆弄 Rackspace 上的网络服务器,试图弄清楚是否可以建立一个包含公共部分和仅通过 VPN 连接可见的私有部分的网站。

我有 2 台运行 apache 的服务器,第一台有公共和私人站点。第二台有私人站点,并且 pptpd 作为 VPN 服务器运行。在这两种情况下,内部 IP(10.nnn)都通过 DNS 公开给私人站点。

下面是一张匆忙绘制的图表,希望能够展示出我是如何操纵事物的:

网络图

公共网站运行正常。VPN 连接运行正常。连接到 VPN 时,服务器 2 上的私有网站运行正常。无法通过 VPN 访问服务器 1 上的私有网站。我在图表中添加了一个可能具有误导性的红色箭头,以显示我认为问题所在。

我可以通过内部地址 ping 通每台服务器,也可以通过互联网 ping 通服务器 2 的内部地址。但我无法通过互联网 ping 通服务器 1。

我觉得自己天真地错过了一些有关 VPN 实际工作原理的基本网络知识。有人能看出我错过了什么吗?

服务器的内部IP信息是:

Server 1
    inet addr:10.177.129.10  Bcast:0.0.0.0  Mask:255.255.192.0

Server 2
    inet addr:10.176.132.180  Bcast:0.0.0.0  Mask:255.255.192.0

rackspace 向我保证,这意味着它们位于同一子网中


我尝试过的事情:

更改本地和远程 IP/etc/pptpd.conf

localip 10.176.132.180
remoteip 192.168.0.234-238,192.168.0.245

或者

localip 192.168.1.1-99
remoteip 192.168.1.100-245

或者

localip 192.168.1.1
remoteip 192.168.1.2-245

开启bcrelay eth1proxyarp进入/etc/pptpd.conf

我不知道我是否需要 bcrelay,但当时它似乎是个好主意。

添加路线

route add -net 192.168.1.0 netmask 255.255.255.0 gw 10.176.132.180

(或 192.168.0.0,无论 localip 是什么)或

route add -net 192.168.1.0 netmask 255.255.255.0 gw  192.168.1.1

添加各种 iptable 条目,例如:

sudo iptables -t nat -A POSTROUTING -j SNAT --to-source [server 2 ext ip]

或者

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

或者

sudo iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

或者

sudo iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE

通过脚本添加 ARP 表条目

下列的在此网站上找到的建议,(因为我在 syslog 中从 pptp 看到“无法确定代理 ARP 的以太网地址”)我添加了一个ip-up.localip-down.local脚本,每当客户端连接和断开连接时都会运行,自动修改 ARP 表以添加以下内容:

arp --use-device --set <client 192.168... ip address> eth0 pub

这些方法似乎都不起作用。唯一的区别是有时我会得到这样的结果:

Pinging 10.177.129.10 with 32 bytes of data:
Request timed out.

有时我会得到这样的结果:

Pinging 10.177.129.10 with 32 bytes of data:
Reply from <server 2 ext ip>: Destination host unreachable.

取决于我尝试了哪些不同的选项。

不过,我痛苦地意识到,尽管我做了这么多防火墙/arp 表调整,但我并不真正清楚自己在做什么,这让我很担心。我还意识到一种不舒服的感觉,我肯定已经尝试了所有方法,或者上述方法中存在一些我尚未尝试过的神奇组合。

答案1

在不了解有关您的 IP 寻址具体信息的情况下,我猜测服务器 1 不知道您的工作站应该通过服务器 2 进行路由。

如果您添加有关 IP 寻址方案的更多详细信息,尤其是与来自您的工作站的 HTTP 请求似乎来自的 IP 地址有关的详细信息,我可能能够扩展这个答案。

更新:服务器 1 对于如何到达 192.168.0.234 的最佳猜测是通过其默认路由,这是错误的。您需要在服务器 1 上添加通过服务器 2 到 192.168.0.0/24 的静态路由。

route add -net 192.168.0.0 netmask 255.255.255.0 gw <server2>

我对 pptpd 分配的网络做了假设。此外,该路由在重新启动后将失效,因此您可能需要将该路由添加到配置文件中。哪个文件和哪种语法取决于您的发行版。

相关内容