前に述べたように 質問 同時に2つのVPNサーバーに接続したいのですが、接続ごとに、到達したいコンピューターのIPを指定します。このVPN接続の1つはvpnc
およびdefault.conf
ファイルを使用して行われ、もう1つはCiscoクライアントを使用して行われます(今のところ、少なくともvpnc
接続に必要なIPSecrete要素がないため)。
vpnc
を介して行われた接続で問題ありません。作成したインターフェイスを使用するようにターゲットIPを次のように構成して接続できます。
#!/bin/sh
#Get default gateway
DEFGW=`ip route list | grep default | awk -F' ' '{print $3 }'`
DEVICE=`ip route list | grep default | awk -F' ' '{print $5 }'`
echo "Default Gatway is: $DEFGW on device $DEVICE"
echo "Starting vpnc"
Sudo vpnc
echo "Adding routes to known computers through VPN network interface"
Sudo route add -net 132.181.11.0 netmask 255.255.255.0 dev tun0
echo "Adding all other routes through standard network interface"
Sudo route del default
Sudo route add default gw $DEFGW dev $DEVICE
現在、2つの接続を同時に実行する前に、Ciscoクライアントで同じことを実行しようとしていますが、resolv.conf
の問題に直面しています。このファイルは、VPNクライアントによってドメイン値とDNSサーバー値に変更されます。次のスクリプトを実行すると、DNS解決エラーが発生します(chromeによって報告されます)
#!/bin/sh
#Get default gateway
DEFGW=`ip route list | grep default | awk -F' ' '{print $3 }'`
DEVICE=`ip route list | grep default | awk -F' ' '{print $5 }'`
echo "Default Gatway is: $DEFGW on device $DEVICE"
echo "Starting Cisco"
Sudo /opt/Cisco/vpn/bin/vpn connect 134.214.244.203
echo "Adding routes to computers through VPN network interface"
Sudo route add -net 132.212.146.156 netmask 255.255.255.255 dev cscotun0
echo "Adding all other routes through standard network interface"
Sudo route del default
Sudo route add default gw $DEFGW dev $DEVICE
これに関するヘルプやコメント、および問題の解決は大歓迎です。
ありがとう
/etc/resolv.conf
は、コンピューターがホスト名を解決する方法(たとえば、FQDN以外のホスト名を解決しようとしたときにデフォルトのドメイン名が検索される場合...裸のwww
を検索するとwww.yourdomain.example.com
になります)、およびどのネームサーバーが使用されるかを定義しますルックアップを行います。
VPNクライアントが/etc/resolv.confを変更する理由の1つであり、最も可能性が高いのは、VPNクライアントコンピューターがホスト名解決に特定のネームサーバーを使用するようにすることです。 VPNルーターがキャッシングネームサーバーを実行している場合。
/etc/resolv.confを希望どおりに変更することを妨げるものは何もありません。VPNクライアントソフトウェアは、それを行う自動化された方法を提供することもできます(そうでない場合は、resolv.confのバックアップコピーをcpで戻すだけです)一部の名前を解決するのが難しい場合があります(たとえば、一部のドメインはパブリックビューとプライベートビューで設定されています-外部の人は「パブリック」の名前のみを表示し、VPNクライアントを含む内部の人はすべての内部プライベート名を表示同じように)。
これを解決する1つの方法は、元のresolv.confのバックアップコピーではなく、優先ネームサーバーと検索ドメインの両方、およびVPNクライアントソフトウェアが必要とするものを含む変更されたコピーをcpすることです。
/etc/resolv.conf
は、コンピューターが検索に使用する ネームサーバー をリストします [〜#〜] dns [〜#〜] 名前をリストします。パケットをコンピューターに送信するには、その IPアドレス を知っている必要がありますが、IPアドレスは(多かれ少なかれ)特定のインターネットサービスプロバイダーと場所に関連付けられており、変更できるため、そうではありません通常、コンピューターを指定するために使用されます。代わりに、DNS名が使用されます。
通常、インターネットアクセスを提供する人(ISPなど)は、使用するネームサーバーを提供します。もちろん、ネームサーバー自体にはIPアドレスを介してアクセスする必要があります。通常、 [〜#〜] dhcp [〜#〜] または [〜#〜] ppp [〜#〜] に接続すると、コンピューターはDNSサーバーアドレスを受信します、およびソフトウェアは/etc/resolv.conf
を自動的に更新して、プロバイダーのDNSサーバーのアドレスを追加し、切断時にそれらを削除します。
単純なケースでは、/etc/resolv.conf
にリストされている単一のDNSサーバーのみが必要です。そのサーバーは、クエリに対する回答がない場合、必要に応じて他のサーバーに問い合わせます。多くの場合、プロバイダーを介して、または大規模な組織内で接続すると、プライマリサーバーとプライマリサーバーがオフラインになった場合のフォールバックサーバーの2つのアドレスが表示されます。
Debianベースのディストリビューションでは、/etc/resolv.conf
の管理を行うため、resolvconf
パッケージがインストールされていることを確認してください(現在、Ubuntuの下でデフォルトでインストールされています)。通常は自動的に正しく処理されますが、正しくない場合は微調整が簡単です。
2つのVPNで単一のネームサーバーを使用できる場合は、動作するネームサーバーが/etc/resolv.conf
になるように調整します。できれば、DNSで上書きしたくないVPNクライアントを/etc/resolv.conf
で構成しないでください(適切なVPNクライアントには、構成ファイルまたはコンパニオンスクリプトのオプションとしてこれを設定する必要があります)。
複数のネームサーバーが必要な場合、たとえば、各VPNが異なる内部ネットワークへのアクセスを提供するため、要求をディスパッチする単一のネームサーバーに接続する必要があります。 dnsmasq をお勧めします。これは軽量で、構成が簡単で、ほとんどの単一マシンおよび小規模ネットワークのセットアップに十分強力です。独自のネームサーバーを実行する場合、/etc/resolv.conf
にはnameserver 127.0.0.1
が含まれている必要があり、他のnameserver
ディレクティブは含まれていないため、VPNクライアントがそれを上書きしないようにしてください。