我已经在我的 VPS(Debian)上设置了 PPTPD,我以前在 Android 手机和 Windows 笔记本电脑上使用它非常顺畅。现在我想让我的新 Mac Mini 也使用它。显示 Mac 可以建立 vpn 连接,只有浏览器(或 curl)无法打开任何网页。
有什么问题?
顺便说一句,我通过我的 wifi 路由器访问互联网。我的安卓手机和 Windows 笔记本电脑可以毫无问题地使用 vpn。另一件奇怪的事情是:如果我的 mac mini 不通过路由器直接访问互联网,vpn 可以正常工作,也就是说,我也可以连接 vpn 和浏览器网页。
以下是显示我的Mac已经建立VPN连接后的会话:
JohnsMM:~ john$ nslookup www.youtube.com
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
www.youtube.com canonical name = youtube-ui.l.google.com.
Name: youtube-ui.l.google.com
Address: 74.125.192.91
Name: youtube-ui.l.google.com
Address: 74.125.192.190
JohnsMM:~ john$ ping www.youtube.com
PING youtube-ui.l.google.com (74.125.192.91): 56 data bytes
Request timeout for icmp_seq 0
64 bytes from 74.125.192.91: icmp_seq=0 ttl=49 time=1202.066 ms
64 bytes from 74.125.192.91: icmp_seq=1 ttl=49 time=306.454 ms
^C
--- youtube-ui.l.google.com ping statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 306.454/605.227/1202.066/422.029 ms
JohnsMM:~ john$ curl -v www.youtube.com
* About to connect() to www.youtube.com port 80 (#0)
* Trying 74.125.192.91...
* connected
* Connected to www.youtube.com (74.125.192.91) port 80 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.24.0 (x86_64-apple-darwin12.0) libcurl/7.24.0 OpenSSL/0.9.8r zlib/1.2.5
> Host: www.youtube.com
> Accept: */*
>
如上所示,当我使用卷曲访问 youtube,它停在最后一行(行之后> Accept: */*
),看起来 curl 正在等待响应。
答案1
看来,ping 功能正常,问题出在你的 MTU 太高,因为 VPN 添加了标头,这意味着数据包会被碎片化并丢弃。要调整 Mac 上的 MTU,请打开
系统偏好设置>网络>[您的连接]>先进的>硬件>配置:{手动、自动}
您将看到它是否自动配置,它将是 1500,因为这在普通以太网连接上工作正常。您需要将其调低,有一种相当简单的方法可以了解您的 MTU 需要多大。遵循此指南在这里,您可以使用 ping 来确定最佳 MTU。连接您的 VPN 并打开终端窗口:
类型:ping -c 2 -D -s 1472 www.youtube.com
本例中数据包大小为 1472。您将收到两个响应之一,ping: sendto: Message too long
或一个正常的 ping 响应。
由于 1472 + 28 等于 1500,因此您应该会收到Message too long
错误。减少 ping 数,直到收到肯定答复。取有效数字,加上 28,并将其用作 MTU。