OpenVPN、resolvconf、およびDNSドメインの確認

OpenVPN、resolvconf、およびDNSドメインの確認

site1にいる間、OpenVPNを介してsite2に接続する必要があります。接続すると、OpenVPN site2はDNSネームサーバーとドメイン検索オプションをプッシュします。これにより、site1 のすべての名前解決が失敗します。

例:

  1. 物理接続は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
    
  2. 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
    
  3. 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-resolvno-pollディレクティブがなく、インターフェイスがon topの/etc/dnsmasq.conf場合、デフォルトは「動作」する必要があります。アップストリームネームサーバーが解決できないアドレスに対してランダムなIPを返す場合は、dnsmasq.confが役に立ちます。を見せてください。lo/etc/resolvconf/interface-orderstrict-order/etc/resolv.confnameserver 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ネームサーバーとドメイン検索オプションがすでに含まれているため、変更する必要はありません。

  1. VPNに接続している場合は、resolvconf -lすべてのresolv.confファイルビューを使用してください。 VPNインターフェイスのresolvconf名(「resolv.conf from X」のX)を見つけます。私の場合はそうです。tun0残りの構成でもこれを使用します。
  2. dnsmasqのインストール
  3. /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
    
  4. /etc/dnsmasq.conf次のオプションを追加するには編集してください。

    conf-file=/etc/dnsmasq-conf.conf
    resolv-file=/etc/dnsmasq-resolv.conf
    
  5. resolvconf -udnsmasq設定ファイルを作成するには実行してください。

  6. 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サーバー)に知らせる必要があり、その逆も同様です。挨拶

関連情報