我们一直在努力解决基于 PPTPD 的 VPN 的某种网络/路由问题,客户端无法通过 VPN 访问某些互联网域/ip。例如,用户可以浏览 hxxp://google.com,但不能浏览 hxxp://microsoft.com。
设置如下:
客户端(Windows 和 Android 上存在同样的问题,尚未测试其他)(ip:xxxx)-> Internet ->(yyyy)dd-wrt 路由器(192.168.1.1)-> 运行 PPTPD 的 Ubuntu Server 10.10(192.168.1.125)。
eirik@woserv:~$ cat /etc/pptpd.conf | grep -v'#'
option /etc/ppp/pptpd-options
logwtmp
localip 192.168.1.125
remoteip 192.168.1.230-240
eirik@woserv:~$ cat /etc/ppp/pptpd-options | grep -v '#'
name pptpd
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
ms-dns 192.168.1.1
proxyarp
nodefaultroute
debug
lock
auth
nobsdcomp
noipx
mtu 1490
mru 1490
iptable 规则(在 /etc/rc.local 中)并使用 iptables -L 验证是否已加载
#!/bin/sh
# Flush all rules
iptables -F
iptables -X
iptables -Z
# Allow all VPN stuff
iptables -A INPUT -p tcp --dport 1723 -j ACCEPT
iptables -A INPUT -p 47 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 1723 -j ACCEPT
iptables -A OUTPUT -p 47 -j ACCEPT
iptables -A FORWARD -i ppp+ -o eth0 -s 192.168.1.0/24 -m state --state NEW -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A POSTROUTING -t nat -o eth0 -j MASQUERADE
exit 0
我们在 dd-wrt 路由器上启用了 PPTP、IPSEC 和 L2TP 直通(在“安全”->“VPN 直通”下)。此外,我们已将端口 1723 和 47 转发到 192.168.1.125。
Windows 中的 VPN 连接在 IPv4 上设置为“使用远程网络上的默认网关”,并使用 MS-CHAP v2。如果客户端访问 hxxp://www.whatismyip.com/,则会报告正确的 VPN IP(yyyy),而不是其正常的互联网 IP,xxxx
到目前为止,我们已经确定了以下问题领域:
microsoft.com
support.microsoft.com
no.yahoo.com
answers.yahoo.com
nrk.no
imgur.com
(在描述这个问题的过程中,我发现我无法加载 http://w.pastebin.ca/pb-g.gz.js当我尝试通过 VPN 访问 hxxp://pastebin.ca 时)
如果客户端在使用 VPN 时尝试打开这些网页,则会超时(Google Chrome Dev Tools 在网络下显示请求“待处理”,直到超时)。有时 Chrome 会显示错误“错误 101 (net::ERR_CONNECTION_RESET):连接已重置。”。其他服务(除 http/https 80/443 外)也会失败。
大多数其他网站都可以使用,例如 hxxp://google.com 和 hxxp://bing.com。来自不同位置的许多不同 Windows 和 Android 客户端都存在同样的问题。没有涉及代理。禁用 Windows 防火墙和任何防病毒软件都无济于事。
客户端的 tracert 针对不同的域给出了不同的结果,但在没有 VPN 和 VPN 之间似乎有些一致,这里有些例子。
如果我直接在运行 PPTPD 的 Linux 服务器上启动,lynx http://microsoft.com
它可以正常加载。其他网站也一样...
有任何想法吗?
(抱歉,tracert 链接出现了 jsfiddle,作为 ServerFault 的新用户,无法在这里发布那么多链接)
答案1
由于您更改了默认 MTU,这可能是原因。尝试将以下规则添加到防火墙,并根据需要进行调整:
iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
编辑:改变规则,将其自身插入到链中作为第一个。
答案2
多个问题
/etc/ppp/pptpd 选项
nodefaultroute
但 Windows 已设置为“在远程网络上使用默认网关”。应删除上述选项。
NAT 两侧为同一网络
iptables -A POSTROUTING -t nat -o eth0 -j MASQUERADE
PPTP 服务器的 LAN IP 为 192.168.1.125,PPTP 客户端分配有 192.168.1.230-240,NAT 两端的 IP 相同,为 192.168.1.0/24。不确定它是否真的有效,部分有效,但看起来有问题。
此外,PPTP 服务器已经在局域网内,DD-WRT路由器已经在进行出站NAT。PPTP服务器上的NAT是没有必要的。删除上述规则。
检查 /proc/sys/net/ipv4/ip_forward
cat /proc/sys/net/ipv4/ip_forward
应该返回1
。如果没有,请添加以下内容作为第二行rc.local
echo 1 > /proc/sys/net/ipv4/ip_forward
检查 PPTP 客户端网络
检查 PPTP 客户端本地/LAN IP 是否未使用 192.168.1.0/24。必须更改它们,否则 VPN 路由可能无法工作。