让openconnect vpn通过网络管理器工作

这是与此处相同的问题: 让openconnect vpn通过gui工作 ,但我对它的添加被删除,我被要求创建一个新问题。

事实上,有很多人在这里提出类似的问题,都有0个回复。

软件版本: ubuntu 14.04,openconnect 5.02

主要问题:我正在尝试使用openconnect将vpn连接添加到网络管理器中。 当我提供我的VPN用户名和密码,它成功连接,但我无法解决DNS。

如果我通过sudo在终端上运行openconnect,dns可以工作。

sudo openconnect -u  https:// 

更多细节:

1A。 当通过openconnect和network-manager连接时,即使我在ipv4选项卡下明确添加了dns和搜索域,只有搜索域最终会出现在/etc/resolv.conf中。 即使我不提供DNS和搜索域,我可以在日志中看到它从vpn集中器获取该信息。 再次,搜索域正确更新。 [在下面记录]

1B。 当通过sudo on在终端上连接时,resolv.conf使用dns和搜索域正确填充,即使我没有在命令行中添加该信息或提供了vpnc脚本的路径。 它必须从vpn集中器获取它。 [日志也在下面]

2A。 当通过openconnect和network-manager连接时,会创建一个新接口’vpn0’。

2B。 通过sudo和命令行连接时,会创建一个新接口’tun0’。

通过网络管理器连接时记录:

 NetworkManager[784]:  Starting VPN service 'openconnect'... NetworkManager[784]:  VPN service 'openconnect' started (org.freedesktop.NetworkManager.openconnect), PID 4513 NetworkManager[784]:  VPN service 'openconnect' appeared; activating connections NetworkManager[784]:  VPN plugin state changed: init (1) 

这是它要求我的密码

 NetworkManager[784]:  VPN plugin state changed: starting (3) NetworkManager[784]: SCPlugin-Ifupdown: devices added (path: /sys/devices/virtual/net/vpn0, iface: vpn0) NetworkManager[784]: SCPlugin-Ifupdown: device added (path: /sys/devices/virtual/net/vpn0, iface: vpn0): no ifupdown configuration found. NetworkManager[784]:  /sys/devices/virtual/net/vpn0: couldn't determine device driver; ignoring... NetworkManager[784]:  VPN connection '' (Connect) reply received. openconnect[4544]: Attempting to connect to server :443 openconnect[4544]: SSL negotiation with  openconnect[4544]: Connected to HTTPS on  openconnect[4544]: Got CONNECT response: HTTP/1.1 200 OK openconnect[4544]: CSTP connected. DPD 30, Keepalive 20 NetworkManager[784]:  VPN connection '' (IP Config Get) reply received. NetworkManager[784]:  VPN connection '' (IP4 Config Get) reply received. NetworkManager[784]:  VPN connection '' (IP6 Config Get) reply received. NetworkManager[784]:  VPN Gateway:  NetworkManager[784]:  Tunnel Device: vpn0 NetworkManager[784]:  IPv4 configuration: NetworkManager[784]:  Internal Address: 10.xxx.xxx.xxx NetworkManager[784]:  Internal Prefix: 19 NetworkManager[784]:  Internal Point-to-Point Address: 10.xxx.xxx.xxx NetworkManager[784]:  Maximum Segment Size (MSS): 0 NetworkManager[784]:  Forbid Default Route: no NetworkManager[784]:  Internal DNS:  NetworkManager[784]:  Internal DNS:  NetworkManager[784]:  DNS Domain: '(none)' NetworkManager[784]:  IPv6 configuration: NetworkManager[784]:  Internal Address:  NetworkManager[784]:  Internal Prefix: 64 NetworkManager[784]:  Internal Point-to-Point Address:  NetworkManager[784]:  Maximum Segment Size (MSS): 0 NetworkManager[784]:  Forbid Default Route: no NetworkManager[784]:  DNS Domain: '(none)' openconnect[4544]: Connected vpn0 as  + , using SSL openconnect[4544]: Established DTLS connection (using OpenSSL) NetworkManager[784]:  VPN connection '' (IP Config Get) complete. NetworkManager[784]:  Policy set '' (vpn0) as default for IPv4 routing and DNS. NetworkManager[784]:  Policy set '' (vpn0) as default for IPv6 routing and DNS. NetworkManager[784]:  Writing DNS information to /sbin/resolvconf dnsmasq[1027]: setting upstream servers from DBus dnsmasq[1027]: using nameserver 127.0.0.1#53 for domain 10.in-addr.arpa dnsmasq[1027]: using nameserver 127.0.0.1#53 for domain  dnsmasq[1027]: using nameserver 127.0.0.1#53 for domain  dnsmasq[1027]: using nameserver #53 for domain 10.in-addr.arpa dnsmasq[1027]: using nameserver #53 for domain  dnsmasq[1027]: using nameserver #53 for domain  dnsmasq[1027]: using nameserver #53 for domain 10.in-addr.arpa dnsmasq[1027]: using nameserver #53 for domain  dnsmasq[1027]: using nameserver #53 for domain  dbus[471]: [system] Activating service name='org.freedesktop.nm_dispatcher' (using servicehelper) NetworkManager[784]:  VPN plugin state changed: started (4) NetworkManager[784]: keyfile: updating /etc/NetworkManager/system-connections/-6a503043-13b0-4ce7-9749-29cd3054cae3 dbus[471]: [system] Successfully activated service 'org.freedesktop.nm_dispatcher' 

