VPN 啟動時 Internet 無法正常工作
我想通過 VPN 重定向所有流量,但它根本不起作用。
伺服器:RT-N16
$$ TomatoUSB v1.28.0000 MIPSR2-112 K26 USB AIO $$ 客戶端:Ubuntu 14.04.1
伺服器配置:
# 自動生成的配置 守護程序 伺服器 10.8.0.0 255.255.255.0 proto tcp 伺服器 埠 9999 開發 tun21 密碼AES-256-CBC comp-lzo 沒有 保活 15 60 動詞 3 推“路線 192.168.1.0 255.255.255.0” 推送“dhcp-option DNS 192.168.1.1” 推送“重定向網關 def1” ca ca.crt dh dh.pem 證書伺服器.crt 密鑰伺服器.key 狀態版本 2 地位 # 自定義配置(這些部分似乎是主要的 FIX): 客戶對客戶 推“comp-lzo” 推送“重定向網關”
伺服器:(
iptables -L -t nat -n
只是 POSTROUTING 輸對外連結)鏈 POSTROUTING(策略接受) 目標 prot opt 源目標 全部偽裝——0.0.0.0/0 0.0.0.0/0 SNAT all -- 192.168.1.0/24 192.168.1.0/24 to:192.168.1.1
伺服器日誌:
2 月 4 日 21:19:38 r daemon.notice openvpn[1072]:與 [AF_INET]192.168.1.4:58170 建立的 TCP 連接 2 月 4 日 21:19:39 r daemon.notice openvpn[1072]: 192.168.1.4:58170 TLS:來自 [AF_INET]192.168.1.4:58170 的初始數據包,sid=00fe6a02 33820233 2 月 4 日 21:19:39 r daemon.notice openvpn[1072]: 192.168.1.4:58170 VERIFY OK: XXXXXXXXXXXXXXXX 2 月 4 日 21:19:39 r daemon.notice openvpn[1072]: 192.168.1.4:58170 VERIFY OK: XXXXXXXXXXXXXXXX 2 月 4 日 21:19:40 r daemon.notice openvpn[1072]: 192.168.1.4:58170 數據通道加密:使用 256 位密鑰初始化的密碼“AES-256-CBC” 2 月 4 日 21:19:40 r daemon.notice openvpn[1072]: 192.168.1.4:58170 數據通道加密:使用 160 位消息雜湊“SHA1”進行 HMAC 身份驗證 2 月 4 日 21:19:40 r daemon.notice openvpn[1072]: 192.168.1.4:58170 數據通道解密:使用 256 位密鑰初始化的密碼“AES-256-CBC” 2 月 4 日 21:19:40 r daemon.notice openvpn[1072]: 192.168.1.4:58170 數據通道解密:使用 160 位消息雜湊“SHA1”進行 HMAC 身份驗證 2 月 4 日 21:19:40 r daemon.notice openvpn [1072]: 192.168.1.4:58170 控制通道:TLSv1,密碼 TLSv1 / SSLv3 DHE-RSA-AES256-SHA,2048 位 RSA Feb 4 21:19:40 r daemon.notice openvpn[1072]: 192.168.1.4:58170 [client] Peer Connection Initiated with [AF_INET]192.168.1.4:58170 2 月 4 日 21:19:40 r daemon.notice openvpn[1072]:client/192.168.1.4:58170 MULTI_sva:池返回 IPv4=10.8.0.6,IPv6=(未啟用) 2 月 4 日 21:19:40 r daemon.notice openvpn[1072]:client/192.168.1.4:58170 MULTI:學習:10.8.0.6 -> client/192.168.1.4:58170 2 月 4 日 21:19:40 r daemon.notice openvpn[1072]:client/192.168.1.4:58170 MULTI:client/192.168.1.4:58170 的主虛擬 IP:10.8.0.6 Feb 4 21:19:43 r daemon.notice openvpn[1072]: client/192.168.1.4:58170 PUSH: Received control message: 'PUSH_REQUEST' 2 月 4 日 21:19:43 r daemon.notice openvpn[1072]: client/192.168.1.4:58170 send_push_reply(): safe_cap=940 Feb 4 21:19:43 r daemon.notice openvpn[1072]: client/192.168.1.4:58170 SENT CONTROL [client]: 'PUSH_REPLY,route 192.168.1.0 255.255.255.0,dhcp-option DNS 192.168.1.1,redirect-網關 def1,路由 10.8.0.1,拓撲 net30,ping 15,ping-restart 60,ifconfig 10.8.0.6 10.8.0.5'(狀態 = 1)
客戶端配置:
客戶 遠端 192.168.1.1 9999 ca ca.crt 證書客戶端.crt 關鍵客戶.key 密碼AES-256-CBC 開發屯 原型 tcp 無拘無束 auth-nocache 腳本安全 2 持久鍵 堅持頓 使用者沒有人 組別組
客戶:(
netstat -nr
使用VPN):核心IP路由表 目標網關 Genmask 標誌 MSS 視窗 irtt Iface 0.0.0.0 10.8.0.5 128.0.0.0 UG 0 0 0 tun0 0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 wlan0 10.8.0.1 10.8.0.5 255.255.255.255 UGH 0 0 0 tun0 10.8.0.5 0.0.0.0 255.255.255.255 UH 0 0 0 tun0 128.0.0.0 10.8.0.5 128.0.0.0 UG 0 0 0 tun0 192.168.1.0 10.8.0.5 255.255.255.0 UG 0 0 0 tun0 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0 192.168.1.1 192.168.1.1 255.255.255.255 UGH 0 0 0 wlan0
客戶端日誌:
2015 年 2 月 4 日星期三 21:32:24 OpenVPN 2.3.2 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [EPOLL] [PKCS11] [eurephia] [MH] [IPv6] 建於 2014 年 12 月 1 日 2015 年 2 月 4 日星期三 21:32:24 警告:未啟用任何伺服器證書驗證方法。有關更多資訊,請參閱 http://openvpn.net/howto.html#mitm。 2015 年 2 月 4 日星期三 21:32:24 注意:UID/GID 降級將因 --client、--pull 或 --up-delay 而延遲 2015 年 2 月 4 日星期三 21:32:24 嘗試與 [AF_INET]192.168.1.1:9999 [非阻塞] 建立 TCP 連接 2015 年 2 月 4 日星期三 21:32:25 與 [AF_INET]192.168.1.1:9999 建立了 TCP 連接 2015 年 2 月 4 日星期三 21:32:25 TCPv4_CLIENT 連結本地:[undef] 2015 年 2 月 4 日星期三 21:32:25 TCPv4_CLIENT 遠端連結:[AF_INET]192.168.1.1:9999 2015 年 2 月 4 日星期三 21:32:26 [zais.dnsd.me] 由 [AF_INET]192.168.1.1:9999 發起的對等連接 2015 年 2 月 4 日星期三 21:32:29 TUN/TAP 設備 tun0 打開 2015 年 2 月 4 日星期三 21:32:29 do_ifconfig,tt->ipv6=0,tt->did_ifconfig_ipv6_setup=0 2015 年 2 月 4 日星期三 21:32:29 /sbin/ip link set dev tun0 up mtu 1500 2015 年 2 月 4 日星期三 21:32:29 /sbin/ip addr add dev tun0 local 10.8.0.6 peer 10.8.0.5 2015 年 2 月 4 日星期三 21:32:29 GID 設置為 nogroup 2015 年 2 月 4 日星期三 21:32:29 UID 設置為沒人 2015 年 2 月 4 日星期三 21:32:29 初始化序列已完成 2015 年 2 月 4 日星期三 21:32:43 寫信給 TUN/TAP:無效參數(程式碼=22) 2015 年 2 月 4 日星期三 21:32:58 寫信給 TUN/TAP:無效參數(程式碼=22) 2015 年 2 月 4 日星期三 21:33:13 寫信給 TUN/TAP:無效參數(程式碼=22) 2015 年 2 月 4 日星期三 21:33:28 寫信給 TUN/TAP:無效參數(程式碼=22)
**更新:**感謝您的幫助。VPN現在正在工作(不確定,但我需要在連接後等待大約5分鐘才能真正進入工作狀態,可能是我的路由器的限制,比如沒有足夠的CPU/MEM)
由於某種原因,您的客戶端無法在隧道打開時刪除目前的預設路由,從而導致路由表中存在兩條預設路由。
您將要做的是在隧道出現之前給目前路由一個較低的度量(較高的數字)。您可以使用 route -n 命令查看指標:
# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.4.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 192.168.3.0 10.8.1.2 255.255.255.0 UG 0 0 0 tun0 9.15.64.0 0.0.0.0 255.255.252.0 U 0 0 0 eth0 0.0.0.0 9.15.64.1 0.0.0.0 UG 0 0 0 eth0
因此,例如,給您的 wlan 介面一個 20 的度量,讓隧道路由提出一個 0 的度量。您的流量將全部沿隧道路由發送。
為了在介面上配置度量,只需打開 /etc/sysconfig/network-scripts 目錄中的 wlan 介面文件並添加一個名為 METRIC=20 的參數。
那應該這樣做。確保之後使用 route -n 命令進行驗證。
更新:
現在您有了正確的預設路由,是時候使用 tcpdump 和 ping 進行故障排除了。例如,嘗試以下命令並對遠端網路執行一些 ping 操作。
# tcpdump -i tun0 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on tun0, link-type RAW (Raw IP), capture size 65535 bytes 09:59:13.591764 IP 192.168.4.190 > 192.168.3.1: ICMP echo request, id 3154, seq 4, length 64 09:59:13.681290 IP 192.168.3.1 > 192.168.4.190: ICMP echo reply, id 3154, seq 4, length 64 09:59:14.592829 IP 192.168.4.190 > 192.168.3.1: ICMP echo request, id 3154, seq 5, length 64 09:59:14.680878 IP 192.168.3.1 > 192.168.4.190: ICMP echo reply, id 3154, seq 5, length 64
我猜你會看到回應要求,但看不到回顯回复。這意味著遠端端點沒有將數據包路由回去。您還需要在伺服器配置文件中修復那裡的路由。
更新2
從您的 tcpdump 可以清楚地看出您的客戶端正在通過隧道路由數據包,因此您的問題在於遠端端,因為它沒有將數據包路由回去。
listening on tun0, link-type RAW (Raw IP), capture size 65535 bytes 09:19:28.964361 IP 10.8.0.6.57394 > 192.168.1.1.domain: 60317+ A? daisy.ubuntu.com.localdomain. (46) 09:19:28.964382 IP 10.8.0.6.57394 > 8.8.8.8.domain: 60317+ A? daisy.ubuntu.com.localdomain. (46) 09:19:28.964398 IP 10.8.0.6.57394 > 8.8.4.4.domain: 60317+ A? daisy.ubuntu.com.localdomain. (46)
您必須檢查每一跳以查看路由表的樣子。從 192.168.1.1 開始。它是否知道將發送到 10.8.0.6 的數據包路由到哪裡?