我在 Windows XP 上设置了 pptp vpn,并添加了用户。vpn 用户可以连接到服务器,但一旦连接,他们就无法通过 vpn 服务器访问互联网,因为 vpn 服务器应该充当代理。这是我的基本任务 - 让 vpn 服务器充当用户的代理。
有人可以解释为什么用户无法通过 vpn 服务器访问互联网吗?或者请告诉我一些能详细解释这个问题的网站?
提前致谢。
答案1
代理服务器通常是一种应用层功能。我相信,当您说“充当代理”时,您实际上是在说“通过 VPN 将流量路由到该服务器,然后该服务器将流量路由到其默认网关并最终路由到 Internet”。
我首先从客户端执行“tracert”(或 OS 等效命令),然后连接到 VPN 到 Internet 地址,查看流量流向何处。
在 Microsoft VPN 客户端中,用户取消选中“在远程网络上使用默认网关”(在 VPN 连接的 TCP/IP 的“高级”设置中设置)的情况相当常见,这将导致只有发往远程 VPN 子网的流量才能穿过 VPN。您是否检查过没有人在客户端上取消选中该框?
通常,Microsoft VPN 客户端会将 DNS 和 WINS 设置从 VPN 服务器“推送”到客户端计算机。例如,如果客户端无法使用浏览器访问网站,则可能是由于它们是通过 VPN 隧道路由流量,但被“推送”的 DNS 服务器无法解析互联网名称。
使用“route print”命令连接客户端时查看路由表也有助于了解发生了什么。配置为将所有流量路由到 VPN 的客户端上应该有两个默认网关(0.0.0.0,子网掩码为 0.0.0.0)条目 - 一个用于客户端的子网内默认网关,另一个“指向”VPN 隧道。
编辑:
如果你想全部来自 VPN 客户端的流量穿过 VPN 并从 VPN“集线器”传出到 Internet,然后在客户端计算机上勾选“在远程网络上使用默认网关”复选框。
我怀疑您遇到了名称解析问题。我将客户端连接到 VPN 并执行以下操作:
tracert -d (your favorite Internet IP address here)
您可以在该命令中使用任何 IP 地址,只要它是真正可访问的即可。哎呀,使用“star.slashdot.org”的 IP 地址——我已经在这里的一些示例中使用了它……>smile< 216.34.181.48
这将向您显示数据包所采用的路由。在该命令中使用 IP 地址很重要,这样您就不会依赖 DNS。
如果看起来没问题(即,您看到数据包穿过 VPN 并通过 VPN“集线器”Internet 连接离开),那么请尝试 DNS:
nslookup star.slashdot.org
你应该得到类似这样的结果:
C:\>nslookup star.slashdot.org
Server: the-name-of-the-VPN-server's-DNS-server
Address: the-ip-address-of-the-VPN-server's-DNS-server
Non-authoritative answer:
Name: star.slashdot.org
Address: 216.34.181.48
如果您收到类似这样的令人讨厌的消息,则表明远程 DNS 服务器未配置为解析 Internet 名称。
*** the-name-of-the-VPN-server's-DNS-server can't find star.slashdot.org: Non-existent domain
如果您收到类似这样的信息,则表示 VPN 服务器没有指定有效的 DNS 服务器:
C:\>nslookup star.slashdot.org
Server: [the-ip-address-of-the-VPN-server's-DNS-server]
Address: the-ip-address-of-the-VPN-server's-DNS-server
DNS request timed out.
timeout was 2 seconds.
DNS request timed out.
timeout was 2 seconds.
*** Request to [the-ip-address-of-the-VPN-server's-DNS-server] timed-out