Twisted facilite la création d'un serveur DNS, et jusqu'à ce que je le sache, je construisais un paradis avec / etc / hosts. J'ai cherché à me débarrasser des fichiers / etc / hosts gonflés. En parlant de cela, si vous utilisez Twisted, pourquoi ne pas utiliser cette bibliothèque, Twisted, qui contient diverses choses dans ce réseau? J'ai pensé. Donc, quand je l'ai recherché, j'ai trouvé qu'avec la commande twistd (script Python) qui vient après l'installation de Twisted, si vous passez dns comme argument, tout ce que vous avez à faire est d'écrire un simple fichier de zone.
Je vais donc écrire un mémo sur la création d'un serveur DNS (facile) à l'aide de Twisted.
--Préparer l'environnement Python 2.7.3 --Dans la version 12.3.0, la bibliothèque est également prise en charge dans Python 3.3 (sauf pour certains), mais elle est en fonctionnement Du point de vue, j'ai décidé de sélectionner la dernière version stable de la série 2.x.
--Installez Twisted comme une évidence. ――Je ne veux pas polluer l'environnement, je prépare donc l'environnement d'exploitation avec easy_install & pip & virtualenv
--Préparer un fichier de zone
--Démarrez le serveur avec la commande twistd --Je ne sais pas si l'expression "démarrer le serveur" est correcte, mais passez le paramètre dns pour le démarrer.
> 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')
]
> sudo twistd -n dns --recursive --cache --pyzone unko.zone
# -n est--Avec l'option nodaemon, si celle-ci est attachée, elle démarrera comme un processus sur le shell au lieu du démon. Cette fois, c'est un test, donc je l'ai activé.
# --Cela ressemble à des requêtes récursives vers un serveur de noms externe de manière récursive.
# --cache active le cache de domaine.
# --pyzone est utilisé pour spécifier le fichier de zone.
--Utilisez la commande dig pour faire une enquête.
> 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
Essayez également de contacter les domaines non gérés.
> 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
J'ai pu faire une enquête parfaite. Si vous souhaitez l'exécuter en tant que processus démon, vous pouvez utiliser l'option -n (--nodaemon). Je pense que le fichier twistd.pid et le fichier twistd.log sont créés dans le répertoire où la commande est lancée, vous pouvez donc les utiliser comme il convient. .. non lié, nsd, et c'est [BIND](https: //www.isc. Si vous souhaitez l'utiliser dans un service spécifique, c'est-à-dire dans le réseau interne sans utiliser org / software / bind), cela suffit.
c'est tout.
Creating and working with a names (DNS) server
Recommended Posts