我已经将 Debian 盒设置为我们网络上其他计算机的 PPTP VPN 路由器 - Debian 盒与远程 VPN 服务建立 PPTP 连接,然后通过 VPN 路由所有 Internet 流量。
我可以通过路由器本身访问所有网站,一切运行正常。
但是,从网络上使用路由器作为默认网关的其他客户端计算机,这些机器由于某种原因只能访问大约 50% 的网站。例如,我可以访问 www.bbc.co.uk,但不能访问 www.speedtest.net - 然而,当直接在路由器的命令行上使用基于文本的浏览器进行测试时,这两个网站都可以正常工作。
我们从其他计算机可以 ping 和 traceroute 到不工作的站点,只是无法加载网络访问(浏览器等待响应超时)。
以下是我们在路由器上用于启用 NAT 的 iptables 规则:
iptables --table nat --append POSTROUTING -j MASQUERADE
iptables --append FORWARD --in-interface eth0 -j ACCEPT
此外,还启用了 IP 转发:
echo 1 > /proc/sys/net/ipv4/ip_forward
如果我断开 Debian 机顶盒上的 VPN 并通过 Debian 路由器通过 DSL 连接进行流量路由,则所有网站都可以从客户端计算机正确加载 - 因此此问题仅在连接 VPN 时发生(尽管通过 VPN 连接时可以直接从路由器访问所有网站,因此这排除了 VPN 本身的问题)。
有人对可能导致此问题的原因以及我需要做什么来解决这个问题有什么建议吗?
答案1
按照指南中的第 7.15.2 节,通过 IPTABLES 限制 MSS 来解决此问题:
http://tldp.org/HOWTO/IP-Masquerade-HOWTO/mtu-issues.html
只需运行此命令即可解决问题:
iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
现在所有网站都可以通过 VPN 正常加载。
经过网上广泛搜索,最终找到了一个有同样问题的类似用户,找到了解决方案http://ubuntuforums.org/showthread.php?t=1699264。