You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Viscosity客户端连接VPN后DNS请求异常导致无法上网的问题排查与解决方案咨询

Viscosity客户端连接VPN后DNS请求异常导致无法上网的问题排查与解决方案咨询

我目前在macOS 14.2.1系统上使用Viscosity 1.10.8版本,朋友给了我一份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>

但连接上VPN后完全无法上网,奇怪的是这份配置文件在OpenVPN Connect客户端里能正常工作,所以我不确定问题是出在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)

这显然有问题,因为我的本地主机上并没有运行DNS服务。

为了完整说明情况,下面是VPN隧道激活后的路由表信息:

$ 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

目前我找到一个临时的 workaround:把Viscosity的DNS模式改成Split DNS,这样DNS请求就能通过本地解析器正常工作了。我用Viscosity搭配OpenVPN好多年了,之前都是直接导入*.ovpn文件就没问题,这次想找到不用手动修改的解决办法。

想请教大家,是需要让朋友修改服务器端的设置,还是我只需要调整客户端的.ovpn配置文件就能解决这个问题?

备注:内容来源于stack exchange,提问作者floatingpurr

火山引擎 最新活动