web-dev-qa-db-ja.com

VPNに接続するときに1つのDNSのみを使用するネットワーク

私の会社には、接続する必要があるVPNがあります。 OSXでは、次の構成でopenvpnを使用してこれを行います。

client
dev tun
proto udp
remote <GATEWAY_ADDRESS> <PORT>
resolv-retry infinite
nobind
user nobody
group nobody
persist-key
persist-tun
ca /Users/Tommy/.openvpn/dev/ca-dev.crt
cert /Users/Tommy/.openvpn/dev/tommy.brunn-20131122-dev.crt
key /Users/Tommy/.openvpn/dev/tommy.brunn-20131122-dev.key
ns-cert-type server
tls-auth /Users/Tommy/.openvpn/dev/ta-dev.key 1
cipher BF-CBC
comp-lzo
verb 3
auth-nocache
;daemon
;writepid openvpn.pid

Ubuntuでは、network-manager-openvpnをインストールし、同じ設定オプションを設定して新しいVPN接続を追加しました(設定ファイルをインポートしようとするとクラッシュしました): スクリーンショットの設定

VPNに接続したら、ドメインをまったく解決できません。

/etc/NetworkManager/NetworkManager.confを編集し、dns=dnsmasq行をコメントアウトしてnetwork-managerを再起動すると、会社の内部ドメインを解決できますが、google.comなどの他のドメインはまったく解決しません。 VPN接続のネットワークマネージャーの[IPv4]タブと[IPv6]タブで[メソッド]を[自動(VPN)アドレスのみ]に設定しましたが、違いはないようです。

また、dnsmasqを再度有効にし、/etc/resolvconf/resolv.conf.d/baseを含むようにnameserver 127.0.1.1を変更してからSudo resolveconf -uを実行しようとしましたが、ドメインは再び解決されません。

会社のDNSサーバーによってプッシュされたドメインがそのように解決され、他のすべてのドメインが正常に解決されるように、VPNに接続できるようにしたいです。

編集:dnsmasqが実際にはインストールされていなかったことが判明しました。これはデフォルトでインストールされると思いました。それでも、インストールして/etc/NetworkManager/NetworkManager.confで再度有効にし、/etc/resolvconf/resolv.conf.d/baseにローカルネームサーバーアドレスを追加し、すべてのサービスを再起動してVPNに接続すると、会社のDNSからドメインを解決できますが、他のドメインを解決できません。したがって、基本的にdnsmasqを完全に無効にしたときと同じ状況です。

編集:/etc/dnsmasq.confの内容: http://paste.ubuntu.com/7297231/

9
Tommy Brunn

構成から、dnsmasqインストールは/etc/resolv.confから使用するDNSサーバーのリストを取得しています。デフォルトでは、dnsmasqは稼働しているDNSサーバーの使用を優先しようとしますが、指定された要求のみを単一のDNSサーバーに送信します。これは、特定のクエリのみを処理できる/するDNSサーバーが複数ある場合に問題を引き起こす可能性があります。

LANにDNSサーバー(VPNに接続していないときに使用するサーバー)を/etc/resolv.confで設定し、DNSサーバーをDNSサーバーに設定することで、この問題を解決できると思います。 VPN経由で使用する企業ネットワーク。

次に、/etc/default/dnsmasqを編集し、DNSMASQ_OPTS=行を追加または編集して、--all-serversを含める必要があります。

それでもこの設定でDNSクエリを取得できない場合は、上記の手順で作成したresolv.confファイルを~/resolv.confなどの別の場所にコピーし、/etc/resolv.confnameserver 127.0.0.1で設定し、 /etc/dnsmasq.confで次のオプションを設定します。

resolv-file=/home/your_username/resolv.conf

DNSのdnsmasqインストールを照会するようにシステムを構成する必要があります。また、照会ごとにローカルDNSサーバーとVPN DNSサーバーの両方を使用します。

編集nmcliツールを使用して、特定の接続に現在使用しているDNSサーバーを見つけることができます。ワイヤレス接続で使用されているDNSサーバーを見つけるために、次の構文を使用しました。

