我安装了 OpenVPN 服务器一段时间,并使用所有互联网流量都通过的网关选项。
它适用于 Windows 和我的 Android 手机等客户端计算机,但在我的 ubuntu 笔记本上相同的 Open VPN 客户端配置似乎不起作用。客户端连接到 VPN 服务器,但互联网流量似乎没有被路由。
连接处于活动状态时 ping vpn 服务器确实有效: ping 10.8.0.1
所以我不确定缺少什么。到目前为止我尝试了以下选项
- 添加到客户端路由配置:route 10.8.0.0/24
- 尝试通过控制台添加路由配置: sudo route add -net 10.8.0.0/24 gw 10.8.0.1 dev tun0 但它会变成一个错误,尽管 vpn 已启动并正在运行,但网络无法访问
- 关闭我的 ubuntu 客户端上的防火墙
任何帮助或提示表示赞赏。谢谢
服务器配置:
port 443
proto tcp
dev tun
ca ...
cert ...
key ...
dh ...
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypasss-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
client-to-client
keepalive 10 120
comp-lzo
persist-key
persist-tun
status ...
log ...
verb 3
客户端配置:
client
dev tun
proto tcp
remote www.serverdomain.com 443
resolv-retry infinite
nobind
persist-key
persist-tun
comp-lzo
verb 3
remote-cert-tls server
# route 10.8.0.0/24 --> adding such a route made no difference
客户端 ifconfig:
tun0
Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:10.8.0.10 P-t-P:10.8.0.9 Mask:255.255.255.255
inet6 addr: fe80::b393:268c:61db:72d4/64 Scope:Link
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:47 errors:0 dropped:0 overruns:0 frame:0
TX packets:93 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:4394 (4.3 KB) TX bytes:7012 (7.0 KB)
wlp1s0
Link encap:Ethernet HWaddr a4:34:d9:5c:9d:06
inet addr:192.168.0.130 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::5e97:3a8f:9596:8c30/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:24879 errors:0 dropped:0 overruns:0 frame:0
TX packets:17473 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:14983497 (14.9 MB) TX bytes:2721828 (2.7 MB)
客户端日志输出:
Thu Nov 3 21:03:25 2016 OpenVPN 2.3.10 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [EPOLL] [PKCS11] [MH] [IPv6] built on Feb 2 2016
Thu Nov 3 21:03:25 2016 library versions: OpenSSL 1.0.2g-fips 1 Mar 2016, LZO 2.08
Thu Nov 3 21:03:25 2016 Socket Buffers: R=[87380->87380] S=[16384->16384]
Thu Nov 3 21:03:25 2016 Attempting to establish TCP connection with [AF_INET]188.62.xx.xx:443 [nonblock]
Thu Nov 3 21:03:26 2016 TCP connection established with [AF_INET]188.62.xx.xx:443
Thu Nov 3 21:03:26 2016 TCPv4_CLIENT link local: [undef]
Thu Nov 3 21:03:26 2016 TCPv4_CLIENT link remote: [AF_INET]188.62.xx.xx:443
Thu Nov 3 21:03:26 2016 TLS: Initial packet from [AF_INET]188.62.xx.xx:443, sid=ff1258e5 f87eeaf5
Thu Nov 3 21:03:26 2016 VERIFY OK: depth=1, C=CH, ST=ZH, L=Hinwil, O=xxx, OU=IT, CN=xxxx, name=xxxx, emailAddress=xxxx.ch
Thu Nov 3 21:03:26 2016 Validating certificate key usage
Thu Nov 3 21:03:26 2016 ++ Certificate has key usage 00a0, expects 00a0
Thu Nov 3 21:03:26 2016 VERIFY KU OK
Thu Nov 3 21:03:26 2016 Validating certificate extended key usage
Thu Nov 3 21:03:26 2016 ++ Certificate has EKU (str) TLS Web Server Authentication, expects TLS Web Server Authentication
Thu Nov 3 21:03:26 2016 VERIFY EKU OK
Thu Nov 3 21:03:26 2016 VERIFY OK: depth=0, C=CH, ST=ZH, L=Hinwil, O=xxxx, OU=IT, CN=xxxx, name=xxxxx, emailAddress=xxxx.ch
Thu Nov 3 21:03:26 2016 Data Channel Encrypt: Cipher 'BF-CBC' initialized with 128 bit key
Thu Nov 3 21:03:26 2016 Data Channel Encrypt: Using 160 bit message hash 'SHA1' for HMAC authentication
Thu Nov 3 21:03:26 2016 Data Channel Decrypt: Cipher 'BF-CBC' initialized with 128 bit key
Thu Nov 3 21:03:26 2016 Data Channel Decrypt: Using 160 bit message hash 'SHA1' for HMAC authentication
Thu Nov 3 21:03:26 2016 Control Channel: TLSv1.2, cipher TLSv1/SSLv3 DHE-RSA-AES256-GCM-SHA384, 2048 bit RSA
Thu Nov 3 21:03:26 2016 [xxxx] Peer Connection Initiated with [AF_INET]188.62.xx.xx:443
Thu Nov 3 21:03:28 2016 SENT CONTROL [diabolo]: 'PUSH_REQUEST' (status=1)
Thu Nov 3 21:03:29 2016 PUSH: Received control message: 'PUSH_REPLY,redirect-gateway def1 bypass-dhcp,dhcp-option DNS 8.8.8.8,dhcp-option DNS 8.8.4.4,route 10.8.0.0 255.255.255.0,topology net30,ping 10,ping-restart 120,ifconfig 10.8.0.6 10.8.0.5'
Thu Nov 3 21:03:29 2016 OPTIONS IMPORT: timers and/or timeouts modified
Thu Nov 3 21:03:29 2016 OPTIONS IMPORT: --ifconfig/up options modified
Thu Nov 3 21:03:29 2016 OPTIONS IMPORT: route options modified
Thu Nov 3 21:03:29 2016 OPTIONS IMPORT: --ip-win32 and/or --dhcp-option options modified
Thu Nov 3 21:03:29 2016 ROUTE_GATEWAY 192.168.0.1/255.255.255.0 IFACE=wlp1s0 HWADDR=a4:34:d9:5c:9d:06
Thu Nov 3 21:03:29 2016 TUN/TAP device tun0 opened
Thu Nov 3 21:03:29 2016 TUN/TAP TX queue length set to 100
Thu Nov 3 21:03:29 2016 do_ifconfig, tt->ipv6=0, tt->did_ifconfig_ipv6_setup=0
Thu Nov 3 21:03:29 2016 /sbin/ip link set dev tun0 up mtu 1500
Thu Nov 3 21:03:29 2016 /sbin/ip addr add dev tun0 local 10.8.0.6 peer 10.8.0.5
Thu Nov 3 21:03:29 2016 /sbin/ip route add 188.62.79.43/32 via 192.168.0.1
Thu Nov 3 21:03:29 2016 /sbin/ip route add 0.0.0.0/1 via 10.8.0.5
Thu Nov 3 21:03:29 2016 /sbin/ip route add 128.0.0.0/1 via 10.8.0.5
Thu Nov 3 21:03:29 2016 /sbin/ip route add 10.8.0.0/24 via 10.8.0.5
Thu Nov 3 21:03:29 2016 Initialization Sequence Completed
客户端netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 10.8.0.9 128.0.0.0 UG 0 0 0 tun0
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 wlp1s0
10.8.0.0 10.8.0.9 255.255.255.0 UG 0 0 0 tun0
10.8.0.9 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
128.0.0.0 10.8.0.9 128.0.0.0 UG 0 0 0 tun0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 wlp1s0
188.62.xx.xx 192.168.0.1 255.255.255.255 UGH 0 0 0 wlp1s0
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 wlp1s0
答案1
我可以通过降低以太网/无线网卡的“指标”来解决这个问题。您可以通过“route”命令或使用附加工具“降低网卡路由条目的指标(优先级)”如果度量" (sudo apt-get install ifmetric) 即 ifmetric eth0 100 (0 = 最高优先级)
之后我认识到,当 VPN 连接建立时,来自 openvpn 服务器的 DNS 条目尚未被接管。所以我用谷歌搜索了一下,找到了一个答案,你需要在 ubuntu 客户端的配置文件中添加以下几行:
script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf
当使用服务器推送的条目建立 VPN 连接时,这会更新“/etc/resolv.conf”中的 DNS 条目。
所以它现在作为一种魅力发挥作用。
答案2
尝试:
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
答案3
可能是安装 OpenVPN Linux 客户端的权限吗?因为它没有创建一个TUN。所以我自己做了一个(这是实际的问题):
sudo ip tuntap add name tun0 mode tun
sudo ip link show
在询问 VPN 用户名和密码后它就连接了,现在终于有了互联网连接。
来源:https://www.naturalborncoder.com/virtualization/2014/10/17/understanding-tun-tap-interfaces
尝试官方 openvpn3-linux 客户端和安装程序的替代解决方案应该为您进行配置:https://github.com/OpenVPN/openvpn3-linux