我最近安装了 OpenBSD 5.9,并试图让它发挥足够的功能来替代 Debian。我遇到困难的一件事是连接到我的 VPN。我使用商业 VPN,我很乐意在多个 Linux 发行版下使用它。
openvpn 配置文件如下所示:
client
dev tun
proto udp
remote germany.vpnprovider.com 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
tls-client
remote-cert-tls server
auth-user-pass
comp-lzo
verb 1
reneg-sec 0
crl-verify crl.pem
这就是我所做的...
# openvpn /etc/openvpn/Germany.ovpn
输出:
Mon Apr 25 00:20:35 2016 OpenVPN 2.3.10 x86_64-unknown-openbsd5.9 [SSL (OpenSSL)] [LZO] [MH] [IPv6] built on Feb 25 2016
Mon Apr 25 00:20:35 2016 library versions: LibreSSL 2.3.2, LZO 2.09
Enter Auth Username:
Enter Auth Password:
Mon Apr 25 00:21:02 2016 UDPv4 link local: [undef]
Mon Apr 25 00:21:02 2016 UDPv4 link remote: [AF_INET]46.166.190.202:1194
Mon Apr 25 00:21:02 2016 WARNING: this configuration may cache passwords in memory -- use the auth-nocache option to prevent this
Mon Apr 25 00:21:02 2016 [VPN PROVIDER] Peer Connection Initiated with [AF_INET]46.166.190.202:1194
Mon Apr 25 00:21:05 2016 TUN/TAP device tun0 exists previously, keep at program end
Mon Apr 25 00:21:05 2016 TUN/TAP device /dev/tun0 opened
Mon Apr 25 00:21:05 2016 do_ifconfig, tt->ipv6=0, tt->did_ifconfig_ipv6_setup=0
Mon Apr 25 00:21:05 2016 /sbin/ifconfig tun0 10.199.1.6 10.199.1.5 mtu 1500 netmask 255.255.255.255 up
add net 46.166.190.202: gateway 192.168.0.1
add net 0.0.0.0: gateway 10.199.1.5
add net 128.0.0.0: gateway 10.199.1.5
add net 10.199.1.1: gateway 10.199.1.5
Mon Apr 25 00:21:05 2016 Initialization Sequence Completed
最后一行似乎表明事情进展顺利......但是,当我想连接到互联网时,我什么也没有得到。在 Firefox 中打开网站不起作用,也无法对其执行 ping 操作。
$ ping -c 3 www.google.com
这只是挂起(我没有得到任何输出)但是,ping 名称服务器确实有效。
$ ping -c 3 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: icmp_seq=0 ttl=46 time=40.946 ms
64 bytes from 8.8.8.8: icmp_seq=1 ttl=46 time=38.382 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=46 time=39.153 ms
--- 8.8.8.8 ping statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/std-dev = 38.382/39.494/40.946/1.074 ms
我一直在互联网上寻找答案,但没有发现任何有效的方法。关于在 OpenBSD 上使用商业 VPN 的信息非常少。在我看来,为我的IPtun0
或其他东西获取IP是有问题的。我已启用ip.forwarding
并ip6.forwarding
尝试/etc/sysctl.conf
了其他操作,但无济于事。 Linux使用openresolv来更新/etc/resolv.conf
,但我不知道如何在OpenBSD中实现它......
更新
根据请求,我的/etc/resolv.conf
启动后(如果未连接到以太网电缆,trunk0 ups iwn0):
# Generated by trunk0 dhclient
search home
nameserver 195.130.131.5
nameserver 195.130.130.5
lookup file bind
我的resolv.conf
连接到 VPN 后没有改变...所以我检查了resolv.conf
连接到 VPN 时在 Debian 中的样子,连接到 VPN 后我在 OpenBSD 上手动更改了/etc/resolv.conf
,瞧,地址得到解析,我的 IP 似乎在德国 (Whatismyipaddress.com)。除了通过 Debian .conf 添加两个名称服务器之外,我没有更改文件中的任何内容。
我想现在的问题是这不会自动发生。我应该为此编写一些脚本还是有更好/标准化的方法来做到这一点?我完全做错了吗?我该去哪里?
感谢到目前为止的帮助...我的网络知识非常有限。
更新2(解决了吗?)
我想出的解决方案如下:正如我上面所解释的,一旦我在 中指定了所需的名称服务器,我就可以访问互联网/etc/resolv.conf
。这样做的问题是dhclient
每次运行时都会覆盖该文件的内容。放入名称服务器/etc/resolv.conf.tail
不起作用,因为此文件是在之后获取的/etc/resolv.conf
,并且不会首先选择添加的名称服务器。
我的解决方案是将它们放入/etc/dhclient.conf
例如:
prepend domain-name-servers 210.232.10.246;
prepend ...;
这样,首先尝试这些名称服务器,然后根据需要自动(半)自动连接到 VPN。
仍然让我有点困扰的是我必须指定这些名称服务器。通过 Debian 上的 NetworkManager,当连接到 VPN 时,可以以某种方式找到并动态添加这些名称服务器。如果有人知道更多,请赐教。有没有少一点的黑客式的解决方案?
最后,如果没有其他/更好的答案出现,我想我会将我的解决方案添加为“答案”......
答案1
我的解决方案是将它们放入/etc/dhclient.conf
例如:
prepend domain-name-servers 210.232.10.246;
prepend ...;
这样,这些名称服务器会首先被尝试,而不是在将它们放入 时/etc/resolv.conf.tail
,并且根据需要自动(半)自动连接到 VPN。
要详细了解如何得出此解决方案以及为什么我对它不是 100% 满意,请参阅我更新的问题。