ポイントを見てみましょう:
私が持っている具体的な質問の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を使用するソリューションを好みます。
- クライアントからの発信は特権DNSを呼び出してIP(ルーティングのために!)を検索し、パケットをその宛先に送信します。
- 到着すると、サーバーにDNATが割り当てられます。
- 送信元 IP はクライアントのローカルアドレスであるため、サーバーはパケットの送信元 IP を使用してクライアントを直接呼び出します。
- クライアントは、このパケットがゲートウェイからゲートウェイ拡張から間接的に出ると予想するため、このパケットを拒否します。住所上記のDNSで提供されています。
- NATループバックは、アウトバウンドソースIPをゲートウェイのLAN側アドレスに変換することによってこの問題を解決します。作る
- その後、サーバーはクライアントに直接応答せずにゲートウェイに応答します。冷たい豆。
このトラフィックの問題は、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.com
dnsmasq設定を使用してアクセスできますが、/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 server
dnsmasqがDNSクエリを10.0.1.1(プライマリルータdnsmasqサーバー)のサーバーに転送するようにします。list rebind_domain
DNSリバインディング保護が維持されるように、特定のサイトのリバインディングを許可します。ここに「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_option
sを追加しても/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";
};