Adr*_*ian 4 vpn networking dns
我正在使用 Ubuntu 22.04,并且我一直在尝试使 VPN 连接在我的正常网络旁边工作。我想仅通过 VPN 为其网络路由流量(选择“仅将此连接用于其网络上的资源”)。
我还使用以下命令手动添加 DNS resolvectl
:
sudo resolvectl dns tun0 10.10.10.10
Run Code Online (Sandbox Code Playgroud)
之后,resolvectl
打印:
$ resolvectl
Global
Protocols: -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
resolv.conf mode: stub
Link 2 (enp2s0f0)
Current Scopes: DNS
Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: 192.168.1.1
DNS Servers: 192.168.1.1 fe80::267f:20ff:fe5b:bde9%21981
DNS Domain: home
Link 3 (wlp3s0)
Current Scopes: none
Protocols: -DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Link 4 (enx00e04c6800a3)
Current Scopes: none
Protocols: -DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Link 8 (tun0)
Current Scopes: DNS
Protocols: -DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: 10.10.10.10
DNS Servers: 10.10.10.10
Run Code Online (Sandbox Code Playgroud)
所以看来 DNS 服务器设置正确(enp2s0f0 为 192.168.1.1,tun0 为 10.10.10.10)。
可以通过 192.168.1.1 解析的公共域得到很好的解析。不幸的是,应该由 10.10.10.10 解析的域没有得到解析。
例如,当尝试internal.int
使用以下方法解决时dig
:
$ dig internal.int
; <<>> DiG 9.18.1-1ubuntu1-Ubuntu <<>> internal.int
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 55035
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;internal.int. IN A
;; Query time: 4 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Sun Jul 03 21:53:23 CEST 2022
;; MSG SIZE rcvd: 40
Run Code Online (Sandbox Code Playgroud)
但另一方面,当指定 10.10.10.10 作为 DNS 服务器时,它解析得很好:
$ dig internal.int @10.10.10.10
; <<>> DiG 9.18.1-1ubuntu1-Ubuntu <<>> internal.int @10.10.10.10
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 47904
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: 987649b09c83e7c9763943a462c1f3f6e8bdcf9b730a1234 (good)
;; QUESTION SECTION:
;internal.int. IN A
;; ANSWER SECTION:
internal.int. 3600 IN A 10.2.97.6
internal.int. 3600 IN A 10.2.97.7
;; Query time: 28 msec
;; SERVER: 10.10.10.10#53(10.10.10.10) (UDP)
;; WHEN: Sun Jul 03 21:54:30 CEST 2022
;; MSG SIZE rcvd: 100
Run Code Online (Sandbox Code Playgroud)
所以VPN总体上工作正常(路由很好,因为我可以到达10.10.10.10),解析公共域也工作正常(例如google.com),但似乎是systemd解析的(或者可能是其他东西?)不将 10.10.10.10 视为 DNS。
我的理解是,它应该使用 192.168.1.1 作为 DNS 来查找internal.int,如果失败,请尝试使用 10.10.10.10 解析地址。相反,当 192.168.1.1 无法解析时,它只是不返回任何地址。
是否可以使 systemd-resolved 同时使用 192.168.1.1 和 10.10.10.10 DNS 服务器?
PS 我尝试将 10.10.10.10 设置为enp2s0f0
192.168.1.1 旁边的辅助 DNS 服务器 - 但没有帮助。
我要做的基本上是:
sudo resolvectl dns tun0 10.10.10.10
sudo resolvectl domain tun0 ~.
Run Code Online (Sandbox Code Playgroud)
但每次我连接到 VPN 后都必须运行它。为了使此设置持久,我需要执行以下操作:
nmcli connection modify <VPN-connection-name> ipv4.dns-search ~.
resolvectl
显示tun0
(或类似)链接的正确 DNS 服务器和域:$ resolvectl
[...]
Link 21 (tun0)
Current Scopes: DNS
Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: 10.10.10.10
DNS Servers: 10.10.10.10
DNS Domain: ~.
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9072 次 |
最近记录: |