ポイントを見てみましょう:

ポイントを見てみましょう:

ポイントを見てみましょう:

私が持っている具体的な質問の1つは、10.0.3.X/24ネットワークのクライアントにアクセスできないことですsubdomain.site.com。 1.4を呼び出すときに10.0.2.X/24および10.0.3.X/24のクライアントを有効にするにはどうすればよいですかsubdomain.site.com


私のWebサーバーLANのDNS解決を実行するためにWAN側のドメイン名を使用したいと思います。subdomain.site.com例:NすべてのLANサブネットのクライアントあるいは、適切なルーティングのsubdomain.site.comために入力するだけです(拡張可能なので不可能です)。site.com/etc/hosts

私のLANには、以下を使用して作成された複数のサブネットがあります。発光ダイオード(ネットワーク。1)とオープンWRT(ネットワーク2とネットワーク3):

10.0.1.X/24 Main puppy with WAN interface facing internet and NAT, web server fixed at 10.0.1.4 with ports forwarded
10.0.2.X/24 Auxiliary router with WAN interface facing 10.0.1.X/24 (routed)
10.0.3.X/24 Auxiliary router with WAN interface facing 10.0.1.X/24 (routed)

ヘアピンNAT /ループバックNATソリューションは必要ありません。私は次の理由でDNSを使用するソリューションを好みます。

  1. クライアントからの発信は特権DNSを呼び出してIP(ルーティングのために!)を検索し、パケットをその宛先に送信します。
  2. 到着すると、サーバーにDNATが割り当てられます。
  3. 送信元 IP はクライアントのローカルアドレスであるため、サーバーはパケットの送信元 IP を使用してクライアントを直接呼び出します。
  4. クライアントは、このパケットがゲートウェイからゲートウェイ拡張から間接的に出ると予想するため、このパケットを拒否します。住所上記のDNSで提供されています。
  5. NATループバックは、アウトバウンドソースIPをゲートウェイのLAN側アドレスに変換することによってこの問題を解決します。作る
  6. その後、サーバーはクライアントに直接応答せずにゲートウェイに応答します。冷たい豆。

このトラフィックの問題は、LANを離れてグローバルDNSサーバーに接続してIPアドレスを取得することが非効率的であることです。サーバーがローカルピアの場合(NATの同じ側にあり、私の場合は必ずしも同じローカルサブネット内にある必要はありません)、クライアントとサーバーがローカルピアの場合はLANを離れるのはなぜですか?ループバック NAT フローの詳細な説明はここで確認できます。 https://unix.stackexchange.com/a/282094/33386

私はこれを使って私が望むことを達成できることを知っています。DNS分割地平線それとも最近、人々が呼ぶ人気のある用語が何であれ。また、場合によっては、グローバルネームサーバーよりもローカルネームサーバーに優先順位を付けることもこの問題を解決することがあります。複数のサブネット(複数のDHCP + DNSサーバー)を使用するときにOpenWRTまたはLEDEでこの機能を実装する方法は?誰かがこのようなことをしたでしょう。

現在、10.0.1.X/24のクライアントは、対応するsubdomain.site.comdnsmasq設定を使用してアクセスできますが、/etc/config/dhcpこれがサブドメインを含まないと考えているので、理由がわかりません。

config domain
        option name 'site.com'
        option ip '10.0.1.4' # LAN address of web server

答え1

最初の欠落要素

dnsmasq構成に2つを追加する必要がありました。セカンダリルータファイルから/etc/config/dhcp

    list server '10.0.1.1'# Clients will still get 10.0.3.1 as dns server
    list rebind_domain 'subdomain.site.com' # Allow rebind to web server

list serverdnsmasqがDNSクエリを10.0.1.1(プライマリルータdnsmasqサーバー)のサーバーに転送するようにします。list rebind_domainDNSリバインディング保護が維持されるように、特定のサイトのリバインディングを許可します。ここに「jow」をありがとう。別のオプションは、DNSリバインディング保護を完全に無効にすることです。または使用することもできますが、option rebind_localhost 1テストしませんでした。このステップがないとpingできませんsubdomain.site.com

2番目の欠落要素

次の項目を追加します/etc/dnsmasq.confメインルーター

