Perché gli indirizzi Inaddr.arpa non sono risolvibili?


1

Python sul mio Mac pensa che sia il mio nome di dominio completo 1.0.0.127.in-addr.arpa. Sembra una risposta DNS inversa tautologicamente vera per un sistema che in realtà non ha un vero nome di dominio. Ma per qualche ragione quel dominio non può essere risolto in avanti verso l'IP che rappresenta chiaramente ( 127.0.0.1):

$ python -i
Python 2.7.10 (default, Jul 14 2015, 19:46:27) 
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.39)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import socket
>>> socket.getfqdn()
'1.0.0.127.in-addr.arpa'
>>> socket.gethostbyname(socket.getfqdn())
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
socket.gaierror: [Errno 8] nodename nor servname provided, or not known
>>> 

Non è solo Python; Nemmeno io posso eseguire il ping 1.0.0.127.in-addr.arpa, a causa di un errore di risoluzione DNS.

Perché i in-addr.arpadomini non sono risolvibili con gli IP che rappresentano?


Potrebbe essere sbagliato su questo, ma probabilmente è perché non sono destinati a mappare gli indirizzi IP. Sono destinati a mappare a nomi di dominio. Hai già l'indirizzo IP.
Anaksunaman,

Risposte:


1

127.in-addr.arpa. non è stato delegato a nessun server di nomi pubblici da IANA, in quanto è un blocco IP riservato per gli indirizzi di loopback.

[nevin-mac-mini:~] nevin% nslookup
> set type=SOA
> in-addr.arpa.
Server:     192.168.2.1
Address:    192.168.2.1#53

Non-authoritative answer:
in-addr.arpa
    origin = b.in-addr-servers.arpa
    mail addr = nstld.iana.org
    serial = 2017043116
    refresh = 1800
    retry = 900
    expire = 604800
    minimum = 3600

Authoritative answers can be found from:
in-addr.arpa    nameserver = a.in-addr-servers.arpa.
in-addr.arpa    nameserver = b.in-addr-servers.arpa.
in-addr.arpa    nameserver = c.in-addr-servers.arpa.
in-addr.arpa    nameserver = d.in-addr-servers.arpa.
in-addr.arpa    nameserver = e.in-addr-servers.arpa.
in-addr.arpa    nameserver = f.in-addr-servers.arpa.
> server a.in-addr-servers.arpa.
Default server: a.in-addr-servers.arpa.
Address: 199.212.0.73#53
> 127.in-addr.arpa.
Server:     a.in-addr-servers.arpa.
Address:    199.212.0.73#53

** server can't find 127.in-addr.arpa.: NXDOMAIN
> 

Questa è una risposta autorevole "nessun tale dominio".

Suppongo che potresti inserire una voce host:

1.0.0.127.in-addr.arpa. 127.0.0.1

in /etc/hostso qualunque risorsa locale il sistema utilizza un resolver DNS interno.


Quindi Python ha torto nell'affermare questo come FQDN plausibile per l'host?
Interfaccia il

[nevin-mac-mini: ~] nevin% python2.7 -i Python 2.7.13 (impostazione predefinita, 23 aprile 2017, 15:24:58) [GCC 4.2.1 Apple LLVM 8.1.0 compatibile (clang-802.0.42 )] su darwin Digita "aiuto", "copyright", "crediti" o "licenza" per ulteriori informazioni. >>> import socket >>> socket.getfqdn () 'nevin-mac-mini.local' >>> socket.gethostbyname (socket.getfqdn ()) '192.168.2.122' >>> socket.getfqdn () 'nevin -mac-mini-test.local '>>> socket.gethostbyname (socket.getfqdn ())' 192.168.2.122 '>>> ^ D [nevin-mac-mini: ~] nevin%
Nevin Williams,

Bene, i commenti non si formattano altrettanto bene. "nevin-mac-mini.local" è il mio "Nome computer" impostato nel riquadro Condivisione SystemPrefs ... Quando ho modificato il nome per aggiungere un test, Python lo ha preso subito.
Nevin Williams,

La mia versione di python2.7 è stata installata da MacPorts 2.4.1 btw.
Nevin Williams,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.