Twisted macht es einfach, einen DNS-Server zu erstellen, und bis ich das wusste, baute ich ein Paradies mit / etc / hosts. Ich suchte, um die aufgeblähten / etc / hosts loszuwerden. Apropos, wenn Sie Twisted verwenden, warum nicht diese Bibliothek Twisted verwenden, die mit verschiedenen Dingen in diesem Netzwerk gefüllt ist? Ich dachte. Als ich es nachgeschlagen habe, habe ich festgestellt, dass Sie mit dem Twistd-Befehl (Python-Skript), der nach der Installation von Twisted eingeht, nur eine einfache Zonendatei schreiben müssen, wenn Sie DNS als Argument übergeben.
Also werde ich ein Memo über den Aufbau eines DNS-Servers mit Twisted (easy) schreiben.
Bereiten Sie die Python 2.7.3-Umgebung vor
In Version 12.3.0 unterstützt [Private 3.3 auch Bibliotheken (mit Ausnahme einiger)) (http://twistedmatrix.com/trac/browser/trunk/admin/_twistedpython3.py), ist jedoch noch in Betrieb. Unter diesem Gesichtspunkt habe ich mich für die neueste stabile Version der 2.x-Serie entschieden.
Installieren Sie Twisted selbstverständlich. ――Ich möchte die Umgebung nicht verschmutzen, daher bereite ich die Betriebsumgebung mit easy_install & pip & virtualenv vor
Bereiten Sie eine Zonendatei vor
Schreiben Sie im Format pyzone Datensätze wie NS und CNAME in die Liste und bereiten Sie eine Einstellungsdatei vor.
Es scheint, dass das BIND9-Format ebenfalls unterstützt wird, aber das Pyzone-Format ist einfacher.
Starten Sie den Server mit dem Befehl Twistd
Ich weiß nicht, ob der Ausdruck "Server starten" korrekt ist, aber übergeben Sie den Parameter dns, um ihn zu starten.
> easy_install-2.7 pip
> pip install virtualenv
> rehash
> mkdir -p ~/TwisedDNS/
> cd ~/TwistedDNS
> virtualenv python
> source python/bin/activate
(python)> rehash
(python)> pip install twisted
--Unko.zone.
unko.zone
zone = [
SOA(
'unko.com',
mname = 'ns1.unko.com',
serial = 2013011901,
refresh = '1H',
retry = '1H',
expire = '1H',
minimum = '1H'
),
# NS Record
NS('unko.com', 'ns1.unko.com'),
# A Record
A('unko.com', '10.0.0.10'),
A('blog.unko.com', '10.0.1.10'),
# CNAME Record
CNAME('www.unko.com', 'unko.com')
]
--Starten Sie den Server mit dem Befehl Twistd.
> sudo twistd -n dns --recursive --cache --pyzone unko.zone
# -n ist--Wenn die Option nodaemon angehängt ist, wird sie als Prozess auf der Shell anstelle des Daemons gestartet. Diesmal ist es ein Test, also habe ich ihn aktiviert.
# --Es fühlt sich an wie rekursive Abfragen an einen externen Nameserver rekursiv.
# --Cache aktiviert den Domain-Cache.
# --pyzone wird verwendet, um die Zonendatei anzugeben.
--Verwenden Sie den Befehl dig, um eine Anfrage zu stellen.
> dig @127.0.0.1 unko.com
; <<>> DiG 9.8.3-P1 <<>> @127.0.0.1 unko.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 47522
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;unko.com.INA
;; ANSWER SECTION:
unko.com.3600INA10.0.0.10
> dig @127.0.0.1 blog.unko.com
; <<>> DiG 9.8.3-P1 <<>> @127.0.0.1 blog.unko.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 6450
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;blog.unko.com.INA
;; ANSWER SECTION:
blog.unko.com.3600INA10.0.1.10
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sat Jan 19 15:48:31 2013
;; MSG SIZE rcvd: 47
> dig @127.0.0.1 www.unko.com
; <<>> DiG 9.8.3-P1 <<>> @127.0.0.1 www.unko.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 10221
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;www.unko.com.INA
;; ANSWER SECTION:
www.unko.com.3600INCNAMEunko.com.
unko.com.3600INA10.0.0.10
;; Query time: 3 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sat Jan 19 15:48:36 2013
;; MSG SIZE rcvd: 60
Versuchen Sie auch, nicht verwaltete Domänen zu kontaktieren.
> dig @127.0.0.1 yahoo.co.jp
; <<>> DiG 9.8.3-P1 <<>> @127.0.0.1 yahoo.co.jp
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37453
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;yahoo.co.jp.INA
;; ANSWER SECTION:
yahoo.co.jp.224INA124.83.187.140
yahoo.co.jp.224INA203.216.243.240
;; Query time: 13 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sat Jan 19 15:54:20 2013
;; MSG SIZE rcvd: 61
Ich konnte eine perfekte Anfrage stellen. Wenn Sie es als Daemon-Prozess ausführen möchten, können Sie die Option -n (--nodaemon) verwenden. Ich denke, dass die Datei Twistd.PID und die Datei Twist.Log in dem Verzeichnis erstellt werden, in dem der Befehl gestartet wird, sodass Sie sie entsprechend verwenden können. .. ungebunden, nsd und das ist [BIND](https: //www.isc. Wenn Sie es in einem bestimmten Dienst verwenden möchten, dh im internen Netzwerk, ohne org / software / bind zu verwenden, reicht dies aus.
das ist alles.
Creating and working with a names (DNS) server
Recommended Posts