我已经在 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
我感觉这是服务器上的一些路由问题,但我不确定。
你能ping通IP地址(
74.125.67.100
)吗?可能是 VPN 正在运行,但您的配置中没有正确的 DNS 服务器。
您的本地 DNS 服务器很可能会拒绝来自 VPN 另一端的连接(或者如果它们在您看到的私有子网上,则根本不可见)。
如果您可以通过 VPN ping 公共 IP 地址但不能按名称访问,请尝试将 OpenDNS 服务器指定为您的名称服务器。
这是一个 iptable / 防火墙问题...您需要允许您的服务器转发数据包...只需运行以下命令就可以了:iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
如果你愿意,你可以添加这个 /etc/rc.local,这将在重启时自动重做对你的 iptable 的更改... ;)
如果客户端的本地子网与 VPN 子网(或提供的路由)冲突,可能会导致此问题。
您能否在 VPN 进入您的网络之前对 /etc/resolv.conf 进行比较,而当您使用 VPN 时,我想的是当您在 resolvconf 应用程序中运行 VPN 并清除您的名称服务器列表时
如果这仍然没问题,接下来要做的就是在您进入 vpn 之前和期间比较您的路由