DNS 暂时无法使用 VPN 地址

DNS 暂时无法使用 VPN 地址

我正在终端上或通过网络管理器使用 vpnc 连接到 Lubuntu 15.10 上的公司网络。有时我可以很好地访问内网主机,但突然它们就消失了。然后他们回来了。我没有更改任何设置,我的连接很稳定。这非常令人沮丧。

我通常可以通过他们的 IP 联系到他们,但不能通过他们的主机名。这是相隔仅 5 分钟的 dig 的输出,一次失败,另一次则没有。

; <<>> DiG 9.9.5-11ubuntu1-Ubuntu <<>> some.intranet.host
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7423
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1280
;; QUESTION SECTION:
;some.intranet.host.        IN  A

;; ANSWER SECTION:
some.intranet.host. 3500    IN  A   10.0.20.107

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Thu Dec 10 18:46:17 CET 2015
;; MSG SIZE  rcvd: 65

; <<>> DiG 9.9.5-11ubuntu1-Ubuntu <<>> some.intranet.host
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 17766
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1280
;; QUESTION SECTION:
;some.intranet.host.        IN  A

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Thu Dec 10 19:06:35 CET 2015
;; MSG SIZE  rcvd: 49

我不擅长网络设置并且很难调试它。连接到 VPN 时我的 resolv.conf 的内容:

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 127.0.0.1
search intranet.host intranet fritz.box

ifconfig tun0
tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:172.16.0.138  P-t-P:172.16.0.138  Mask:255.255.255.0
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1412  Metric:1
          RX packets:46575 errors:0 dropped:0 overruns:0 frame:0
          TX packets:36452 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:500 
          RX bytes:45875777 (45.8 MB)  TX bytes:4059895 (4.0 MB)

更新:

尽管停用 dnsmasq,我可以在重新启动后看到正在运行的进程,并且我的 resolv.conf 仍然保留 127.0.0.1 作为名称服务器。终止该进程后,我无法再解析网址。我想我需要手动从 resolv.conf 中取出名称服务器?

$ grep dnsmasq /etc/NetworkManager/NetworkManager.conf
#dns=dnsmasq

$ ps aux|grep dnsmas
dnsmasq   1730  0.0  0.0  49580  3052 ?        S    16:26   0:00 /usr/sbin/dnsmasq -x /var/run/dnsmasq/dnsmasq.pid -u dnsmasq -r /var/run/dnsmasq/resolv.conf -7 /etc/dnsmasq.d,.dpkg-dist,.dpkg-old,.dpkg-new --local-service

答案1

Ubuntu 出厂dnsmasq时默认启用。 Dnsmasq 是 1) DNS 缓存代理(为了性能)和 2) DHCP 服务器。我找不到为什么与典型家庭路由器通信的典型家庭用户需要 dnsmasq 来复制路由器提供的这两项服务的原因。

第一步是禁用 dnsmasq:

$ grep dnsmasq /etc/NetworkManager/NetworkManager.conf 
#dns=dnsmasq
$ sudo service network-manager restart
$ sudo killall dnsmasq

首先,最好确认您的网络连接保持不变。如果您发现 DNS 性能受到影响,我会感到惊讶。

火起来vpnc;我也手动运行它,没有 NetworkManager 帮助我。您可能需要将默认路由重新指向您的 VPN。您可以使用以下命令找到 VPN 隧道伪设备ifconfig:我的名字是tun0

$ sudo route del default ; sudo route add default tun0

我建议将它们保留在一根线上,以防没有默认路由器堵塞您的终端(不应该,但是......)。

上面的第一个代码块只完成一次。如果需要更改默认路由,则每次使用 VPN 时都需要进行更改。我有一个简单的脚本可以完成所有这些工作,我没有在这里发布,因为如果没有更好地理解 NetworkManager,我认为它过于本地化。

答案2

我现在在 Debian bullseye/sid/unstable 下针对相同客户端/VPN 情况的工作设置是从等式中取出 NetworkManager。

  1. 删除 NetworkManager(那么您可能无法通过常规托盘图标 GUI 连接到 Wifi!)

    sudo apt 删除网络管理器-gnome 网络管理器 sudo apt 安装 dnsmasq

  2. 使用简单的自定义 dnsmasq 配置。

文件:/etc/dnsmasq.d/你的名字

# Use my router as default
server=192.168.2.1
# Use some-company dns for intranet hosts
server=/some-company.com/10.49.123.5
server=/.foo/10.49.123.5

可以选择添加这两行以通过日志进行调试:

log-queries
log-dhcp

文档位于:https://wiki.ubuntuusers.de/Dnsmasq/

  1. 确保/etc/resolv.conf不是符号链接并使其指向 dnsmasq。这很重要,因为 vpn 脚本向上/向下脚本可能会尝试更改文件并弄乱连接/断开连接时的配置。

文件:/etc/resolv.con

nameserver 127.0.0.1

YMMV:由于我仍然看到某些内容覆盖了我的 /etc/resolf.conf,因此我在 /etc/dhcp/dhclient.conf 的末尾添加了一行:

supersede domain-name-servers 127.0.0.1;                                                                                            
  1. 重启服务

    /etc/init.d/networking restart
    sudo /etc/init.d/dnsmasq restart

当我连接或未连接到 VPN 时,这最终使其适用于非公司和公司地址。

相关内容