address=/.site.com/10.0.1.4

.すべてのサブドメインのプレースホルダーを確認してください。この変更はまだ実装できますが、どのように実装/etc/config/dhcpされるかはよくわかりません。

元の2番目の欠落要素(制限付き)

これが私が後であきらめた最初の解決策でした。 webdavを使用するときなど、拡張URLのサブドメインやプレースホルダがないという制限を10.0.1.4 subdomain.site.com適用して、デフォルトのルータファイルにエントリ()を追加しました。/etc/hosts

127.0.0.1 localhost

::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
10.0.1.4 subdomain.site.com

logqueries 1すべてのDNSクエリログを追加して/etc/config/dhcpテストします。次のような内容が表示され、これがソースであることを/etc/hosts示します。

Fri Jan  5 14:11:20 2018 daemon.info dnsmasq[7368]: 73 10.0.3.149/64299 /etc/hosts subdomain.site.com is 10.0.1.4

何がうまくいきませんでしたか?

/etc/config/dhcp驚くべきことに、プライマリルータの次の設定は10.0.1.X/24サブネット内でのみ機能します。

config domain
        option name 'site.com'
        option ip '10.0.1.4'

config domain
        option name 'subdomain.site.com'
        option ip '10.0.1.4'

誰もがこれについて明らかにすることができれば、その理由を知りたいです!たぶん何か間違っているのでしょうか?

セカンダリルータを追加することも私の状況にあまり役に立たないようですoption dns 10.0.1.1/etc/config/network

config interface 'lan'
        option ifname  'eth0.1'
        option force_link '1'
        option type    'bridge'
        option proto   'static'
        option ipaddr  '10.0.2.1'
        option netmask '255.255.255.0'
        option dns     '10.0.1.1'

config interface 'wan'
        option ifname 'eth0.2' # Comment this out if connecting as sta using wlan
        option proto   'dhcp'
        option netmask '255.255.255.0'
        option gateway '10.0.1.1'
        option dns     '10.0.1.1'

このオプションを追加すると、項目がに表示されますcat /tmp/resolv.conf.auto。しかし、list server 10.0.1.1上記のようにWANインターフェイスが追加されましたnameserver 10.0.1.1

セカンダリルータにdhcp_optionsを追加しても/etc/config/dhcp役に立ちません。

config dhcp 'lan'
        option interface 'lan'
        option start '100'
        option limit '150'
        option leasetime '72h'
        option ra 'server'
        #list 'dhcp_option' '3,10.0.1.1' # SET DEFAULT GATEWAY, CAUTION CAN BREAK STUFF
        #list 'dhcp_option' '6,10.0.1.1' # SEND DNS SERVER ADDR TO CLIENTS, CAUTION CAN BREAK STUFF

答え2

分割地平線またはローカルネームサーバーが必要です。

10.0/16 の後ろのクライアントに、そのsubdomain.example.comゾーンに対する特権を持つローカルネームサーバーを指すようにし、それ以外の場合は繰り返します。これは、別々のネームサーバーまたは分割範囲を介して達成できます。

以下の2つの例には、タスクを実行するための最小限の事項が含まれています。セキュリティの問題やその他の構成の詳細は、この質問の範囲外です。

私は読書を強くお勧めしますDNSガイドそしてDNSとバインディング、そのような順序で。


水平に分割

view "internal" {
  match-clients { // Add any other "on-net" blocks here.
    localnets;
    127.0.0.1;
  };
  recursion yes;

  zone "example.com" in {
    type master;
    file "internal/example.com"; // Contains RFC1918 addresses for on-net hosts
  };

  zone "." in {
    type hint;
    file "root.cache";
  };
};

view "external" {
  recursion no;
  zone "example.com" in {
    type master;
    file "external/example.com"; // Contains public IPs for hosts
  };
};

独立ドメインネームサーバー

これは通常の BIND インスタンスですが、内部ゾーンに対する権限を持つように構成されます。

options {
  recursion yes;
  // and any other options you want
};

zone "example.com" in {
  type master;
  file "example.com"; // Contains the RFC1918 addresses.
};

zone "." in {
  type hint;
  file "root.cache";
};

関連情報