web-dev-qa-db-ja.com

一部の指定されたドメイン名に対してのみdnsmasqが上流のDNSサーバーを使用するように強制する方法は?

現在、dnsmasq.confに次の行があります。これは、すべての要求を適切に処理します(/#/はどのドメインにも一致します。これは必須です)。

address=/#/127.0.0.1

ただし、127.0.0.1以外のIPアドレスに解決する必要があるドメインがいくつかあります。

一時的な解決策として、/etc/hostsに追加されました。

209.85.148.95   ajax.googleapis.com
207.97.227.245  underscorejs.org
72.21.194.31    s3.amazonaws.com

残念ながら、これは非常に一時的な解決策です。ターゲットドメインのIPアドレスが変更されるとすぐに機能しなくなります。

私の質問は、一部の(指定された)ドメイン名のIPアドレスを解決するために、上流のDNSサーバーを使用するようにdnsmasqを強制する方法ですか?

16
nrph

これを行うには、server=ディレクティブ。

server=/ajax.googleapis.com/8.8.8.8

同様に、GoogleパブリックDNSサーバーにajax.googleapis.comドメインをクエリします

server=/amazonaws.com/209.244.0.3

level3のパブリックDNSサーバーにamazonaws.comドメインを照会します。

複数のドメインをグループ化できます

server=/co.uk/com/8.8.4.4

.co.ukおよび.comドメインを8.8.4.4のDNSサーバーに送信します

複数のserver=ディレクティブも

−S、--server = [/ [<ドメイン>]/[ドメイン/]] [<ipaddr> [#<ポート>] [@ <ソース> [#<ポート>]]]

アップストリームサーバーのIPアドレスを直接指定します。このフラグを設定しても、/ etc/resolv.confの読み取りは抑制されません。これを行うには、-Rを使用します。 1つ以上のオプションのドメインが指定されている場合、そのサーバーはそれらのドメインにのみ使用され、指定されたサーバーのみを使用して照会されます。これは、プライベートネームサーバーを対象としています。192.168.1.1でxxx.internal.thekelleys.org.ukの形式の名前を処理するネームサーバーがネットワーク上にある場合は、フラグ-S /internal.thekelleys.org.uk/を指定します。 192.168.1.1は、内部マシンのすべてのクエリをそのネームサーバーに送信し、それ以外はすべて/etc/resolv.conf内のサーバーに送信します。空のドメイン指定//は、「非修飾名のみ」、つまりドットを含まない名前という特別な意味を持っています。非標準ポートは、#文字を使用してIPアドレスの一部として指定できます。複数の-Sフラグが許可され、必要に応じてdomainまたはipaddrの部分が繰り返されます。

-Sフラグも許可されています。これはドメインを提供しますが、IPアドレスは提供しません。これは、ドメインがローカルであり、/ etc/hostsまたはDHCPからのクエリに応答する可能性があることをdnsmasqに通知しますが、そのドメインのクエリを上流のサーバーに転送してはなりません。 localは、この場合、サーバーが構成ファイルをより明確にするための同義語です。

@文字の後のオプションの2番目のIPアドレスは、dnsmasqに、クエリのソースアドレスをこのネームサーバーに設定する方法を指示します。これは、dnsmasqが実行されているマシンに属するアドレスである必要があります。そうでない場合、このサーバー行はログに記録されて無視されます。送信元アドレスが指定されているサーバーではquery-portフラグは無視されますが、ポートは送信元アドレスの一部として直接指定できます。

29
user9517