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


10

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

实际上,这里有很多人在问类似的问题,但都回答为0。

软体版本: ubuntu 14.04,openconnect 5.02

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

如果我通过sudo在终端中运行openconnect,则dns有效。

sudo openconnect -u <username> https://<vpn concentrator name>

更多细节:

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

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

2a。通过openconnect和network-manager连接时,将创建一个新接口'vpn0'。

2b。通过sudo和命令行连接时,将创建一个新接口'tun0'。

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

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

这是要求我输入密码的地方

NetworkManager[784]: <info> 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]: <warn> /sys/devices/virtual/net/vpn0: couldn't determine device driver; ignoring...
NetworkManager[784]: <info> VPN connection '<connection name>' (Connect) reply received.
openconnect[4544]: Attempting to connect to server <ip address>:443
openconnect[4544]: SSL negotiation with <correctly identified vpn server>
openconnect[4544]: Connected to HTTPS on <correctly identified vpn server>
openconnect[4544]: Got CONNECT response: HTTP/1.1 200 OK
openconnect[4544]: CSTP connected. DPD 30, Keepalive 20
NetworkManager[784]: <info> VPN connection '<connection name>' (IP Config Get) reply received.
NetworkManager[784]: <info> VPN connection '<connection name>' (IP4 Config Get) reply received.
NetworkManager[784]: <info> VPN connection '<connection name>' (IP6 Config Get) reply received.
NetworkManager[784]: <info> VPN Gateway: <ip address>
NetworkManager[784]: <info> Tunnel Device: vpn0
NetworkManager[784]: <info> IPv4 configuration:
NetworkManager[784]: <info>   Internal Address: 10.xxx.xxx.xxx
NetworkManager[784]: <info>   Internal Prefix: 19
NetworkManager[784]: <info>   Internal Point-to-Point Address: 10.xxx.xxx.xxx
NetworkManager[784]: <info>   Maximum Segment Size (MSS): 0
NetworkManager[784]: <info>   Forbid Default Route: no
NetworkManager[784]: <info>   Internal DNS: <ip address>
NetworkManager[784]: <info>   Internal DNS: <ip address>
NetworkManager[784]: <info>   DNS Domain: '(none)'
NetworkManager[784]: <info> IPv6 configuration:
NetworkManager[784]: <info>   Internal Address: <ipv6 ip>
NetworkManager[784]: <info>   Internal Prefix: 64
NetworkManager[784]: <info>   Internal Point-to-Point Address: <ipv6 ip>
NetworkManager[784]: <info>   Maximum Segment Size (MSS): 0
NetworkManager[784]: <info>   Forbid Default Route: no
NetworkManager[784]: <info>   DNS Domain: '(none)'
openconnect[4544]: Connected vpn0 as <ip address> + <ipv6 ip>, using SSL
openconnect[4544]: Established DTLS connection (using OpenSSL)
NetworkManager[784]: <info> VPN connection '<connection name>' (IP Config Get) complete.
NetworkManager[784]: <info> Policy set '<connection name>' (vpn0) as default for IPv4 routing and DNS.
NetworkManager[784]: <info> Policy set '<connection name>' (vpn0) as default for IPv6 routing and DNS.
NetworkManager[784]: <info> 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 <home search domain>
dnsmasq[1027]: using nameserver 127.0.0.1#53 for domain <vpn search domain>
dnsmasq[1027]: using nameserver <ip address>#53 for domain 10.in-addr.arpa
dnsmasq[1027]: using nameserver <ip address>#53 for domain <home search domain>
dnsmasq[1027]: using nameserver <ip address>#53 for domain <vpn search domain>
dnsmasq[1027]: using nameserver <ip address>#53 for domain 10.in-addr.arpa
dnsmasq[1027]: using nameserver <ip address>#53 for domain <home search domain>
dnsmasq[1027]: using nameserver <ip address>#53 for domain <vpn search domain>
dbus[471]: [system] Activating service name='org.freedesktop.nm_dispatcher' (using servicehelper)
NetworkManager[784]: <info> VPN plugin state changed: started (4)
NetworkManager[784]:    keyfile: updating /etc/NetworkManager/system-connections/<connection name>-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]: <warn> /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版本开始,在使用network-manager时,resolv.conf不再是名称服务器用于dns解析的地方。这就是为什么当我使用命令行而不是使用network-manager时它可以工作的原因。而是添加了名称服务器127.0.1.1 [dnsmasq],并告知该名称服务器实际的名称服务器的IP地址。

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

如上面的链接所述,通过禁用dnsmasq来进行更新可解决此问题,因为已填充了/etc/resolv.conf。

尽管这是一个回退,但这不是一个真正的解决方案。


为什么除了两个其他已编辑的IP地址之外,NetworkManager还会列出127.0.0.1?哪个名称服务器在本地运行并在127.0.0.1处侦听并能够解析VPN名称?
jdthood

我认为这只是用于DNS缓存。它不是一个“真实的”名称服务器。
zee 2015年

地址127.0.0.1列为NetworkManager获得的名称服务器地址。NetworkManager将此地址传递给dnsmasq用作转发地址。Dnsmasq将尝试将查询转发到该地址,该地址是回送地址。实际上在本地计算机上运行的名称服务器在该地址侦听查询吗?即使是这样,为什么NetworkManager在VPN启动期间报告地址?在我看来,您的VPN服务器配置错误,无法在VPN上提供127.0.0.1作为名称服务器地址。
jdthood

有趣的是,当我今天早上尝试连接时,该线路现在消失了,所以它只是集中器中的2个dns服务器。
zee 2015年

现在可以解析Internet名称吗?VPN名称?本地名称?请发布您说没有正确更新的resolv.conf的实际内容。您是否知道NetworkManager在默认情况下运行转发名称服务器(dnsmasq的实例),该服务器侦听127.0.1.1并将查询通过Network Manager通过DBus分配给它的地址转发到名称服务器?使用此转发名称服务器时nameserver,无论使用了多少个转发名称服务器,都仅在/etc/resolv.conf中的一行上列出其侦听地址。
jdthood 2015年

Answers:


0

检查您尝试通过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]:对域名internal.example.com使用名称服务器10.0.20.21#53

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

就我而言,我需要解决server.example.com(但没有得到任何结果)。

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

在此处输入图片说明

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


0

所以我已经足够令人满意地解决了这个问题。我在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. 然后,我勾选了两个选项:“忽略自动获得的路线” ii。“仅将此连接用于其网络上的资源”

在我的计算机上工作。

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

  1. 我的/etc/resolv.conf是使用dnsmasq设置的,并指向127.0.1.1
  2. dnsmasq使用我的ISP的DNS服务器进行常规Internet 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,因此我的一般Internet分辨率消失了。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解析,每个人都很高兴。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.