Hola a todos,
Esta pregunta la hice en una discusión que cree en el sitio pero solo uno respondió y aun no
he resuelto el problema. La hago de nuevo en el grupo para ver si alguien ha
visto, o encuentra algo de esto, esta vez en Español J. De esta forma empezamos a calentar motores.
Tengo una PC Linux como Router, con un túnel 6to4 configurado para acceder a Internet IPv6. Desde
el propio Linux estoy publicando el prefijo de la red con el radvd para la autoconfiguración
de las estaciones de trabajo. Todo eso funciona muy bien hasta ahora. El problema
surge cuando trato de acceder desde Windows (XP/7) a sitios IPv6 fuera de mi
red, usando Mozilla o IE8. Se supone que por defecto el SO trate de establecer
la conexión por IPv6 y si no puede lo intente por IPv4, pero en mi caso no está
funcionando así.
Si reviso la política en el Windows7 obtengo la siguiente tabla:
C:\Users\joel.alfredo>netsh interface ipv6 show prefixpolicies
Querying active state...
Precedence Label Prefix
---------- ----- --------------------------------
50
0 ::1/128
40
1 ::/0
30
2 2002::/16
20
3 ::/96
10
4 ::ffff:0:0/96
5 5 2001::/32
Con la que supuestamente las direcciones IPv6 (ya sean 6to4(2002::/16) o no,
tienen mayor precedencia que las IPv4 (::ffff:0:0/96))
Tambien revise el proceso de seleccion de nombres en el DNS y veo como se pregunta primero por el
registro A, luego por el AAAA e inmediatamente trata de establecer conexion con
la IPv4 (Registro A) tal como se muestra a continuación:
172.16.8.9 |
200.55.128.3 |
DNS |
Standard query A ipv6.he.net |
200.55.128.3 |
172.16.8.9 |
DNS |
Standard query response A 66.220.2.75 |
172.16.8.9 |
200.55.128.3 |
DNS |
Standard query AAAA ipv6.he.net |
200.55.128.3 |
172.16.8.9 |
DNS |
Standard query response AAAA 2001:470:0:64::2 |
172.16.8.9 |
66.220.2.75 |
TCP |
49626 > http [SYN] Seq=0 Win=8192 Len=0 MSS=1460 WS=2 |
66.220.2.75 |
172.16.8.9 |
TCP |
http > 49626 [SYN, ACK] Seq=0 Ack=1 Win=5840 Len=0 MSS=1460 WS=6 |
Este comportamiento es el mismo si pregunto a mi DNS utilizando IPv4 o IPv6 tal
com oven en la siguiente captura del Wireshark:
16 2002:be06:4612:1:5040:bb85:f0ff:57f5 2002:be06:4612:1::1 DNS Standard query
A ipv6.he.net
17 2002:be06:4612:1::1 2002:be06:4612:1:5040:bb85:f0ff:57f5 DNS Standard query
response A 66.220.2.75
18 2002:be06:4612:1:5040:bb85:f0ff:57f5 2002:be06:4612:1::1 DNS Standard query
AAAA ipv6.he.net
19 2002:be06:4612:1::1 2002:be06:4612:1:5040:bb85:f0ff:57f5 DNS Standard query
response AAAA 2001:470:0:64::2
20 172.16.8.9 66.220.2.75 TCP 49401 > http [SYN] Seq=0 Win=8192 Len=0
MSS=1460 WS=2
Sin embargo, si trato de acceder a mi sitio Web local (a través de su dirección
IPv6 6to4) funciona correctamente tal como ven a continuación:
15 2002:be06:4612:1:5040:bb85:f0ff:57f5 2002:be06:4612:1::1 DNS Standard query
A www.net6sol.com
16 2002:be06:4612:1::1 2002:be06:4612:1:5040:bb85:f0ff:57f5 DNS Standard query
response A 190.6.70.18
17 2002:be06:4612:1:5040:bb85:f0ff:57f5 2002:be06:4612:1::1 DNS Standard query
AAAA www.net6sol.com
18 2002:be06:4612:1::1 2002:be06:4612:1:5040:bb85:f0ff:57f5 DNS Standard query
response AAAA 2002:be06:4612:1::1
19 2002:be06:4612:1:5040:bb85:f0ff:57f5 2002:be06:4612:1::1 TCP 49460 > http
[SYN] Seq=0 Win=8192 Len=0 MSS=1440 WS=2
Una cosa para los amantes a Linux, desde mi Ubuntu, todo funciona perfectamente J.
Estas son las soluciones que he intentado:
1. Me
recomendaron que deshabilitara Teredo, y lo deshabilite, no solo a Teredo, sino
a ISATAP también, utilizando el siguiente comando:
netsh int ipv6 set teredo disabled
netsh int ipv6 set ISATAP disabled
Pero nada cambió
2. Utilice configuración estática en las estaciones Microsoft, pues vi que la metrica del Gateway autoconfigurado
era mucho mayor que la IPv4 pero tampoco cambio nada. Claro, creo que el
problema está en la selección de la IP de destino, no del proceso de ruteo, asi
que era lógico que no funcionara.
3. Por último le quite el Gateway IPv4 y así si se conecta utilizando IPv6, pero eso no es solución pues entonces no veo la Internet IPv4.
Estoy imaginando que sea un comportamiento de Microsoft al utilizar direcciones 6to4 pero
realmente no encuentro que nadie se haya quejado de esto así que debo estar
haciendo algo mal. Si alguien puede repetir el experimento y me da sus
resultados seria de gran ayuda. Yo he probado con XP y 7 y pasa lo mismo.
Saludos a todos.
Tags: Algoritmo, Direcciones, IPv4/IPv6, Microsoft, Seleccion, Windows, XP/7, de
Permalink Reply by Joel Alfredo Núñez González on August 21, 2010 at 6:51pm
Permalink Reply by Christian on July 22, 2011 at 4:31pm Joel,
Sumandote a tu pregunta y posterior respuesta, estoy haciendo unas pruebas y no entiendo el siguiente comportamiento desde mi Windows XP SP2 con IPv6 habilitado.
al tirar el comando netsh para el show prefix policy tengo esta salida
| Precedence | Label | Prefix |
|---|---|---|
| 5 | 5 | 2001::/32 |
| 10 | 4 | ::ffff:0:0/96 |
| 20 | 3 | ::/96 |
| 30 | 2 | 2002::/16 |
| 40 | 1 | ::/0 |
| 50 | 0 | ::1/128 |
::/0 (IPv6 default) tiene precedencia 40 sobre ::ffff:0:0/96 (IPv4).
Sin embargo, descarga la pagina por IPv4, lo cual no se entiende...el DNS me devuelve ambos registros (A y AAAA) por lo que el SO debe ser el que decida ir por IPv6. Pero lo hace por IPv4.
Que puede ser?
Desde ya muchas gracias,
Permalink Reply by Joel Alfredo Núñez González on July 23, 2011 at 5:25am Hola Christian,
Por defecto Microsoft solo utiliza las direcciones IPv6 6to4 para conectarse a otras direcciones 6to4 o a equipos que no tienen IPv4, es decir, por defecto utilizará IPv4 para acceder a servicios en servidores Dual Stack.
Para que la dirección IPv6 (6to4) se utilice de forma predeterminada en Microsoft Windows cuando tratemos de conectarnos a una dirección IPv6 de cualquier tipo, se debe modificar la tabla de políticas para que la etiqueta (Label) del prefijo 6to4 coincida con el de la dirección que representa todas las direcciones IPv6 (::/0), resultando una tabla como la siguiente:
Precedence Label Prefix
---------- ----- --------------------------------
50 0 ::1/128
40 1 ::/0
30 1 2002::/16
20 3 ::/96
10 4 ::ffff:0:0/96
5 5 2001::/32
Esto se basa en la rfc3484 donde se define que:
The label value Label(A) allows for policies that prefer a particular source address prefix for use with a destination address prefix. The algorithms prefer to use a source address S with a destination address D if Label(S) = Label(D).
La forma de lograrlo depende de la versión de Windows con la que estemos trabajando pero básicamente consiste en establecer (set) o adicionar (add) la política referida al prefijo 6to4.
netsh interface ipv6 set prefixpolicy 2002::/16 30 1
En caso de que no exista una política referida al prefijo 2002::/16 debe adicionarla de la siguiente manera:
netsh interface ipv6 add prefixpolicy 2002::/16 30 1
Es posible que al fijar una política se eliminen el resto de las existentes por lo que se debe guardar la tabla inicial para poder reescribirla (esto sucede en Windows XP). Para mostrar la tabla de políticas:
netsh interface ipv6 show prefixpolicies
Espero haber ayudado en algo,
Saludos.
Permalink Reply by Christian on July 25, 2011 at 8:47am Joel,
Antes que nada gracias por la respuesta.
Lo que no comprendo es por que Windows no respeta la rfc en cuanto a la tabla default de prefixpolicy que obtuve a la salida del comando. Por mas que en la tabla uno interpreta que destinos IPv6 nativos tienen mayor preferencia que destinos IPv4, Windows definio esto arbitrariamente?
Que argumento tienen para definir que utilizaran 6to4 para destinos unicamente 6to4 o solo IPv6?
Mac OS y Linux/GNU se comportarian de la misma manera que Windows?
Saludos y gracias,
Permalink Reply by Joel Alfredo Núñez González on July 25, 2011 at 2:21pm Hola Christian,
Efectivamente existen distintos criterios en la selección de las direcciones IP de origen y destino en hosts dual stack. La RFC 3484 está siendo revisada por varios problemas que han surgido con el tiempo, y que no se tuvieron en cuenta cuando se redactó.
http://lists.apple.com/archives/ipv6-dev/2010/Mar/msg00005.html
Como verás en ese enlace, según la RFC 3484 en el caso de tener direcciones de origen 6to4 e IPv4 privadas (RFC 1918), para conectarnos a hosts dual stack se debería seleccionar la 6to4 ya que coincide en Scope (Global) con la dirección de destino IPv6 (que sería la preferida por tener mayor precedencia en la Tabla de políticas). Sin embargo, se ha considerado que en esos casos es más eficiente utilizar la dirección IPv4 con NAT que el túnel 6to4, por lo que se ha propuesto darle Scope Global a las direcciones IPv4 Mapped IPv6 y darles prioridad por encima de la 6to4. Esto lo puedes ver en un Internet Draft que refieren en el enlace anterior:
http://tools.ietf.org/html/draft-arifumi-6man-rfc3484-revise-02
No sé si en Linux ya hayan cambiado, pero hasta el momento en el que hice las pruebas (kernel 2.6.19 si no me equivoco), se prefería el uso de la dirección destino IPv6 con origen 6to4.
Espero haber podido ayudarte, no dudes en escribir, pues me interesa mucho mantenerme al día en IPv6 y a veces si no tenemos alguna presión lo vamos dejando J
Saludos.
Coming soon...
© 2012 Created by gogo6.
