在 Raspbian 上与 OpenVPN 建立连接

在 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, [email protected]
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, [email protected]
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

这并没有改变任何事情。

[编辑] 由于我无法 ping 通主机名,我认为我仍然遇到 DNS 问题。我尝试了在互联网上看到的不同论坛内容,但没有一个起作用。为了了解为什么我的 DNS 不工作,是否需要先查看一下?实际上,为什么 DNS 请求不通过隧道并由 VPN 服务器发送? [/编辑]

我也尝试过使用另一个 VPN (VPNGate),但我也有同样的行为。

一旦 openvpn 启动,网络的一切都会变得非常慢。我什至不知道隧道是否正常工作。

[编辑] 我实际上认为隧道正在工作,但是如何在无法加载单个网站的情况下确定呢?一切都非常缓慢,我不知道为什么。它可能来自我的配置,因为我想我不是唯一使用 VPNBook 的人,并且也尝试过另一家 VPN 提供商,得到了相同的结果。 [/编辑]

[第二次编辑]

仍然被这个问题困扰,我正在阅读教程以完全理解网络是如何工作的。目前我可以说的是,当 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(我的互联网提供商)吗?

这些是我目前觉得奇怪的事情,但我仍在阅读网络教程,如果我有答案,我会回来提供答案。

[/第二次编辑]

答案1

resolvconf我设法通过安装软件包并进行更新和升级来使其工作。奇怪的是我没有收到任何消息说它resolvconf丢失了。安装时resolvconf,它说需要uninstall openresolv,所以它可能使用这个而不是resolvconf

无论如何,这在当时有效,并且在重新启动后也有效。之后,我关闭了设备,现在,在没有进行任何更改的情况下,它无法解析主机名。看起来好像resolvconf什么也没做。

编辑:我还删除了“dnsmasq 包”并在以下文件中添加了以下行,现在它可以工作了。

/etc/主机.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来解析它。

答案2

这看起来工作正常。

这是我得到的输出:

pi@raspberrypi:/etc/openvpn/vpnbook $ sudo openvpn --config vpnbook-euro1-tcp80.ovpn

然后一切都停止了,我无法再写入控制台。

这里发生的情况是,您在终端会话中启动了 OpenVPN 客户端,而不是作为服务启动。 (这对于调试来说非常有用,但在其他情况下就没那么有用了。)您无法再写入该终端窗口(或控制台)的原因是 OpenVPN 程序尚未完成。

或者,如果您从远程ssh连接启动它,则会出现更多复杂情况,导致您无法输入更多内容。 (见下文。)

您所展示的 VPN 配置明显预期的副作用之一是网络默认路由更改为通过 VPNBook(redirect-gateway配置项)。这意味着任何入站网络连接将无法继续。这还意味着,如果您的 DNS 服务器是由 ISP 提供的,您将无法使用它们来解析地址,因为您似乎不再位于 ISP 的托管网络上,因此他们不会允许这些请求。

如果您愿意更新您的问题以更详细地解释您想要实现的目标,我可能会通过一些建议来更新此问题。

答案3

我在您的一项编辑中注意到,您的 tun3 适配器设置为 noARP。 (上点运行 NOARP 组播)。如果 ARP 未运行,则不会将域名解析为 IP 地址。也许检查配置文件中是否有更改此设置的选项。

相关内容