Ich baue ein kleines privates Netzwerk innerhalb meines Universitätsnetzwerks auf. Ich habe eine Centos 6-Box ( Sonne ) zwischen meinem privaten Netzwerk und dem WAN der Universität. eth0 on the sun ist über einen netgear smart switch mit dem WAN und eth1 mit meinem privaten Netzwerk verbunden. sun fungiert als Router für das private Netzwerk und leitet den Datenverkehr von eth1 nach eth0 mithilfe von NAT weiter, das mit iptables konfiguriert wurde. Den Clients im privaten Netzwerk (von denen es gerade Quecksilber gibt ) werden über dnsmasq, das auf der Sonne läuft, eine IP, ein Gateway usw. und ein Hostname zugewiesen . dnsmasq ist so konfiguriert, dass eine bestimmte IP und ein bestimmter Hostname an die MAC-Adresse (n) des / der Clients gesendet werden.
Ich habe hart codiert die Host - Namen / IP - Adressen in /etc/hosts
auf Sonne nur:
# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.42.1 sun sun.beowulf.iecs
192.168.42.2 mercury mercury.beowulf.iecs
Momentan wird die IP-Adresse von eth0 (WAN-Ausrichtung) über DHCP zugewiesen ( sun eth0 wird unabhängig davon immer dieselbe IP zugewiesen. So macht die Universität die Dinge, aber ich bin dabei, dies zu ändern, um dies zu ermöglichen mir eine statische IP zuzuweisen). Meine /etc/resolv.conf
auf Sonne ist:
; generated by /sbin/dhclient-script
search biol.uregina.ca
nameserver 142.3.102.202
nameserver 142.3.100.15
Dies scheint beim Neustart überschrieben zu werden, sodass ich Folgendes habe /etc/dnsmasq-resolv.conf
search beowulf.iecs biol.uregina.ca
nameserver 127.0.0.1
nameserver 8.8.8.8
und haben dnsmasq angewiesen, es anstelle von zu verwenden /etc/resolv.conf
# Change this line if you want dns to get its upstream servers from
# somewhere other that /etc/resolv.conf
resolv-file=/etc/dnsmasq-resolv.conf
# By default, dnsmasq will send queries to any of the upstream
# servers it knows about and tries to favour servers to are known
# to be up. Uncommenting this forces dnsmasq to try each query
# with each server strictly in the order they appear in
# /etc/resolv.conf
strict-order
Meistens funktioniert dieses Setup. Das Problem ich habe (und ich bin nicht sicher , ist es ein großer ein, aber ...) ist , dass nslookup
und dig
nicht beide zu lösen Namen für Sonne und Quecksilber , es sei denn ich diese Befehle , die DNS - Server zu Abfrage informieren:
# nslookup sun.beowulf.iecs sun.beowulf.iecs
Server: sun.beowulf.iecs
Address: 192.168.42.1#53
Name: sun.beowulf.iecs
Address: 192.168.42.1
# nslookup sun sun.beowulf.iecs
Server: sun.beowulf.iecs
Address: 192.168.42.1#53
Name: sun
Address: 192.168.42.1
# nslookup sun
Server: 142.3.102.202
Address: 142.3.102.202#53
** server can't find sun: NXDOMAIN
# nslookup sun.beowulf.iecs
Server: 142.3.102.202
Address: 142.3.102.202#53
** server can't find sun.beowulf.iecs: NXDOMAIN
Die gleiche Leistung wird für Quecksilber anstelle von ** Sonne * angegeben. Repräsentative dig
Ausgabe ist:
# dig @192.168.42.1 mercury.beowulf.iecs
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.23.rc1.el6_5.1 <<>> @192.168.42.1 mercury.beowulf.iecs
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 65090
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;mercury.beowulf.iecs. IN A
;; ANSWER SECTION:
mercury.beowulf.iecs. 0 IN A 192.168.42.2
;; Query time: 0 msec
;; SERVER: 192.168.42.1#53(192.168.42.1)
;; WHEN: Wed Jun 25 12:05:31 2014
;; MSG SIZE rcvd: 54
und funktioniert nicht, wenn ich den zu verwendenden Nameserver nicht spezifiziere:
# dig mercury.beowulf.iecs
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.23.rc1.el6_5.1 <<>> mercury.beowulf.iecs
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 29153
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
;mercury.beowulf.iecs. IN A
;; AUTHORITY SECTION:
. 7988 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2014062500 1800 900 604800 86400
;; Query time: 0 msec
;; SERVER: 142.3.102.202#53(142.3.102.202)
;; WHEN: Wed Jun 25 12:05:37 2014
;; MSG SIZE rcvd: 113
Im letzten Beispiel oben ( dig
) SERVER: 142.3.102.202#53(142.3.102.202)
ist dies der erste DNS-Server in. /etc/resolv.conf
Standardmäßig verwendet sun diesen Nameserver anstelle von dnsmasq, das ich aufgrund der Einstellungen in erwartet hätte /etc/dnsmasq.conf
.
Also, ist das ein Problem? Ich kann Sonne und Quecksilber von der Sonne aus anpingen und mich mit SSH mit Quecksilber von der Sonne verbinden .
Wenn dies ein Problem ist (oder auch nicht), gibt es eine Möglichkeit, sun zu konfigurieren und darauf dnsmasq
auszuführen, um die privaten Hostnamen automatisch aufzulösen?
quelle
/etc/resolv.conf
, weiß sun nichts davon und verwendet es weiterhin. Dies/etc/resolv.conf
wird überschrieben,dhclient-script
wenn es nach einer IP-Adresse vom WAN-DHCP-Server fragt. FWIW, die privaten DNS-Informationen werden von sun (192.168.42.1) bereitgestellt, aber sun weiß dies nicht aufgrund dessen, was in/etc/resolv.conf
Antworten:
dig
( Domain Information Groper ) undnslookup
( Internet-Nameserver interaktiv abfragen) sind Tools, die Nameserver abfragen. Sofern kein bestimmter Nameserver als Befehlszeilenargument angegeben ist, werden die in /etc/resolv.conf gefundenen Nameserver abgefragt. Sie suchen einfach nicht nach alternativen Quellen für Hostinformationen wie der/etc/hosts
Datei oder anderen in angegebenen Quellen/etc/nsswitch.conf
.Wenn Sie alle DNS-Abfragen über dnsmasq auf Ihrem Sun- Host erzwingen möchten,
/etc/resolv.conf
sollte dort auf dnsmasq verweisen, dh es sollte folgendermaßen aussehen:Um zu verhindern, dass diese Datei beim Neustart der Netzwerkschnittstelle überschrieben wird, bearbeiten Sie eth0
/etc/sysconfig/network-scripts/ifcfg-eth0
und fügen Sie die Option hinzuPEERDNS=no
Zweitens
/etc/dnsmasq-resolv.conf
versuchen Sie, dnsmasq so zu konfigurieren, dass es sich selbst als Upstream-Nameserver verwendetnameserver 127.0.0.1
... Diese Datei sollte folgendermaßen aussehen:Wenn Sie den Nameserver von Google verwenden möchten. Es ist möglicherweise eine gute Idee, stattdessen die Nameserver 142.3.102.202 und 142.3.100.15 der Universität zu verwenden, da es nicht ungewöhnlich ist, dass bestimmte Ressourcen nur vom Campus-Netzwerk aus sichtbar sind.
Wenn Ihr Quecksilberhost von DHCP konfiguriert wurde, sollte er seine Konfiguration von dnsmasq erhalten und
/etc/resolv.conf
dort auf den dnsmasq-Nameserver unter 192.168.42.1 verweisenquelle
/etc/resolv.conf
, um Namen aufzulösen. Ich habe die dnsmasq-Konfiguration mit der tatsächlichen Verwendung der Sonne in Verbindung gebracht. Beachten Sie, dass das8.8.8.8
In/etc/dnsmasq-resolv.conf
nur vorübergehend vorhanden war, da ich bei der Bearbeitung die IP-Adressen der Domain-Server der Universität nicht sofort zur Hand hatte. Ich werde diese Nameserver angeben, wenn ich dies abschließe. Um mein Problem vollständig zu lösen, muss ich aufhören zudhclient-script
überschreiben , bis die Universität mir eine ordnungsgemäß statische IP zuweist/etc/resolv.conf
.Die 142.3.102.202 und 142.3.100.15 wissen nichts über Ihr lokales privates Netzwerk, daher geben sie NXDOMAIN korrekt zurück . Dies sind auch die Standard-Nameserver für das System. Wenn Sie also keinen Nameserver angeben, werden diese verwendet.
Sie müssen den Inhalt
/etc/resolv.conf
der Nameserver-Anweisungen überschreiben und so konfigurieren, dass sie auf Ihren lokalen dnsmasq-Nameserver verweisen, der wiederum so konfiguriert sein sollte, dass Abfragen weitergeleitet werden, die nicht im Upstream beantwortet werden können.quelle
nameserver 127.0.0.1
in/etc/resolv.conf
und die anderen Einträge kommentieren, danndig
undnslookup
korrekt funktionieren. Ich hatte nicht vollständig groked , dass , obwohl dnsmasq nicht verwendet wurde/etc/resolv.conf
, der Computer Sonne wurde darin die Informationen immer noch verwendet wird . Es scheint also, als würde dies vollständig geklärt. Ich muss herausfinden, wie dasdhclient
Überschreiben gestoppt werden kann,/etc/resolv.conf
bis mir von den WAN-Administratoren eine statische IP zugewiesen wird.PEERDNS=no
Lösung gerade auf einem anderen Weg entdeckt. Das Hinzufügen, um/etc/sysconfig/network-scripts/ifcfg-eth0
das Überschreiben/etc/resolv.conf
für mich zu lösen .