4

ユーザーが VPN (OpenVPN) に接続するときに、ネットワーク サーバーの名前を解決するためだけに DNS サーバーをセットアップする必要があります。DNS サーバーの IP アドレスをクライアントに正常に「プッシュ」できます。ローカル ネットワークに Bind9 を使用して DNS サーバーをセットアップするのは簡単だと思い込んでいました。私は間違っていた。まず、Google から見つけたすべてのサンプルは、ローカル名ではなく、完全修飾ドメインに基づいています。私がローカル名と呼んでいるのは、「server1.my.company.com」ではなく、「server1」のようなものです。しかし、有名な「@」を発見しました。

今、私は別の問題を抱えています。「ping」または「nslookup」で「server1」を試すと、まさに私が望んでいることを行います。「server1」を内部 IP に解決します。偉大な。しかし、「www.google.com」を試してみると、IP の解決に失敗します。つまり、クライアントは、まだ DNS サーバーのリストにあるインターネット プロバイダーの DNS サーバーではなく、私の DNS サーバーを使用して「www.google.com」を解決しようとします。

クライアント マシンに伝える方法はありますか: I don't know this person, see someone else ?

「auth-nxdomain」がデフォルトで「no」に設定されていることに気付きました。「はい」に設定しようとしましたが、うまくいきません。

Ubuntu 9.04 の下に Bind9 の構成ファイルがあります。

/etc/bind/named.conf.options

options {
    directory "/var/cache/bind";

    // If there is a firewall between you and nameservers you want
    // to talk to, you may need to fix the firewall to allow multiple
    // ports to talk.  See http://www.kb.cert.org/vuls/id/800113

    // If your ISP provided one or more IP addresses for stable
    // nameservers, you probably want to use them as forwarders.
    // Uncomment the following block, and insert the addresses replacing
    // the all-0's placeholder.

    // forwarders {
    //      0.0.0.0;
    // };

    //auth-nxdomain no;    # conform to RFC1035
    auth-nxdomain yes;
    listen-on-v6 { any; };

    // To prevent the error ";; Got recursion not available from 10.8.0.1, trying next server"
    allow-recursion { 10.8.0.0/24; };
};

/etc/bind/named.conf.local

//
// Do any local configuration here
//

// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";

// This is the zone definition.
zone "@" {
 type master;
 file "/etc/bind/zones/vpn.db";
};

// This is the zone definition for reverse DNS.
zone "0.8.10.in-addr.arpa" {
 type master;
 file "/etc/bind/zones/rev.0.8.10.in-addr.arpa";
};

/etc/bind/zones/vpn.db

@  IN      SOA    vpn.local. admin.local. (
  2011041608  ; Serial
      604800  ; Refresh
       86400  ; Retry
     2419200  ; Expire
      604800  ; Negative Cache TTL
);

@  IN      NS     vpn.local.

server1         IN      A      10.8.0.1

/etc/bind/zones/rev.0.8.10.in-addr.arpa

@  IN      SOA    vpn.local. admin.local. (
  2011041608  ; Serial
      604800  ; Refresh
       86400  ; Retry
     2419200  ; Expire
      604800  ; Negative Cache TTL
);

@  IN      NS     vpn.local.
1  IN      PTR    mrsvn

「SOA」については何もわかりません。例から数字をコピーしました。そして、「vpn.local」についてはよくわかりません。および「admin.local」。とにかく、DNSサーバーは機能します。私は多くのことをしなければならないので、とても単純なタスクを実行する前に 1000 ページのテキストを読む時間はありません。サーバー側で自分の DNS サーバーにリクエストを転送する必要がありますか? オプションファイルの "forwarders {...}" を変更して試しましたが、うまくいきません。そして、VPN を介してすべての DNS 解決を行うという考えは好きではありません。解決策はありますか?

4

3 に答える 3

3

解決策を見つけました。まず、ゾーンをルート ゾーンとして定義する前に、フォワーダーが関与しませんでした。ゾーン「@」は、ルート ゾーンであるゾーン「.」を参照します。私がそれを発見したとき、いくつかの熟考の後、DNS クライアントがどの検索ドメインを構成できるかを思い出しました。

まず、ファイル/etc/bind/named.conf.localの次の行を変更しました。

zone "@" {

zone "vpn.my.company.com." {

その後、 /etc/bind/zones/ vpn.db/etc/bind/zones/rev.0.8.10.in-addr.arpaの「vpn.local」を置き換えました。「vpn.my.company.com」による。および「admin.local」。「admin.my.company.com」による。

最後に、OpenVPN の構成ファイルに、次の行を追加しました。

push "dhcp-option DOMAIN vpn.my.company.com"

私はすべてを再起動しました...そしてそれだけです!これですべてが解決されます。

編集: 他のドメインの名前解決を防止し、VPN の DNS サーバーがファイル/etc/bind/named.confでこれを行っていることを確認しました。

// prime the server with knowledge of the root servers
zone "." {
        type master;
        //type hint;
        file "/etc/bind/db.root";
        allow-query { 127.0.0.0/8; 192.168.0.0/16; };
};

このようにして、他のドメインはクライアントのインターネット プロバイダーの DNS サーバーから解決されます。

于 2012-06-22T21:06:17.410 に答える
3

実際には、内部 DNS サーバーに外部ドメインを解決させることもできます。それはあなたの問題を解決するはずです。私はまったく同じ問題に取り組み、内部 DNS にdnsmasqを使用していました。

独自の内部 DNS を試した後、VPN ゲートウェイ マシンの DNS サーバーが Google DNS を使用するように設定することで、問題を解決しました。したがって、/etc/resolv.conf の DNS 構成は次のようになります。

nameserver 127.0.0.1
nameserver 8.8.8.8
于 2012-06-22T01:38:08.213 に答える
1

バインド転送クエリを他のネーム サーバーに応答できないようにするには、他の DNS サーバーの IP アドレスを のforwardersセクションに入力する必要があります/etc/bind/named.conf.options

このセクションはファイル内でコメントアウトされているため、Bind はクエリを転送する場所を認識できません。

// forwarders {
//      0.0.0.0;
// };

たとえば、ISP の DNS サーバーまたは Google Public DNS サーバーを使用できます。

forwarders {
       //Google public DNS
       8.8.8.8;
       8.8.4.4;
};

このセクションには、好きなだけエントリを入れることができます。

于 2012-06-22T01:37:12.210 に答える