使用 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 (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
編輯:更改規則以將自身作為鏈中的第一個插入。
多個問題
- /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
- 檢查 PPTP 客戶端網路
檢查 PPTP 客戶端本地/LAN IP 不使用 192.168.1.0/24。它們必須更改,否則 VPN 路由可能無法正常工作。