我在用着粘度1.10.8 在 macOS 14.2.1 上。我的一个朋友刚刚给我发了以下适用于我客户的 OpenVPN 配置文件:
client
dev tun
remote <MY FRIEND'S IP> 1194 tcp
tun-mtu 1500
tls-client
nobind
ping 15
ping-restart 45
ping-timer-rem
mute-replay-warnings
verb 3
cipher AES-128-CBC
auth SHA1
auth-user-pass
remote-cert-tls server
redirect-gateway def1
<ca>
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
</ca>
然而,一旦连接,我就根本无法上网。奇怪的是,相同的配置文件与 OpenVPN 连接客户端兼容,所以我不确定这个问题是否与 Viscosity 严格相关,或者更普遍地说,与 OpenVPN 设置相关。
nslookup
结合使用tcpdump
,我发现问题与 DNS 请求有关。如果我启动捕获,然后发出nslookup www.google.it
,我会得到以下输出:
$ sudo tcpdump -ni any port 53
tcpdump: data link type PKTAP
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on any, link-type PKTAP (Apple DLT_PKTAP), snapshot length 524288 bytes
18:30:19.403577 IP 127.0.0.1.55553 > 127.0.0.1.53: 14064+ A? www.google.it. (31)
18:30:19.403591 IP 127.0.0.1.55553 > 127.0.0.1.53: 14064+ A? www.google.it. (31)
18:30:20.404482 IP6 ::1.50658 > ::1.53: 14064+ A? www.google.it. (31)
18:30:20.404503 IP6 ::1.50658 > ::1.53: 14064+ A? www.google.it. (31)
18:30:25.409492 IP 127.0.0.1.55553 > 127.0.0.1.53: 14064+ A? www.google.it. (31)
18:30:25.409523 IP 127.0.0.1.55553 > 127.0.0.1.53: 14064+ A? www.google.it. (31)
18:30:26.414496 IP6 ::1.50658 > ::1.53: 14064+ A? www.google.it. (31)
18:30:26.414531 IP6 ::1.50658 > ::1.53: 14064+ A? www.google.it. (31)
这毫无意义,因为 localhost 上没有运行 DNS。为了完成此场景,以下是使用活动隧道的路由:
$ netstat -nr -f inet
Routing tables
Internet:
Destination Gateway Flags Netif Expire
0/1 192.168.10.1 UGScg utun10
default 192.168.1.1 UGScg en5
default 192.168.10.1 UGScIg utun10
<FRIEND'S IP>/32 192.168.1.1 UGSc en5
127 127.0.0.1 UCS lo0
127.0.0.1 127.0.0.1 UH lo0
128.0/1 192.168.10.1 UGSc utun10
169.254 link#13 UCS en5 !
192.168.1 link#13 UCS en5 !
192.168.1.1/32 link#13 UCS en5 !
192.168.1.1 10:71:b3:94:ce:70 UHLWIir en5 1199
192.168.1.100/32 link#13 UCS en5 !
192.168.1.100 0:e0:4c:68:0:40 UHLWI lo0
192.168.10 192.168.10.42 UGSc utun10
192.168.10.1/32 link#24 UCS utun10
192.168.10.1 link#24 UHWIir utun10
192.168.10.42 192.168.10.42 UH utun10
224.0.0/4 link#13 UmCS en5 !
224.0.0/4 link#24 UmCSI utun10
224.0.0.251 1:0:5e:0:0:fb UHmLWI en5
239.255.255.250 1:0:5e:7f:ff:fa UHmLWI en5
239.255.255.250 link#24 UHmW3I utun10 2400
255.255.255.255/32 link#13 UCS en5 !
255.255.255.255/32 link#24 UCSI utun10
最后,这是连接时 Viscosity 的日志:
Opened utun device utun10
/sbin/ifconfig utun10 delete
NOTE: Tried to delete pre-existing tun/tap instance -- No Problem if failure
/sbin/ifconfig utun10 192.168.10.42 192.168.10.42 netmask 255.255.255.0 mtu 1500 up
/sbin/route add -net 192.168.10.0 192.168.10.42 255.255.255.0
/sbin/route add -net <MY FRIEND'S IP> 192.168.1.1 255.255.255.255
/sbin/route add -net 0.0.0.0 192.168.10.1 128.0.0.0
/sbin/route add -net 128.0.0.0 192.168.10.1 128.0.0.0
Initialization Sequence Completed
DNS mode set to Full
State changed to Connected
作为 Viscosity 的临时解决方法,我设置DNS 模式拆分 DNS,DNS 通过我的本地解析器工作。多年来,我一直在 OpenVPN 上使用 Viscosity,只需导入 *.ovpn 文件即可,没有任何问题。同样在这种情况下,我想找到一种方法来避免这种手动解决方法。我需要告诉我的朋友她应该在服务器端进行一些更改吗?或者我可以通过修改 client.ovpn 文件来修复吗?
答案1
对于那些感兴趣的人而言,结果证明这是 VPN 服务器的 DNS 配置问题。