nmcli dev list iface wlan0 | grep IP4.DNS

VPNに接続していないときにこのコマンドを実行し、接続して企業アドレスを解決できるようになったときに、DNSサーバーのリストをVPN上でオンまたはオフにする必要があります。これがお役に立てば幸いです。

編集2:ルーティングテーブルを見ると、VPN管理者が接続中にすべてのトラフィックをVPN経由でルーティングするように設定しているようです(デフォルトゲートウェイはVPNアドレスに変更されます)。両方のDNSサーバーがパブリックアドレスであり、VPN上に特定のルートが設定されていないため、VPNを介して通常のDNSルックアップを実行しようとしており、それが失敗しています。

VPNの設定に応じて、この作業を行う方法がいくつかあります。

  • VPNで企業ネットワークを介してインターネットにアクセスできるが、インターネット上のサーバーへのDNSクエリを実行できない場合は、次のようにDNSサーバーにルートを追加します:Sudo route add -Host 83.255.245.11 gw 192.168.0.1およびSudo route add -Host 193.150.193.150 gw 192.168.0.1 VPN。

  • VPNで企業ネットワーク経由でインターネットにアクセスできない場合は、VPNに接続した後、コンピューターのデフォルトゲートウェイ設定を192.168.0.1を指すように変更する必要があります。この場合、通常のデフォルトゲートウェイを設定し、ネットワークルートを追加してVPNのみの機器にアクセスします。

2番目のPastebinに示されているVPNに接続されたケースでは、ルーティングテーブルを次のように小さくする必要がある場合があります。

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.1     0.0.0.0         UG    0      0        0 eth0
192.168.0.0     0.0.0.0         255.255.255.0   U     1      0        0 eth0
10.100.0.0      10.100.0.105    255.255.255.0   UGH   0      0        0 tun0
10.100.0.105    0.0.0.0         255.255.255.255 UH    0      0        0 tun0

次に、企業の機器にアクセスするために必要なルートを追加します。上記のルーティングテーブルでは、VPN上の/ 24ネットワークを想定していますが、これは正しくない可能性があります。マスクを適切に設定する必要があります。

3
jkt123

NetworkManagerがあなたのために物事を調整する方法に関連して、あなたのために埋めることができないいくつかのギャップがあります。ただし、それが調整するものがどのように機能する必要があるかを明確にしようとします。完全な答えではありませんが、うまくいけば便利です。実際、これは古い質問であるため、これは本当に後世のためです。

おそらく、企業ネットワークへの接続を除き、企業VPNを使用したくないでしょう。その場合は、VPNセットアップが適切なネットワーク範囲のみをVPNにルーティングし、ローカルルーターを指すデフォルトルートを以前のように維持する方が良いでしょう。企業がトラフィックまたはネットワークのみをルーティングするようにVPNを設定するのは良いことですが、残念ながらそれはまれなようです。幸いなことに、ローカル設定でルートを設定できます。

それでも、潜在的なDNS問題が残っています。 DNSでdnsmasqが行うことに関するjtk123のコメントは、dnsmasq固有ではありません-これがDNSの仕組みです。 DNSクライアントまたは中間リゾルバがDNSエントリが存在しないという応答を受け取った場合、別のDNSサーバーに問い合わせることにフォールバックすることは通常の動作ではありません。つまり、要求が会社のネットワークに関連しているかどうかに応じて、必要に応じて応答するDNSリゾルバが必要です。

あなたの会社のネットワークがより広範なインターネットに関連するDNSクエリに応答するかもしれません。その場合、あなたはそれを使うだけで、おそらく大丈夫でしょう。それ以外の場合は、会社に関連付けられたドメインの要求をDNSサーバーに転送し、必要に応じて他の場所に他の要求を転送するローカルDNSサーバーが必要です。

dnsmasqは、特定のドメインの要求を特定のアップストリームDNSサーバーに転送するように指示できます。例えばdnsmasq.confのマニュアルページに概説されている--serverオプションを参照してください。それを使ってnetworkmanagerにNiceをプレイさせる方法は明確ではありません(これは現在調べようとしていることです)。

0
mc0e