ネットワークマネージャーを介して openconnect vpn を動作させる

ネットワークマネージャーを介して openconnect vpn を動作させる

これはここでと同じ問題です:GUI 経由で OpenConnect VPN を動作させる、しかし、私が追加した内容は削除され、新しい質問を作成するように求められました。

実際、ここで同様の質問をしている人はたくさんいますが、全員の回答は 0 件です。

ソフトウェアバージョン:Ubuntu 14.04、オープンコネクト 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 を使用する場合、ネームサーバーが DNS 解決のためにアクセスするのは resolv.conf ではなくなりました。これが、コマンド ラインを使用する場合は機能するが、network-manager を使用する場合は機能しない理由です。代わりに、ネームサーバー 127.0.1.1 [dnsmasq] が追加され、そのネームサーバーに実際のネームサーバーの IP アドレスが伝えられます。

大きな利点は、VPN に接続すると、従来のようにすべての DNS トラフィックが VPN 経由でルーティングされるのではなく、その VPN によってアナウンスされたサブネットとドメインに関連する DNS クエリのみが送信されることです。

アップデート 上記のリンクで説明されているように dnsmasq を無効にすると、/etc/resolv.conf が設定されるため、問題は解決します。

ただし、これは本当の解決策ではなく、代替手段です。

答え1

VPN 経由で解決しようとしているホストと、Cisco VPN サーバーが送信している「DNS ドメイン」の間に不一致がないか確認します。

これを確認するには、ターミナルを開いて次のコマンドを実行します。

tail -f /var/log/syslog

次に、ネットワーク マネージャー経由で openconnect を起動します。次のような行を含む、大量の出力が表示されます。

12月5日 12:54:31 canoe NetworkManager[1266]: 内部DNS: 10.0.20.21

12月5日 12:54:31 canoe NetworkManager[1266]: 内部DNS: 10.10.3.32

12月5日 12:54:31 canoe NetworkManager[1266]: DNSドメイン: 'internal.example.com'

さらに下に行くと

12月5日 12:54:31 canoe dnsmasq[1871]: ドメインinternal.example.comのネームサーバー10.0.20.21#53を使用しています

internal.example.comこれは、VPN サーバーがクライアントに対して、 などの 内のホストを解決するために DNS サーバーを使用するように指示していることを意味しますserver.internal.example.com

私の場合は、解決する必要がありますserver.example.com(そして、何の結果も得られませんでした)。

私の場合の解決策は、VPN 設定にアクセスして、example.com追加の検索ドメインとして追加することでした。

ここに画像の説明を入力してください

設定を有効にするには、必ず VPN を切断してから再接続してください。

答え2

それで、私は満足のいく形でこの問題を解決しました。私は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 は、一般的なインターネット DNS 解決に ISP の 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. このクエリは、VPN 経由でアクセスできる 10.10.10.100 に送信されるため、残っているのは「server01.mywork.tld」の DNS 解決へのアクセスだけです。
  6. 内部 DNS が転送できるにもかかわらず、www.google.com をクエリすると失敗します。内部 DNS が問い合わせられることはないとしか考えられません。

私の職場でネットワークや DNS サーバーの IP アドレスが変更されない限り、この修正は機能し続けるようです。

少し曖昧ですが、これが完了するとワイヤレス NIC がデフォルトのネットワーク接続になるため、私の場合はうまくいくと思います。そのため、DNS クエリは Wi-Fi 経由で 8.8.8.8 に送信されます。"xyz.mywork.tld" に対するクエリは、dnsmasq によって 10.10.10.100 に送信されるよう指示されます。そのためのルートを設定してあるので、"vpn0" NIC 経由で送信され、"xyz.mywork.tld" の正しい 10.10.10.x IP アドレスが返されます。内部および外部ネットワークの DNS 解決がうまくいき、全員が満足しています。

関連情報