私の会社には、接続する必要がある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/
構成から、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.conf
をnameserver 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ネットワークを想定していますが、これは正しくない可能性があります。マスクを適切に設定する必要があります。
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をプレイさせる方法は明確ではありません(これは現在調べようとしていることです)。