Auteur Sujet: Script pour récupérer l'IP et indiquer si c'est une IPv4 ou une IPv6  (Lu 74374 fois)

0 Membres et 1 Invité sur ce sujet

vivien

  • Administrateur
  • *
  • Messages: 47 085
    • Twitter LaFibre.info
Script pour récupérer l'IP et indiquer si c'est une IPv4 ou une IPv6
« Réponse #24 le: 21 février 2016 à 10:07:30 »
Quelques idées a rajouter a ip.lafibre.info : http://dual.tlund.se/

notamment l'url qui "requires resolver to be IPv6 enabled".

J'ai repris les idées => https://ip.lafibre.info, sauf celle qui demande une résolution DNS activée.

Bind propose de ne pas répondre de la même façon aux requêtes A / AAAA qui lui viennent en IPv4 vs IPv6 ou il faut mettre ça sur deux machines différentes (une qui répond en IPv4 et l'autre en IPv6 ?)

J'ai un peu de mal à comprendre, même si mon FAI me fournit une IPv6 pour joindre son DNS, il y a de grande chance qu'il réalise la requête derrière en IPv4, non ?

kgersen

  • Modérateur
  • Abonné Bbox fibre
  • *
  • Messages: 9 078
  • Paris (75)
Script pour récupérer l'IP et indiquer si c'est une IPv4 ou une IPv6
« Réponse #25 le: 21 février 2016 à 12:17:40 »
J'ai repris les idées => https://ip.lafibre.info, sauf celle qui demande une résolution DNS activée.

Bind propose de ne pas répondre de la même façon aux requêtes A / AAAA qui lui viennent en IPv4 vs IPv6 ou il faut mettre ca su deux machines différentes (une qui répond en IPv4 et l'autre en IPv6 ?)

J'ai un peu de mal a comprendre, même si mon FAI me fourni une IPv6 pour joindre son DNS, il y a de grande chance qu'il réalise la requête derrière en IPv4, non ?

le test en question test le resolver DNS: le serveur qui fait la résolution récursive. Le nom a résoudre n'est résoluble qu'en IPv6 au niveau du serveur autorité pour ce nom.

Dans l'exemple: ipv6-only.tlund.se
le serveur de nom SOA qui répond pour la zone "tlund.se" ne donnera pas de réponse AAAA (ou meme A) pour l'enregistrement "ipv6-only" si on le lui demande en IPv4, il ne répondra que si on le lui demande en IPv6.

donc en pratique, config standard:
PC(serveur dns=@box en IPv6 ou IPv4)--- box (forwarder dns vers resolver(s) FAI)--- resolver(s) FAI --- tlund.se

dans ce cas, ca test le resolver du FAI: chez Orange par exemple ca échoue car le(s) resolver(s) Orange ne travaillent qu'en IPv4.

dans cette config:
PC(serveur dns=8.8.8.8 )--- box ()--- resolver(s) Google --- tlund.se
ou
PC(serveur dns=2001:4860:4860::8888)--- box ()--- resolver(s) Google --- tlund.se

ca fonctionne car les resolvers de Google fonctionnent en IPv6 (on peut test avec "dig ipv6-only.tlund.se aaaa +short @resolver")

on voit donc aussi que ca n'a rien a voir avec le fait qu'on interroge le resolver  en IPv4 ou IPv6. Ce qui compte c'est comment lui fait les résolutions.



corrector

  • Invité
Réponse DNS dépendante de l'IP source
« Réponse #26 le: 21 février 2016 à 15:00:22 »
J'ai repris les idées => https://ip.lafibre.info, sauf celle qui demande une résolution DNS activée.

Bind propose de ne pas répondre de la même façon aux requêtes A / AAAA qui lui viennent en IPv4 vs IPv6 ou il faut mettre ca su deux machines différentes (une qui répond en IPv4 et l'autre en IPv6 ?)
Il y a bien des "vues" qui permettent de ne pas répondre la même chose selon l'interface sur laquelle arrive la requête (ce qui est typiquement utilisé pour renvoyer une IP privée quand un domaine public est demandé depuis un LAN), donc peut être.

Ceci dit : vues = caca.

corrector

  • Invité
Comportement de Unbound
« Réponse #27 le: 21 février 2016 à 15:51:04 »
J'ai un peu de mal a comprendre, même si mon FAI me fourni une IPv6 pour joindre son DNS, il y a de grande chance qu'il réalise la requête derrière en IPv4, non ?
/* loop over missing targets */
for(ns = iq->dp->nslist; ns; ns = ns->next) {
if(ns->resolved)
continue;

/* randomly select this item with probability toget/missing */
if(!iter_ns_probability(qstate->env->rnd, toget, missing)) {
/* do not select this one, next; select toget number
* of items from a list one less in size */
missing --;
continue;
}

if(ie->supports_ipv6 && !ns->got6) {
/* Send the AAAA request. */
if(!generate_target_query(qstate, iq, id,
ns->name, ns->namelen,
LDNS_RR_TYPE_AAAA, iq->qchase.qclass)) {
*num = query_count;
if(query_count > 0)
qstate->ext_state[id] = module_wait_subquery;
return 0;
}
query_count++;
}
/* Send the A request. */
if(ie->supports_ipv4 && !ns->got4) {
if(!generate_target_query(qstate, iq, id,
ns->name, ns->namelen,
LDNS_RR_TYPE_A, iq->qchase.qclass)) {
*num = query_count;
if(query_count > 0)
qstate->ext_state[id] = module_wait_subquery;
return 0;
}
query_count++;
}

/* query for parent-side A and AAAA for nameservers */
if(ie->supports_ipv6 && !ns->done_pside6) {
/* Send the AAAA request. */
if(!generate_parentside_target_query(qstate, iq, id,
ns->name, ns->namelen,
LDNS_RR_TYPE_AAAA, iq->qchase.qclass))
return error_response(qstate, id,
LDNS_RCODE_SERVFAIL);
ns->done_pside6 = 1;
query_count++;
}
if(ie->supports_ipv4 && !ns->done_pside4) {
/* Send the A request. */
if(!generate_parentside_target_query(qstate, iq, id,
ns->name, ns->namelen,
LDNS_RR_TYPE_A, iq->qchase.qclass))
return error_response(qstate, id,
LDNS_RCODE_SERVFAIL);
ns->done_pside4 = 1;
query_count++;
}

Il me semble que l'IPv6 est utilisé prioritairement par Unbound.

kgersen

  • Modérateur
  • Abonné Bbox fibre
  • *
  • Messages: 9 078
  • Paris (75)
Script pour récupérer l'IP et indiquer si c'est une IPv4 ou une IPv6
« Réponse #28 le: 21 février 2016 à 16:14:52 »
avec une "acl" dans bind tu dois pouvoir limité la résolution d'un nom qu'a ceux qui font la demande en IPv6 (hypothese, j'ai pas testé).

corrector

  • Invité
Script pour récupérer l'IP et indiquer si c'est une IPv4 ou une IPv6
« Réponse #29 le: 21 février 2016 à 17:35:43 »
Tu peux tester avec rs.dns-oarc.net

DNS Free (testé avec dns1.proxad.fr)

rs.dns-oarc.net
        canonical name = rst.x4090.rs.dns-oarc.net
        ttl = 1800 (30 mins)
rst.x4090.rs.dns-oarc.net
        canonical name = rst.x4058.x4090.rs.dns-oarc.net
        ttl = 1800 (30 mins)
rst.x4058.x4090.rs.dns-oarc.net
        canonical name = rst.x4064.x4058.x4090.rs.dns-oarc.net
        ttl = 1800 (30 mins)
rst.x4064.x4058.x4090.rs.dns-oarc.net
        text =

        "213.228.58.24 DNS reply size limit is at least 4090"
        ttl = 1800 (30 mins)
rst.x4064.x4058.x4090.rs.dns-oarc.net
        text =

        "213.228.58.24 sent EDNS buffer size 4096"
        ttl = 1800 (30 mins)
rst.x4064.x4058.x4090.rs.dns-oarc.net
        text =

        "Tested at 2016-02-21 16:43:58 UTC"
        ttl = 1800 (30 mins)

x4064.x4058.x4090.rs.dns-oarc.net
        nameserver = ns00.x4064.x4058.x4090.rs.dns-oarc.net
        ttl = 1800 (30 mins)
ns00.x4064.x4058.x4090.rs.dns-oarc.net
        internet address = 149.20.58.136
        ttl = 1800 (30 mins)

corrector

  • Invité
Script pour récupérer l'IP et indiquer si c'est une IPv4 ou une IPv6
« Réponse #30 le: 21 février 2016 à 17:57:58 »
Dans l'exemple: ipv6-only.tlund.se
le serveur de nom SOA qui répond pour la zone "tlund.se" ne donnera pas de réponse AAAA (ou meme A) pour l'enregistrement "ipv6-only" si on le lui demande en IPv4, il ne répondra que si on le lui demande en IPv6.
Plus précisèment, le serveur qui peut dire quelle est l'adresse de ipv6-only.tlund.se est

ipv6-only.tlund.se      nameserver = ns.ipv6-only.tlund.se

Or ns.ipv6-only.tlund.se est IPv6-only comme le nom l'indique :

ns.ipv6-only.tlund.se   AAAA IPv6 address = 2001:67c:1898:2::53

Donc si tu n'as pas la connectivité IPv6, tu ne peux pas trouver directement cette information :

Serveur :   ns.ipv6-only.tlund.se
Address:  2001:67c:1898:2::53

Nom :    ipv6-only.tlund.se
Address:  2a00:801:f::195

corrector

  • Invité
Script pour récupérer l'IP et indiquer si c'est une IPv4 ou une IPv6
« Réponse #31 le: 21 février 2016 à 18:14:18 »
>unbound-host.exe -t TXT -d rs.dns-oarc.net
[1456074703] libunbound[5584:0] notice: init module 0: validator
[1456074703] libunbound[5584:0] notice: init module 1: iterator
[1456074703] libunbound[5584:0] info: resolving rs.dns-oarc.net. TXT IN
[1456074703] libunbound[5584:0] info: priming . IN NS
[1456074703] libunbound[5584:0] info: response for . NS IN
[1456074703] libunbound[5584:0] info: reply from <.> 199.7.83.42#53
[1456074703] libunbound[5584:0] info: query response was ANSWER
[1456074703] libunbound[5584:0] info: priming successful for . NS IN
[1456074704] libunbound[5584:0] info: response for rs.dns-oarc.net. TXT IN
[1456074704] libunbound[5584:0] info: reply from <.> 2001:500:2d::d#53
[1456074704] libunbound[5584:0] info: query response was REFERRAL
[1456074704] libunbound[5584:0] info: response for rs.dns-oarc.net. TXT IN
[1456074704] libunbound[5584:0] info: reply from <net.> 192.54.112.30#53
[1456074704] libunbound[5584:0] info: query response was REFERRAL
[1456074704] libunbound[5584:0] info: response for rs.dns-oarc.net. TXT IN
[1456074704] libunbound[5584:0] info: reply from <dns-oarc.net.> 149.20.58.65#53
[1456074704] libunbound[5584:0] info: query response was REFERRAL
[1456074704] libunbound[5584:0] info: response for rs.dns-oarc.net. TXT IN
[1456074704] libunbound[5584:0] info: reply from <rs.dns-oarc.net.> 149.20.58.133#53
[1456074704] libunbound[5584:0] info: query response was CNAME
[1456074704] libunbound[5584:0] info: resolving rs.dns-oarc.net. TXT IN
[1456074704] libunbound[5584:0] info: response for rs.dns-oarc.net. TXT IN
[1456074704] libunbound[5584:0] info: reply from <rs.dns-oarc.net.> 2001:4f8:3:2bc:2::133#53
[1456074704] libunbound[5584:0] info: query response was REFERRAL
[1456074704] libunbound[5584:0] info: response for rs.dns-oarc.net. TXT IN
[1456074704] libunbound[5584:0] info: reply from <x4090.rs.dns-oarc.net.> 2001:4f8:3:2bc:2::134#53
[1456074704] libunbound[5584:0] info: query response was CNAME
[1456074704] libunbound[5584:0] info: resolving rs.dns-oarc.net. TXT IN
[1456074705] libunbound[5584:0] info: response for rs.dns-oarc.net. TXT IN
[1456074705] libunbound[5584:0] info: reply from <x4090.rs.dns-oarc.net.> 2001:4f8:3:2bc:2::134#53
[1456074705] libunbound[5584:0] info: query response was REFERRAL
[1456074705] libunbound[5584:0] info: response for rs.dns-oarc.net. TXT IN
[1456074705] libunbound[5584:0] info: reply from <x4060.x4090.rs.dns-oarc.net.> 2001:4f8:3:2bc:2::135#53
[1456074705] libunbound[5584:0] info: query response was CNAME
[1456074705] libunbound[5584:0] info: resolving rs.dns-oarc.net. TXT IN
[1456074705] libunbound[5584:0] info: response for rs.dns-oarc.net. TXT IN
[1456074705] libunbound[5584:0] info: reply from <x4060.x4090.rs.dns-oarc.net.> 2001:4f8:3:2bc:2::135#53
[1456074705] libunbound[5584:0] info: query response was REFERRAL
[1456074705] libunbound[5584:0] info: response for rs.dns-oarc.net. TXT IN
[1456074705] libunbound[5584:0] info: reply from <x4066.x4060.x4090.rs.dns-oarc.net.> 2001:4f8:3:2bc:2::136#53
[1456074705] libunbound[5584:0] info: query response was ANSWER
rs.dns-oarc.net is an alias for rst.x4066.x4060.x4090.rs.dns-oarc.net.
rst.x4066.x4060.x4090.rs.dns-oarc.net has TXT record "2a01:e35:xxxx:xxx0:xxxx:xxxx:xxxx:xxxx DNS reply size limit is at least 4090"
rst.x4066.x4060.x4090.rs.dns-oarc.net has TXT record "2a01:e35:xxxx:xxx0:xxxx:xxxx:xxxx:xxxx sent EDNS buffer size 4096"
rst.x4066.x4060.x4090.rs.dns-oarc.net has TXT record "Tested at 2016-02-21 17:11:44 UTC"

corrector

  • Invité
Script pour récupérer l'IP et indiquer si c'est une IPv4 ou une IPv6
« Réponse #32 le: 21 février 2016 à 18:34:44 »
C:\Program Files (x86)\Unbound>unbound-host.exe -4t TXT -d rs.dns-oarc.net
[1456075809] libunbound[2636:0] notice: init module 0: validator
[1456075809] libunbound[2636:0] notice: init module 1: iterator
[1456075809] libunbound[2636:0] info: resolving rs.dns-oarc.net. TXT IN
[1456075809] libunbound[2636:0] info: priming . IN NS
[1456075809] libunbound[2636:0] info: response for . NS IN
[1456075809] libunbound[2636:0] info: reply from <.> 199.7.83.42#53
[1456075809] libunbound[2636:0] info: query response was ANSWER
[1456075809] libunbound[2636:0] info: priming successful for . NS IN
[1456075809] libunbound[2636:0] info: response for rs.dns-oarc.net. TXT IN
[1456075809] libunbound[2636:0] info: reply from <.> 202.12.27.33#53
[1456075809] libunbound[2636:0] info: query response was REFERRAL
[1456075809] libunbound[2636:0] info: response for rs.dns-oarc.net. TXT IN
[1456075809] libunbound[2636:0] info: reply from <net.> 192.35.51.30#53
[1456075809] libunbound[2636:0] info: query response was REFERRAL
[1456075810] libunbound[2636:0] info: response for rs.dns-oarc.net. TXT IN
[1456075810] libunbound[2636:0] info: reply from <dns-oarc.net.> 38.230.3.42#53
[1456075810] libunbound[2636:0] info: query response was REFERRAL
[1456075810] libunbound[2636:0] info: response for rs.dns-oarc.net. TXT IN
[1456075810] libunbound[2636:0] info: reply from <rs.dns-oarc.net.> 149.20.58.133#53
[1456075810] libunbound[2636:0] info: query response was CNAME
[1456075810] libunbound[2636:0] info: resolving rs.dns-oarc.net. TXT IN
[1456075810] libunbound[2636:0] info: response for rs.dns-oarc.net. TXT IN
[1456075810] libunbound[2636:0] info: reply from <rs.dns-oarc.net.> 149.20.58.133#53
[1456075810] libunbound[2636:0] info: query response was REFERRAL
[1456075810] libunbound[2636:0] info: response for rs.dns-oarc.net. TXT IN
[1456075810] libunbound[2636:0] info: reply from <x4090.rs.dns-oarc.net.> 149.20.58.134#53
[1456075810] libunbound[2636:0] info: query response was CNAME
[1456075810] libunbound[2636:0] info: resolving rs.dns-oarc.net. TXT IN
[1456075810] libunbound[2636:0] info: response for rs.dns-oarc.net. TXT IN
[1456075810] libunbound[2636:0] info: reply from <x4090.rs.dns-oarc.net.> 149.20.58.134#53
[1456075810] libunbound[2636:0] info: query response was REFERRAL
[1456075811] libunbound[2636:0] info: response for rs.dns-oarc.net. TXT IN
[1456075811] libunbound[2636:0] info: reply from <x4058.x4090.rs.dns-oarc.net.> 149.20.58.135#53
[1456075811] libunbound[2636:0] info: query response was CNAME
[1456075811] libunbound[2636:0] info: resolving rs.dns-oarc.net. TXT IN
[1456075811] libunbound[2636:0] info: response for rs.dns-oarc.net. TXT IN
[1456075811] libunbound[2636:0] info: reply from <x4058.x4090.rs.dns-oarc.net.> 149.20.58.135#53
[1456075811] libunbound[2636:0] info: query response was REFERRAL
[1456075811] libunbound[2636:0] info: response for rs.dns-oarc.net. TXT IN
[1456075811] libunbound[2636:0] info: reply from <x4064.x4058.x4090.rs.dns-oarc.net.> 149.20.58.136#53
[1456075811] libunbound[2636:0] info: query response was ANSWER
rs.dns-oarc.net is an alias for rst.x4064.x4058.x4090.rs.dns-oarc.net.
rst.x4064.x4058.x4090.rs.dns-oarc.net has TXT record "82.x.x.x DNS reply size limit is at least 4090"
rst.x4064.x4058.x4090.rs.dns-oarc.net has TXT record "82.x.x.x sent EDNS buffer size 4096"
rst.x4064.x4058.x4090.rs.dns-oarc.net has TXT record "Tested at 2016-02-21 17:30:10 UTC"

corrector

  • Invité
Script pour récupérer l'IP et indiquer si c'est une IPv4 ou une IPv6
« Réponse #33 le: 22 février 2016 à 19:54:57 »
Une autre idée : afficher l'adresse IPv4 en hexa.

kgersen

  • Modérateur
  • Abonné Bbox fibre
  • *
  • Messages: 9 078
  • Paris (75)
Script pour récupérer l'IP et indiquer si c'est une IPv4 ou une IPv6
« Réponse #34 le: 22 février 2016 à 22:13:48 »
un test de "ICMP packet too big" / PMTUD serait bien aussi.

test-ipv6.com fait ca avec une requete web du style:

http://mtu1280.test-ipv6.com/ip/?callback=?&size=1600&fill=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&testdomain=test-ipv6.com&testname=test_v6mtu


La machine en mtu1280.test-ipv6.com a un mtu forcé a 1280. pour recevoir cette requête, elle va donc rejeter tout paquet trop grand et répondre avec un "ICMP packet too big" avec 1280 dedans. Celui va revenir au poste qui va le prendre en compte et recommencer avec le bon mtu.

Si le poste ne recommence pas et signale un erreur au bout d'un moment, c'est que l'ICMP n'est pas passé donc quelque chose sur le chemin l'a bloqué.

corrector

  • Invité
Script pour récupérer l'IP et indiquer si c'est une IPv4 ou une IPv6
« Réponse #35 le: 23 février 2016 à 09:45:36 »
À une époque, cette URL aurait été considérée comme une attaque informatique!