site1にいる間、OpenVPNを介してsite2に接続する必要があります。接続すると、OpenVPN site2はDNSネームサーバーとドメイン検索オプションをプッシュします。これにより、site1 のすべての名前解決が失敗します。
例:
物理接続はsite1で行われ、DHCPはDNSオプションをプッシュし、resolvconfがそれを管理します。
/etc/resolv.conf# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8) # DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN nameserver 172.16.1.101 nameserver 172.16.1.102 search site1.internal.domain
site2のOpenVPNトンネルを開くと、OpenVPNはsite2のdhcpオプションDNSとDOMAINをプッシュし、
/etc/openvpn/update-resolv-conf
それをresolvconfにプッシュします。
/etc/resolv.conf# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8) # DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN nameserver 192.168.1.5 nameserver 172.16.1.101 nameserver 172.16.1.102 search site2.internal.domain site1.internal.domain
DNS 解決は server.site2.internal.domain では機能しますが、server.site1.internal.domain では機能しません。
site21の失敗したDNS要求をsite1 DNSサーバーに転送する方法はありますか?または、site2.internal.domainに対するクエリのみをsite2ネームサーバーに渡すようにresolvconfを設定しますか?
私はsite1でUbuntu 14.04システムを使用し、site2のOpenVPNサーバーはpfSense 2.2ボックスです。私は両方のサイトを管理しているので、どちらかを変更することは問題ではありません。どちらのドメインも非公開であり、内部使用にのみ使用されます。
答え1
スクリプトによって変更された内容を監視し、次からダウンロードできるように/etc/resolv.conf
ローカルキャッシュサーバーを設定できます。resolvconf
みんなネームサーバーがここに一覧表示されます。
多くのシステムからインストールDNSresolvconfを除くパッケージ。
no-resolv
とno-poll
ディレクティブがなく、インターフェイスがon topの/etc/dnsmasq.conf
場合、デフォルトは「動作」する必要があります。アップストリームネームサーバーが解決できないアドレスに対してランダムなIPを返す場合は、dnsmasq.confが役に立ちます。を見せてください。lo
/etc/resolvconf/interface-order
strict-order
/etc/resolv.conf
nameserver 127.0.0.1
固定設定を優先したり、関連していない複数のネットワークに接続したり、プライベートネットワーク名がすべてのネームサーバーに公開されないようにするには、ドメインに基づいて特定のサーバーを照会するようにdnsmasqを構成する必要があります。
# /etc/dnsmasq.conf
# site1 servers
nameserver=/site1.internal.domain/172.16.1.101
nameserver=/site1.internal.domain/172.16.1.102
# site2 servers
nameserver=/site2.internal.domain/192.168.1.5
# default OpenNIC (optional, unless 'no-resolv' is set).
server=51.15.98.97
server=172.104.136.243
dnsmasq オプションの詳細については、こちらをご覧ください。 http://oss.segetech.com/intra/srv/dnsmasq.conf
答え2
まだUbuntuではこれを試していませんが、openresolvとdnsmasqを使用してArch Linuxで同様の設定を取得できました。
すべての変更はVPNクライアントコンピュータで行われます。 VPNサーバーにはDNSネームサーバーとドメイン検索オプションがすでに含まれているため、変更する必要はありません。
- VPNに接続している場合は、
resolvconf -l
すべてのresolv.confファイルビューを使用してください。 VPNインターフェイスのresolvconf名(「resolv.conf from X」のX)を見つけます。私の場合はそうです。tun0
残りの構成でもこれを使用します。 - dnsmasqのインストール
/etc/resolvconf.conf
次のオプションを追加するには編集してください。private_interfaces=tun0 name_servers="::1 127.0.0.1" dnsmasq_conf=/etc/dnsmasq-conf.conf dnsmasq_resolv=/etc/dnsmasq-resolv.conf
/etc/dnsmasq.conf
次のオプションを追加するには編集してください。conf-file=/etc/dnsmasq-conf.conf resolv-file=/etc/dnsmasq-resolv.conf
resolvconf -u
dnsmasq設定ファイルを作成するには実行してください。dnsmasq
サービスを開始し、起動時に起動するように設定します。 Archは、次のコマンドを実行してこれを行います。systemctl start dnsmasq.service systemctl enable dnsmasq.service
このname_servers
オプションは、resolvconfにそのネームサーバーのみをリストするように指示します/etc/resolv.conf
(つまり、ローカルdnsmasqインスタンスを指します)。このオプションは、resolvconfにdnsmasq構成ファイルdnsmasq_
に書き込まれる/etc/resolv.conf
ネームサーバーを書き込むように指示します。
このprivate_interface
オプションは、このインターフェイス(VPN)によって提供されるネームサーバーが、この行で指定されたドメインの1つでホスト名を解決するときにのみ使用する必要があることをresolvconfに指示しますsearch
。これを達成するために、適切なdnsmasq構成が作成されます。
この構成では、site2.internal.domainの下のホストに対する要求は192.168.1.5に移動し、他のすべての要求は172.16.1.101または172.16.1.102に移動する必要があります。
システムがIPv6を使用していない場合は、オプションから::1を削除してくださいname_servers
。
答え3
resolv.confには、利用可能なすべてのDNSサーバーが一覧表示されます。リストの最初のエントリが実行中の場合、すべてのクエリがそのエントリに送信されます。最初のものが失敗しない限り、他のものには何の影響もありません。したがって、リストの最初のDNSサーバーが動作していて、答えを知っていれば「知っています!」と答え、そうでなければ「申し訳ありませんがわかりません...」と言います。それはすべてです。 site1のすべての項目を192.168.1.5(site2のDNSサーバー)に知らせる必要があり、その逆も同様です。挨拶