Resolver pro IPv4 mapované IPv6 adresy
David Rohleder
davro na ics.muni.cz
Středa Prosinec 14 18:49:41 CET 2011
Pavel Kankovsky píše v St 14. 12. 2011 v 14:12 +0100:
> On Wed, 14 Dec 2011, David Rohleder wrote:
>
> > potřeboval bych vyřešit jeden problém se $subj. Chtěl bych, aby mi byl
> > systém schopen přeložit i IPv4 mapované IPv6 adresy na jméno. Tj.
> > jesliže mám
> >
> > 192.168.1.1 -> mujpocitac.fqdn
> >
> > tak bych chtěl, aby mi stejným způsobem překládal i adresy
> >
> > :ffff:192.168.1.1 -> mujpocitac.fqdn
>
> gethostbyaddr() toto automaticky dělá (když dostane IPv6 adresu, tak by
> se měl podívat, zda je mapovaná, a pokud ano, tak z ní extrahovat IPv4
> adresu a nadále už pracovat jen s ní) a getnameinfo() by ho měl volat,
> a tudíž by to měl umět také. (A upřímně řečeno na mých strojích to tak
> funguje: "netstat -n" vypíše např. "::ffff:195.113.28.123" a bez "-n" se
> dotáže na "123.28.113.195.in-addr.arpa" a vrátí správné jméno).
>
Je zajímavé, že samba je jediný proces, který si otevírá jenom tcp6
socket.
$ netstat -atn | grep 139
tcp6 0 0 :::139 :::* LISTEN
na IPv4 tcp žádný proces nevisí, přitom tam poslouchá.
Ostatní démony mají otevřené oba sockety, jak IPv4, tak IPv6 a v
netstatu se zobrazují oba:
$ netstat -atn | grep 22
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 192.168.1.1:22 192.168.1.2:56526 ESTABLISHED
tcp6 0 0 :::22 :::* LISTEN
Zajímalo by mne, jak vzniká ten rozdíl, netstat to musí nějak maskovat,
protože pro socket() neexistuje žádné univerzální volání, vždycky se
musí specifikovat AF_INET nebo AF_INET6.
> Nebo by šlo na DNS serveru vytvořit PTR záznam pro
> 1.0.1.0.8.a.0.c.f.f.f.f.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa
>
To mně nepřijde jako dobrý nápad. Myslím, že bych radši tu metodu, která
funguje sama :-)
Pro jaký program je ten netstat -n z toho tvého příkladu? Není tam číslo
portu.
Jinak je to Debian 6.0.3
Dík
David
Další informace o konferenci Linux