これはここでと同じ問題です: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 を解決できなくなったことです。つまり、インターネットが使えなくなったのです。
私の修正方法は次の通りです:
- NetworkManager で、「ネットワーク接続」の下の VPN 接続を編集しました。
- IPv4タブで、方法を「自動(VPN)アドレスのみ」に変更しました
- 仕事用の DNS サーバー (例: 10.10.10.100) と「mywork.tld」の「検索ドメイン」を追加しました
- 「ルート」をクリックします。
- 仕事用ネットワークをカバーするルートを追加します (例: 10.10.0.0 / 255.255.0.0、ゲートウェイ 10.10.10.253 <-- 「traceroute」から取得した VPN ゲートウェイ)。
- 次に、両方のオプションにチェックを入れました: i. 「自動的に選択されたルートを無視する」 ii. 「この接続をネットワーク上のリソースにのみ使用する」
私のコンピューターでは動作します。
何が起こったかについての私の理解は次のとおりです。
- 私の/etc/resolv.confはdnsmasqで設定されており、127.0.1.1を指しています。
- dnsmasq は、一般的なインターネット DNS 解決に ISP の DNS サーバーを使用しています。たとえば、ISP DNS は 8.8.8.8 だとします。
- VPN に接続すると、10.10.10.100 の DNS サーバーが dnsmasq への追加サーバーとして追加され、「mywork.tld」の DNS 解決に使用されます。
- VPN に接続すると、職場のファイアウォールでポート 53 から 8.8.8.8 の使用が許可されなくなるため、一般的なインターネットの解決ができなくなります。DNS はタイムアウトしてセカンダリ DNS サーバーに移動するはずですが、何らかの理由でそうならないのでしょうか?
- このクエリは、VPN 経由でアクセスできる 10.10.10.100 に送信されるため、残っているのは「server01.mywork.tld」の DNS 解決へのアクセスだけです。
- 内部 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 解決がうまくいき、全員が満足しています。