在 Raspbian 上與 OpenVPN 建立連接
我正在嘗試使用 Raspbian 在 Raspberry Pi 3 上建立 VPN 連接。但我無法完成這項工作。
我正在使用 VPNBook,我下載了 .ovpn 文件以使用 OpenVPN。
這是 .ovpn 文件的內容:
client dev tun3 proto tcp remote 176.126.237.217 80 remote euro217.vpnbook.com 80 resolv-retry infinite nobind persist-key persist-tun auth-user-pass pass.txt comp-lzo verb 3 cipher AES-128-CBC fast-io pull redirect-gateway script-security 2
這是我得到的輸出:
pi@raspberrypi:/etc/openvpn/vpnbook $ sudo openvpn --config vpnbook-euro1-tcp80.ovpn Wed Feb 8 00:07:45 2017 OpenVPN 2.3.4 arm-unknown-linux-gnueabihf [SSL (OpenSSL)] [LZO] [EPOLL] [PKCS11] [MH] [IPv6] built on Jan 23 2016 Wed Feb 8 00:07:45 2017 library versions: OpenSSL 1.0.1t 3 May 2016, LZO 2.08 Wed Feb 8 00:07:45 2017 WARNING: file 'pass.txt' is group or others accessible Wed Feb 8 00:07:45 2017 WARNING: No server certificate verification method has been enabled. See http://openvpn.net/howto.html#mitm for more info. Wed Feb 8 00:07:45 2017 NOTE: --fast-io is disabled since we are not using UDP Wed Feb 8 00:07:45 2017 Socket Buffers: R=[87380->131072] S=[16384->131072] Wed Feb 8 00:07:45 2017 Attempting to establish TCP connection with [AF_INET]176.126.237.217:80 [nonblock] Wed Feb 8 00:07:46 2017 TCP connection established with [AF_INET]176.126.237.217:80 Wed Feb 8 00:07:46 2017 TCPv4_CLIENT link local: [undef] Wed Feb 8 00:07:46 2017 TCPv4_CLIENT link remote: [AF_INET]176.126.237.217:80 Wed Feb 8 00:07:46 2017 TLS: Initial packet from [AF_INET]176.126.237.217:80, sid=f8773375 a8e3c418 Wed Feb 8 00:07:46 2017 WARNING: this configuration may cache passwords in memory -- use the auth-nocache option to prevent this Wed Feb 8 00:07:47 2017 VERIFY OK: depth=1, C=CH, ST=Zurich, L=Zurich, O=vpnbook.com, OU=IT, CN=vpnbook.com, name=vpnbook.com, emailAddress=admin@vpnbook.com Wed Feb 8 00:07:47 2017 VERIFY OK: depth=0, C=CH, ST=Zurich, L=Zurich, O=vpnbook.com, OU=IT, CN=vpnbook.com, name=vpnbook.com, emailAddress=admin@vpnbook.com Wed Feb 8 00:07:48 2017 Data Channel Encrypt: Cipher 'AES-128-CBC' initialized with 128 bit key Wed Feb 8 00:07:48 2017 Data Channel Encrypt: Using 160 bit message hash 'SHA1' for HMAC authentication Wed Feb 8 00:07:48 2017 Data Channel Decrypt: Cipher 'AES-128-CBC' initialized with 128 bit key Wed Feb 8 00:07:48 2017 Data Channel Decrypt: Using 160 bit message hash 'SHA1' for HMAC authentication Wed Feb 8 00:07:48 2017 Control Channel: TLSv1, cipher TLSv1/SSLv3 DHE-RSA-AES256-SHA, 1024 bit RSA Wed Feb 8 00:07:48 2017 [vpnbook.com] Peer Connection Initiated with [AF_INET]176.126.237.217:80 Wed Feb 8 00:07:50 2017 SENT CONTROL [vpnbook.com]: 'PUSH_REQUEST' (status=1) Wed Feb 8 00:07:50 2017 PUSH: Received control message: 'PUSH_REPLY,redirect-gateway def1,dhcp-option DNS 89.233.43.71,dhcp-option DNS 91.239.100.100,route 10.12.0.1,topology net30,ping 5,ping-restart 30,ifconfig 10.12.0.6 10.12.0.5' Wed Feb 8 00:07:50 2017 OPTIONS IMPORT: timers and/or timeouts modified Wed Feb 8 00:07:50 2017 OPTIONS IMPORT: --ifconfig/up options modified Wed Feb 8 00:07:50 2017 OPTIONS IMPORT: route options modified Wed Feb 8 00:07:50 2017 OPTIONS IMPORT: --ip-win32 and/or --dhcp-option options modified Wed Feb 8 00:07:50 2017 ROUTE_GATEWAY 192.168.0.1/255.255.255.0 IFACE=wlan0 HWADDR=b8:27:eb:e3:f8:56 Wed Feb 8 00:07:50 2017 TUN/TAP device tun3 opened Wed Feb 8 00:07:50 2017 TUN/TAP TX queue length set to 100 Wed Feb 8 00:07:50 2017 do_ifconfig, tt->ipv6=0, tt->did_ifconfig_ipv6_setup=0 Wed Feb 8 00:07:50 2017 /sbin/ip link set dev tun3 up mtu 1500 Wed Feb 8 00:07:50 2017 /sbin/ip addr add dev tun3 local 10.12.0.6 peer 10.12.0.5 Wed Feb 8 00:07:50 2017 /sbin/ip route add 176.126.237.217/32 via 192.168.0.1 Wed Feb 8 00:07:50 2017 /sbin/ip route add 0.0.0.0/1 via 10.12.0.5 Wed Feb 8 00:07:50 2017 /sbin/ip route add 128.0.0.0/1 via 10.12.0.5 Wed Feb 8 00:07:50 2017 /sbin/ip route add 10.12.0.1/32 via 10.12.0.5 Wed Feb 8 00:07:50 2017 Initialization Sequence Completed
此時,我無法訪問任何網站(通過輸入名稱或 IP 地址)。但是,我可以 ping 一些 IP 地址,例如 216.58.212.99,但不能 ping 諸如 www.google.fr 之類的主機名。
我認為這是一個 DNS 問題,我嘗試搜尋它並使用以下行更新了我的 .ovpn 文件:
up /etc/openvpn/update-resolv-conf down /etc/openvpn/update-resolv-conf
這並沒有改變什麼。
$$ EDIT $$由於我無法 ping 主機名,我想我仍然有 DNS 問題。我嘗試了我在網際網路上看到的不同論壇內容,但沒有一個有效。為了了解為什麼我的 DNS 無法正常工作,是否需要首先查看?實際上,為什麼 DNS 請求不通過隧道並由 VPN 伺服器發送?$$ /EDIT $$ 我也嘗試過使用另一個 VPN(VPNGate),但我有同樣的行為。
一旦 openvpn 啟動,關於網路的一切都會變得非常緩慢。而且我什至不知道隧道是否在工作。
$$ EDIT $$我實際上認為隧道正在工作,但是如何確定不能載入單個網站?一切都很慢,我不知道為什麼。它可能來自我的配置,因為我想我不是唯一一個使用 VPNBook 的人,並且還嘗試與另一個 VPN 提供商獲得相同的結果。$$ /EDIT $$ $$ 2nd EDIT $$ 仍然被這個問題困擾,我正在閱讀一個教程以完全了解網路是如何工作的。目前我可以說的是,當 VPN 被啟動時,我在我的配置中看到了 2 件奇怪的事情。
首先,在為連接VPN而創建的“tun3”介面上,MAC地址全為0,不應該和我的其他介面一樣嗎?
tun3 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet addr:10.12.0.170 P-t-P:10.12.0.169 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1 RX packets:126 errors:0 dropped:0 overruns:0 frame:0 TX packets:358 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:16864 (16.4 KiB) TX bytes:35559 (34.7 KiB) wlan0 Link encap:Ethernet HWaddr b8:27:eb:e3:f8:56 inet addr:192.168.0.17 Bcast:192.168.0.255 Mask:255.255.255.0 inet6 addr: fe80::6dfb:5d45:2ae7:fe43/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:24791 errors:0 dropped:7790 overruns:0 frame:0 TX packets:19963 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:4974169 (4.7 MiB) TX bytes:2843776 (2.7 MiB)
二、路由表(開啟VPN時顯示很慢):
沒有 VPN:
Destination Gateway Genmask Flags Metric Ref Use Iface default 192.168.0.1 0.0.0.0 UG 303 0 0 wlan0 192.168.0.0 * 255.255.255.0 U 303 0 0 wlan0
使用 VPN:
Destination Gateway Genmask Flags Metric Ref Use Iface default 10.12.0.169 128.0.0.0 UG 0 0 0 tun3 default 192.168.0.1 0.0.0.0 UG 303 0 0 wlan0 10.12.0.1 10.12.0.169 255.255.255.255 UGH 0 0 0 tun3 10.12.0.169 * 255.255.255.255 UH 0 0 0 tun3 128.0.0.0 10.12.0.169 128.0.0.0 UG 0 0 0 tun3 176.126.237.217 192.168.0.1 255.255.255.255 UGH 0 0 0 wlan0 192.168.0.0 * 255.255.255.0 U 303 0 0 wlan0
這裡有 1 個我什至無法 ping 通的網關:10.12.0.169。實際上,我什至不明白為什麼我的這個新 IP 地址與我網路的其他部分完全不同。“tun3”不應該也有像 192.168.0.xxx 這樣的 IP 地址嗎?這個 IP 地址 10.12.0.170 是從哪裡來的?此外,除了通往我自己的本地網路的路由之外,所有目的地的網關不應該是 192.168.0.1(我的網際網路提供商)嗎?
這些是我目前覺得奇怪的事情,但我仍在閱讀網路教程,如果我有答案,我會回來的。
$$ /2nd EDIT $$
resolvconf
我設法通過安裝軟體包並進行更新和升級來使其工作。奇怪的是,我沒有任何消息說resolvconf
失去了。在resolvconf
安裝時,它說它需要uninstall openresolv
,所以它可能使用這個而不是resolvconf
.無論如何,這在當時有效,並且在重新啟動後有效。在那之後,我關閉了我的設備,現在,在沒有做任何更改的情況下,它無法解析主機名。它看起來像
resolvconf
沒有做任何事情。編輯:我還刪除了“dnsmasq 包”並在以下文件中添加了以下幾行,現在它正在工作。
/etc/host.conf
order hosts,bind # was missing multi off # was on
/etc/nsswitch.conf
# /etc/nsswitch.conf # # Example configuration of GNU Name Service Switch functionality. # If you have the `glibc-doc-reference' and `info' packages installed, try: # `info libc "Name Service Switch"' for information about this file. passwd: compat group: compat shadow: compat gshadow: files hosts: files myhostname mdns4_minimal [NOTFOUND=return] dns networks: files dns # dns was missing protocols: db files services: db files ethers: db files rpc: db files netgroup: nis
但是,它現在可以解析一些名稱,但不是全部。我可以解決
www.google.com
,但不是torrent.ubuntu.com
例如。即使我使用命令指定要使用的 DNS,連接到 VPN 時dig
也無法解析。torrent.ubuntu.com
當我沒有連接到VPN時,我可以解決它,我也可以使用我的VPN伺服器的DNS來解決它。