Networking

使用 PPTPD VPN 設置到某些域的路由問題

  • January 30, 2013

我們一直在努力解決基於 PPTPD 的 VPN 的某種網路/路由問題,其中客戶端無法通過 VPN 訪問某些網際網路域/ip。例如,使用者可以瀏覽 hxxp://google.com,但不能瀏覽 hxxp://microsoft.com。

設置如下:

客戶端(在 Windows 和 Android 上同樣的問題,尚未測試其他人)(ip: xxxx)-> Internet -> (yyyy) dd-wrt ​​路由器 (192.168.1.1) -> 執行 PPTPD (192.168.1.125) 的 Ubuntu Server 10.10。

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

(在描述這個問題時,我發現當我嘗試通過 VPN 訪問 hxxp://pastebin.ca 時無法載入 http://w.pastebin.ca/pb-g.gz.js )

如果客戶端在使用 VPN 時嘗試打開這些網頁,它們會超時(網路下的 Google Chrome 開發工具會顯示請求為“待處理”,直到它們超時)。有時 Chrome 會說錯誤是“錯誤 101 (net::ERR_CONNECTION_RESET):連接已重置。”。其他服務(除了 http/https 80/443 也失敗)。

大多數其他網站都可以使用,例如 hxxp://google.com 和 hxxp://bing.com。這些問題在來自不同位置的許多不同 Windows 和 android 客戶端之間是一致的。不涉及代理。禁用 Windows 防火牆和任何防病毒軟體都無濟於事。

來自客戶端的 tracert 為不同的域提供了各種結果,但在沒有 VPN 和 VPN 之間它們似乎有些一致,這裡有一些例子

如果我lynx http://microsoft.com直接在執行 PPTPD 的 Linux 伺服器上啟動,它會正常載入。和其他網站一樣…

有任何想法嗎?

(對於帶有 tracert 連結的 jsfiddle 感到抱歉,作為 ServerFault 上的新使用者,無法在此處發布那麼多連結)

由於您更改了預設 MTU,這可能是原因。嘗試將以下規則添加到您的防火牆,並根據需要進行調整:

iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS  --clamp-mss-to-pmtu

編輯:更改規則以將自身作為鏈中的第一個插入。

多個問題

  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 兩側相同的 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
  1. 檢查 PPTP 客戶端網路

檢查 PPTP 客戶端本地/LAN IP 不使用 192.168.1.0/24。它們必須更改,否則 VPN 路由可能無法正常工作。

引用自:https://serverfault.com/questions/473380