使用 PPTPD VPN 设置时出现路由问题

使用 PPTPD VPN 设置时出现路由问题

我们一直在努力解决基于 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

多个问题

  1. /etc/ppp/pptpd 选项

    nodefaultroute
    

    但 Windows 已设置为“在远程网络上使用默认网关”。应删除上述选项。

  2. 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是没有必要的。删除上述规则。

  3. 检查 /proc/sys/net/ipv4/ip_forward

    cat /proc/sys/net/ipv4/ip_forward应该返回1。如果没有,请添加以下内容作为第二行rc.local

    echo 1 > /proc/sys/net/ipv4/ip_forward
    
  4. 检查 PPTP 客户端网络

    检查 PPTP 客户端本地/LAN IP 是否未使用 192.168.1.0/24。必须更改它们,否则 VPN 路由可能无法工作。

相关内容