尽管日志中有关于更新resolv.conf的所有噪音,但它会删除名称服务器,但不会将其替换为日志中的IP地址。 它确实正确更新了搜索域,因此可能不是权限问题。

使用终端中的sudo openconnect连接时记录:

 NetworkManager[784]: SCPlugin-Ifupdown: devices added (path: /sys/devices/virtual/net/tun0, iface: tun0) NetworkManager[784]: SCPlugin-Ifupdown: device added (path: /sys/devices/virtual/net/tun0, iface: tun0): no ifupdown configuration found. NetworkManager[784]:  /sys/devices/virtual/net/tun0: couldn't determine device driver; ignoring... dbus[471]: [system] Activating service name='org.freedesktop.hostname1' (using servicehelper) kernel: [ 3258.725774] systemd-hostnamed[4927]: Warning: nss-myhostname is not installed. Changing the local hostname might make it unresolveable. Please install nss-myhostname! dbus[471]: [system] Successfully activated service 'org.freedesktop.hostname1' 

没有关于更新resolv.conf,但它正确更新名称服务器和搜索域。

更新如果我忽略resolv.conf中的所有警告并添加vpn集中器名称服务器,我立即能够浏览。 当然,一旦我断开连接,这些更改就会被覆盖。

早在2012年就出现了一个错误 ,但它过期了。 问题似乎是vpnc脚本。

我尝试手动将我的vpnc脚本更新到最新版本,但无济于事。

进一步的研究表明,自12.04起,resolv.conf不再是名称服务器在使用网络管理器时进行dns解析的地方。 这就是为什么它在我使用命令行时有效,但在使用网络管理器时无效。 而是添加名称服务器127.0.1.1 [dnsmasq],并告诉名称服务器实际名称服务器的IP地址。

最大的好处是,如果您连接到VPN,而不是像过去那样通过VPN路由所有DNS流量,而是仅发送与该VPN宣布的子网和域相关的DNS查询

更新禁用dnsmasq,如上面链接中所述解决了问题,因为填充了/etc/resolv.conf。

虽然这是一个后备,但这不是一个真正的解决方案。

检查您尝试通过VPN解析的主机与Cisco VPN服务器正在发送的“DNS域”之间是否存在不匹配。

要检查这一点,请打开终端并运行:

tail -f /var/log/syslog

然后通过网络管理器启动openconnect。 你会看到一大堆输出,包括这样的一些行:

12月5日12:54:31独木舟NetworkManager [1266]:内部DNS:10.0.20.21

12月5日12:54:31独木舟NetworkManager [1266]:内部DNS:10.10.3.32

12月5日12:54:31独木舟NetworkManager [1266]:DNS域名:’internal.example.com’

再往下看,你会看到

12月5日12:54:31独木舟dnsmasq [1871]:使用域名10.0.20.21#53进行域名internal.example.com

这意味着VPN服务器正在指示客户端应使用DNS服务器来解析internal.example.com主机,例如server.internal.example.com

在我的情况下,我需要解析server.example.com (并没有得到任何结果)。

对我来说,解决方案是进入VPN设置并将example.com添加为其他搜索域:

在此处输入图像描述

不要忘记断开VPN连接,然后重新连接以使设置生效。

所以我已经足够令人满意地解决了这个问题。 我在Mint 18 / Ubuntu 16.04

我的问题是,一旦我通过NetworkManager连接到Openconnect VPN,我就无法再为我的工作域之外的域解析DNS。 即我丢失了互联网!

我的解决方法是:

  1. 在NetworkManager中,我在“网络连接”下编辑了VPN连接。
  2. 在IPv4选项卡中,将方法更改为“仅自动(VPN)地址”
  3. 添加了我的工作DNS服务器(例如10.10.10.100)和“mywork.tld”的“搜索域”
  4. 单击“路线”。
  5. 添加覆盖我的工作网络的路由,例如10.10.0.0 / 255.255.0.0和10.10.10.253的网关< - 我从“traceroute”获得的VPN网关。
  6. 然后我勾选了两个选项:i。 “忽略自动选择路线”ii。 “仅将此连接用于其网络上的资源”

适用于我的电脑。

我对发生的事情的理解是:

  1. 我的/etc/resolv.conf是用dnsmasq设置的,并且指向127.0.1.1
  2. dnsmasq正在使用我的ISP的DNS服务器进行一般的互联网DNS解析。 例如,ISP DNS就是8.8.8.8。
  3. 我连接到VPN,10.10.10.100的DNS服务器作为附加服务器添加到dnsmasq,用于“mywork.tld”DNS解析。
  4. 一旦我上VPN,我的工作防火墙不再允许我使用端口53到8.8.8.8,所以我的一般互联网分辨率消失了。 DNS应该超时并转到辅助DNS服务器,但它不是出于某种原因?
  5. 我只能访问“server01.mywork.tld”的DNS解析,因为此查询转到10.10.10.100,我可以通过VPN访问。
  6. 如果我查询www.google.com它失败了,即使我的内部DNS可以转发。 我只能假设从未询问过我的内部DNS。

只要我的工作不改变他们的网络或DNS服务器IP地址,我的修复似乎仍然有效。

我有点朦胧,但我觉得它对我有用,因为一旦完成,我的无线网卡就成了我的默认网络连接。 所以DNS查询通过wifi转到8.8.8.8。 dnsmasq告诉“xyz.mywork.tld”的任何查询都转到10.10.10.100。 我为此设置了一个路由,以便通过“vpn0”NIC返回“xyz.mywork.tld”的正确10.10.10.x IP地址。 Bingo bango内部和外部网络的DNS解析,每个人都很高兴。