我已经在 Ubuntu Server 9.04 上将 pptpd 设置为我的 VPN 服务器,我能够从客户端连接到 VPN 并可以访问服务器的本地网络,但我无法通过 VPN 连接到外部网络。
如果我通过 SSH 登录服务器:
$ ping google.com
PING google.com (74.125.67.100) 56(84) bytes of data.
64 bytes from gw-in-f100.google.com (74.125.67.100): icmp_seq=1 ttl=49 time=65.9 ms
64 bytes from gw-in-f100.google.com (74.125.67.100): icmp_seq=2 ttl=49 time=63.2 ms
64 bytes from gw-in-f100.google.com (74.125.67.100): icmp_seq=3 ttl=49 time=63.9 ms
64 bytes from gw-in-f100.google.com (74.125.67.100): icmp_seq=4 ttl=49 time=66.0 ms
如果我连接到 VPN 并在本地 ping:
$ ping google.com
ping: cannot resolve google.com: Unknown host
我感觉这是服务器上的一些路由问题,但我不确定。
答案1
您能 ping 该 IP 地址吗 ( 74.125.67.100
)?
可能是 VPN 正在运行,但您的配置中没有正确的 DNS 服务器。
您的本地 DNS 服务器很可能会拒绝来自 VPN 另一端的连接(或者如果它们位于您看到的私有子网上,则根本看不到它们)。
如果您可以通过 VPN ping 公共 IP 地址但无法通过名称访问,请尝试将 OpenDNS 服务器指定为您的名称服务器。
答案2
这是 iptable/防火墙问题...您需要允许您的服务器转发数据包...只需运行以下命令即可:iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
如果您愿意,可以添加这个 /etc/rc.local,这将在重启时自动重做对 iptable 的更改... ;)
答案3
如果客户端的本地子网和 VPN 子网(或提供的路由)发生冲突,则会导致此问题。
答案4
你能不能在你通过 VPN 接入网络之前和使用 VPN 接入网络时对 /etc/resolv.conf 进行一下比较?我的想法是,当你在 resolvconf 应用程序中使用 VPN 时,它会运行并清除你的名称服务器列表
如果这样仍然没问题,下一步要做的就是比较你在使用 VPN 之前和使用过程中的路由
sudo ip route show