Openvpn

VPN 啟動時 Internet 無法正常工作

  • February 18, 2015

我想通過 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 的數據包路由到哪裡?

引用自:https://unix.stackexchange.com/questions/182958