Networking

在 Raspbian 上與 OpenVPN 建立連接

  • March 28, 2017

我正在嘗試使用 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來解決它。

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