Wie würden Sie einen DNS-Nameserver pro NIC-Schnittstelle (eth0 vs eth1) unter RHEL / Centos 6 konfigurieren?
Z.B
eth0 befindet sich im Subnetz 10.0.0.1/24
eth1 befindet sich im Subnetz 192.168.0.1/24
Alle über eth0 gesendeten Anforderungen sollten den DNS-Server 10.0.0.2 verwenden.
Alle über eth1 gesendeten Anforderungen sollten den DNS-Server 192.168.0.2 verwenden.
Ich habe hinzugefügt:
DNS1: 10.0.0.2> / etc / sysconfig / network-scripts / ifcfg-eth0
DNS1: 19.168.0.2> / etc / sysconfig / network-scripts / ifcfg-eth1
Diese Werte werden jedoch ignoriert und standardmäßig auf die Einstellung in resolv.conf "Nameserver 10.0.0.2" gesetzt. Wenn eth0 nicht verfügbar ist, werden Verbindungen über eth1 gesendet. DNS kann jedoch nicht mehr aufgelöst werden, da versucht wird, 10.0.0.2 zu erreichen .
Wie kann ich die DNS-Einstellungen in ifcfg anstelle eines Standardwerts für resolv.conf berücksichtigen?
Oder wie konfiguriere ich einen anderen DNS-Nameserver für eth0 als eth1?
Gibt es eine bessere Möglichkeit, damit umzugehen?
Aktualisiert
Wir haben zwei VLANs, jedes hat einen eigenen DNS-Server in seinem jeweiligen Subnetz. Diese übernehmen die Suche nach lokalem DNS (example.loc, guest.app usw.) sowie die Weiterleitung bei Bedarf.
Dies sind zwei separate Server an zwei separaten physischen Standorten. Wenn möglich, möchte ich lieber nicht einen Server über die beiden Subnetze ausführen (einer verarbeitet vertrauliche Daten).
Wenn eth0 ausfallen soll, muss eth1 weiterhin DNS-Anfragen stellen können.
Ich habe darüber nachgedacht, der resolv.conf zwei IPs hinzuzufügen und sie dann ausfallen zu lassen, wenn sie den Server im ersten Subnetz nicht erreichen kann, aber dies scheint unelegant zu sein (ich muss warten, bis der erste Server bei jeder DNS-Abfrage eine Zeitüberschreitung aufweist, wenn eth0 ist Nieder).
nameserver 10.0.0.2
undnameserver 192.168.0.2
inresolv.conf
?Antworten:
Sie können nicht einfach tun, was Sie wollen.
Die Namenssuche für einen Hostnamen erfolgt über Standardsystembibliotheken und ist in keiner Weise mit einer bestimmten "Verbindung" verknüpft. In der Tat ist nun mal die DNS - Abfrage zu der Zeit, es ist keine Verbindung, weil Ihre Anwendung aus der Adresse nicht einmal gedacht , an denen sie verbinden gehen (weshalb es DNS in erster Linie ist mit).
Der Linux-Resolver hat nur eine einzige globale Konfiguration (
/etc/resolv.conf
). Es gibt keine Einstellungen pro Schnittstelle, pro Domäne oder pro Verbindung. Die Einstellungen in/etc/sysconfig/network-scripts/...
nur bevölkern verwendet/etc/resolv.conf
, und in der Regel , wenn Sie angeben ,DNS1
undDNS2
in diesen Dateien, die letzte Schnittstelle zu kommen, was Sie sehen in/etc/resolv.conf
.Können Sie uns sagen, was Sie tatsächlich erreichen wollen? Wir können möglicherweise bessere Lösungen vorschlagen, wenn Sie uns mehr über Ihre spezifische Situation erzählen können.
quelle
Eine DNS-Anfrage ist grundsätzlich entweder
Zum Zeitpunkt der Anforderung ist also nicht bekannt, um welche Ethernet-Karte es sich handelt. Was Sie vernünftigerweise fragen könnten , wäre: "Alle Anfragen, die auf 'domain1.com' enden, sollten auf 192.168.0.2 und alle anderen Anfragen auf 10.0.0.2 gehen."
Und ebenso: "Alle Reverse-DNS-Anforderungen, die mit 192.168.0.0/24 übereinstimmen, sollten zu 192.168.0.2 und der Rest zu 10.0.0.2 gehen."
Wie bereits erwähnt, unterstützt Linux eine solche Konfiguration nicht. Sie können jedoch Ihren eigenen minimalen DNS-Server ausführen, der die obige Logik implementiert, und Anforderungen an den entsprechenden "echten" DNS-Server weiterleiten.
Ich glaube, dass dnsmasq dies kann (siehe So konfigurieren Sie dnsmasq, um mehrere DNS-Server weiterzuleiten? ). Aber bevor ich das herausfand, rollte ich meine eigene in Twisted:
quelle
Die Antwort auf alle Ihre drei Fragen ist jetzt vom System gelöst (Hervorhebung von mir):
quelle