[PYTHON] Erstellen Sie einfach einen DNS-Server mit Twisted

Was ist das?

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.

Einfacher Ablauf von der Instandhaltung der Umgebung bis zum Bau

Maschine, deren Betrieb überprüft wurde

Detaillierte Vorgehensweise von der Umgebungswartung bis zum Start

Bis die Umgebung vorbereitet ist, in der Twisted verwendet werden kann

> 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

Beschreibung der Zonendatei

--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

--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.

Erkundigen Sie sich sofort mit dem Befehl dig

--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.

Referenz

Creating and working with a names (DNS) server

Recommended Posts

Erstellen Sie einfach einen DNS-Server mit Twisted
Richten Sie mit Twisted einen Mailserver ein
Erstellen Sie mit hug einen Web-API-Server mit explosiver Geschwindigkeit
Erstellen Sie mit Docker eine Go-Umgebung
Erstellen Sie einen Pypi-Cache-Server auf QNAP
Erstellen Sie mit Laragon ganz einfach eine Entwicklungsumgebung
Erstellen Sie mit Twisted Ihren eigenen DNS-Server
Erstellen Sie einen einfachen WebDAV-Server unter Linux
Erstellen Sie einen Samba-Server unter Arch Linux
Lassen Sie uns einen WEB-Server mit Chromebook einrichten
Erstellen Sie mit Ansible einen Proxyserver mit nginx auf mehreren Remote-Servern
Erstellen Sie einen lokalen Server mit einem einzeiligen Befehl [Mac]
Schreiben Sie einen TCP-Server mit dem SocketServer-Modul
Bereiten Sie einen Pseudo-API-Server mit GitHub-Aktionen vor
Erstellen einer Django-Entwicklungsumgebung mit pyenv-virtualenv auf einem Mac
Richten Sie mit Samba einen Dateiserver unter Ubuntu 20.04 ein
[Teil 2] Erstellen wir einen Webserver mit EC2 Linux
Ich möchte einfach eine modellbasierte Entwicklungsumgebung erstellen
Erstellen Sie eine virtuelle Python-Umgebung mit venv (Django + MySQL ①)
Erstellen Sie mit pyenv eine Python-Umgebung auf Ihrem Mac
Erstellen Sie mit GitHub Pages einen Pseudo-REST-API-Server
Lernen eines neuronalen Netzes mit Chainer - Erstellen eines Web-API-Servers
CTF-Anfänger haben versucht, einen Problemserver (Web) zu erstellen [Problem]
[Python] Ich habe versucht, einen lokalen Server mit flask auszuführen
Erstellen Sie eine Python-Entwicklungsumgebung mit pyenv unter MacOS
Lassen Sie uns mit Google Colaboratory ganz einfach ein mathematisches GIF erstellen
Erstellen Sie mit Docker eine einfache Fast API-Entwicklungsumgebung
DNS-Server in Python ....
SSH-Verbindung zu einem privaten Server über einen Plattformserver in EC2
Erstellen Sie ein seq2seq-Modell mit dem Functional API Model Building & Learning von keras
Erstellen Sie einfach eine GCP-Umgebung für Kaggle mit hoher Geschwindigkeit
Erstellen Sie eine Python-Umgebung und übertragen Sie Daten auf den Server
Erstellen Sie mit Falcon einen Light-Speed-Web-API-Server
<Python> Erstellen Sie einen Server für die Datenanalyse mit Jupyter Notebook
Erstellen Sie mit Docker kostengünstig eine Flask-Entwicklungsumgebung
Erstellen Sie unter CentOS 7.7 eine Python-Umgebung für Ihren Heimserver