Momentan habe ich die folgende Zeile in dnsmasq.conf, die alle Anfragen gut verarbeitet ( /#/
stimmt mit jeder Domäne überein; das ist erforderlich):
address=/#/127.0.0.1
Es gibt jedoch einige Domänen, die in andere IP-Adressen als aufgelöst werden müssen 127.0.0.1
.
Als vorübergehende Lösung wurden sie hinzugefügt zu /etc/hosts
:
209.85.148.95 ajax.googleapis.com
207.97.227.245 underscorejs.org
72.21.194.31 s3.amazonaws.com
Leider ist dies eine sehr vorübergehende Lösung: Sie funktioniert nicht mehr, sobald sich die IP-Adresse einer Zieldomäne ändert.
Meine Frage lautet: Wie kann ich dnsmasq dazu zwingen, einen Upstream-DNS-Server zum Auflösen der IP-Adressen einiger (angegebener) Domänennamen zu verwenden?
Antwort1
Sie können dies tun, indem Sie server=
beispielsweise die Direktive verwenden
server=/ajax.googleapis.com/8.8.8.8
würde den öffentlichen DNS-Server von Google nach der Domäne ajax.googleapis.com abfragen, ähnlich
server=/amazonaws.com/209.244.0.3
würde den öffentlichen DNS-Server von Level3 nach der Domäne amazonaws.com abfragen.
Sie können mehrere Domänen zusammenfassen
server=/co.uk/com/8.8.4.4
Würde die .co.uk- und .com-Domänen an den DNS-Server unter 8.8.4.4 senden
Sie können server=
auch mehrere Anweisungen haben
−S, --server=[/[<Domäne>]/[Domäne/]][<IP-Adresse>[#<Port>][@<Quelle>[#<Port>]]]
Geben Sie die IP-Adresse der Upstream-Server direkt an. Das Setzen dieses Flags unterdrückt nicht das Lesen von /etc/resolv.conf, verwenden Sie dazu -R. Wenn eine oder mehrere optionale Domänen angegeben sind, wird dieser Server nur für diese Domänen verwendet und sie werden nur über den angegebenen Server abgefragt. Dies ist für private Nameserver gedacht: Wenn Sie in Ihrem Netzwerk einen Nameserver haben, der mit Namen der Form xxx.internal.thekelleys.org.uk unter 192.168.1.1 umgeht, werden durch das Setzen des Flags -S /internal.thekelleys.org.uk/192.168.1.1 alle Abfragen für interne Maschinen an diesen Nameserver gesendet, alles andere geht an die Server in /etc/resolv.conf. Eine leere Domänenangabe, //, hat die besondere Bedeutung „nur unqualifizierte Namen“, d. h. Namen ohne Punkte. Ein nicht standardmäßiger Port kann als Teil der IP-Adresse mit einem #-Zeichen angegeben werden. Mehr als ein -S-Flag ist zulässig, mit wiederholten Domänen- oder IP-Adressenteilen nach Bedarf.
Ebenfalls zulässig ist ein Flag -S, das eine Domäne, aber keine IP-Adresse angibt. Dadurch wird dnsmasq mitgeteilt, dass eine Domäne lokal ist und Anfragen von /etc/hosts oder DHCP beantworten kann, Anfragen an diese Domäne jedoch niemals an Upstream-Server weiterleiten sollte. „local“ ist ein Synonym für „Server“, um in diesem Fall die Konfigurationsdateien übersichtlicher zu gestalten.
Die optionale zweite IP-Adresse nach dem @-Zeichen teilt dnsmasq mit, wie die Quelladresse der Abfragen an diesen Nameserver festgelegt werden soll. Es sollte eine Adresse sein, die zu der Maschine gehört, auf der dnsmasq ausgeführt wird. Andernfalls wird diese Serverzeile protokolliert und dann ignoriert. Das Abfrageport-Flag wird für alle Server ignoriert, für die eine Quelladresse angegeben ist. Der Port kann jedoch direkt als Teil der Quelladresse angegeben werden.