我正在修补Rackspace上的Web服务器,试图弄清楚我是否可以build立一个公共部分的网站,还有只能通过VPN连接才能看到的私人部分。
我有2个服务器运行Apache,第一个有公共和私人网站的混合。 第二个有私人网站,也是作为VPN服务器运行的pptpd。 在这两种情况下,内部IP(10.nnn)通过DNS公开给私人网站。
这里是一个匆忙绘制的图表,应该有希望展示我如何设法操纵事物:

公共场所正常工作。 VPN连接正常工作。 服务器2上的私人站点连接到VPN时工作正常。 不起作用的是通过VPN访问服务器1上的私人站点。 我添加了一个可能误导的红色箭头,显示我认为问题出在哪里。
我可以从他们的内部地址ping其他每个服务器,我可以ping通服务器2在互联网上的内部地址。 我不能做的是通过互联网ping服务器1。
我觉得我天真地错过了一些关于VPN如何工作的基本networking知识。 任何人都可以看到我失踪?
服务器的内部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,这意味着他们在同一个子网
我已经尝试过的事情:
在/etc/pptpd.conf更改本地和远程IP
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 eth1打开bcrelay eth1和/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表项
以下在这个网站上发现的build议 ,(因为我在selog中“无法确定代理ARP的以太网地址”从syslog中的pptp)我添加了一个ip-up.local和ip-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.
这取决于我正在尝试什么样的选项。
我很痛苦地意识到,尽pipe我所做的所有防火墙/ ARP表中的操作都没有意识到,但我并不真正意识到自己在做什么,这让我很担心。 我也意识到一种不舒服的感觉,我必须尝试所有的东西,或者有一些神奇的组合,我还没有尝试过。
不知道更多关于你的IP地址的细节,我猜测服务器1不知道你的工作站应该被路由到服务器2。
如果您添加一些关于您的IP寻址scheme的更多细节,特别是与来自工作站的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分配的networking。 另外,这条路线在重新启动后将不能存活,所以你可能想把路由添加到configuration文件中。 哪个文件和什么语法取决于你的分布。