Intenté agregar un bloque completo de IPv6 (/ 64) a una interfaz usando
ip route add local 2001:41d0:2:ad64::/64 dev lo
como se describe aquí en mi servidor Debian, pero parece que me falta algo.
Si hago ping, por ejemplo, 2001:41d0:2:ad64::fe
localmente, todo funciona bien, pero si lo intento desde una máquina remota, no funciona. Luego intenté agregar la ruta en eth0:
ip route add local 2001::41d0:2:ad64::/64 dev eth0
¡Ahora ni siquiera podía hacer ping a ninguna dirección de ejemplo localmente!
Estoy un poco perdido ya que parece que me falta algo, pero no puedo encontrar la respuesta aquí.
Para abreviar: quiero 2001:41d0:2:ad64::/64
estar vinculado a eth0 para que cada IP que contenga este bloque sea accesible desde Internet en mi máquina.
Espero que alguien pueda señalarme el camino correcto. Gracias por adelantado.
La guía proporcionada por el ISP requiere que agregue cada IPv6 a la interfaz explícitamente. Quiero que sea implícito.
Configuración de trabajo con enlace explícito de direcciones IP
/ etc / network / interfaces:
auto eth0
iface eth0 inet static
address my.ip.v4
netmask 255.255.255.0
network my.network.address.ip
broadcast my.broadcast.address.ip
gateway my.gateway.ip
iface eth0 inet6 static
address 2001:41d0:2:ad64::fe
netmask 64
gateway 2001:41d0:2:adff:ff:ff:ff:ff
up ip addr add 2001:41d0:2:ad64::1/64 dev eth0
down ip addr del 2001:41d0:2:ad64::1/64 dev eth0
up ip addr add 2001:41d0:2:ad64::2/64 dev eth0
down ip addr del 2001:41d0:2:ad64::2/64 dev eth0
up ip addr add 2001:41d0:2:ad64::3/64 dev eth0
down ip addr del 2001:41d0:2:ad64::3/64 dev eth0
up ip addr add 2001:41d0:2:ad64::4/64 dev eth0
down ip addr del 2001:41d0:2:ad64::4/64 dev eth0
up ip addr add 2001:41d0:2:ad64::5/64 dev eth0
down ip addr del 2001:41d0:2:ad64::5/64 dev eth0
up ip addr add 2001:41d0:2:ad64::6/64 dev eth0
down ip addr del 2001:41d0:2:ad64::6/64 dev eth0
up ip addr add 2001:41d0:2:ad64::7/64 dev eth0
down ip addr del 2001:41d0:2:ad64::7/64 dev eth0
up ip addr add 2001:41d0:2:ad64::8/64 dev eth0
down ip addr del 2001:41d0:2:ad64::8/64 dev eth0
up ip addr add 2001:41d0:2:ad64::9/64 dev eth0
down ip addr del 2001:41d0:2:ad64::9/64 dev eth0
up ip addr add 2001:41d0:2:ad64::a/64 dev eth0
down ip addr del 2001:41d0:2:ad64::a/64 dev eth0
Prueba de solución # 1
Intenté volver a habilitar la ruta local como sugirió @kasperd.
Contenido de mi / etc / network / interfaces
auto lo
iface lo inet loopback
post-up ip route add local 2001:41d0:2:ad64::/64 dev lo
pre-down ip route del local 2001:41d0:2:ad64::/64 dev lo
auto eth0
iface eth0 inet static
# <snip of ipv4 config>
iface eth0 inet6 static
address 2001:41d0:2:ad64::fe
netmask 64
gateway 2001:41d0:2:adff:ff:ff:ff:ff
Tabla de enrutamiento local:
# ip -6 route show table local
local ::1 dev lo proto none metric 0
local 2001:41d0:2:ad64::fe dev lo proto none metric 0
local 2001:41d0:2:ad64::/64 dev lo metric 1024
local fe80::225:90ff:fe06:6bbe dev lo proto none metric 0
ff00::/8 dev eth0 metric 256
Salida de traceroute
(mi PC local):
1 <1 ms <1 ms <1 ms fritz.box [xxx]
2 20 ms 21 ms 24 ms 2002:c058:6301::1
3 21 ms 22 ms 24 ms 10gigabitethernet6.switch2.fra1.he.net [2001:470
:0:150::1]
4 44 ms 31 ms 40 ms 100ge3-1.core1.ams1.he.net [2001:470:0:2d4::1]
5 * * * Zeitüberschreitung der Anforderung.
6 * * 35 ms ams-5-6k.nl.eu [2001:41d0::8d1]
7 37 ms 39 ms 36 ms rbx-g2-a9.fr.eu [2001:41d0::ab1]
8 37 ms 70 ms 36 ms chi-3-4m.il.us [2001:41d0::176]
9 Zielhost nicht erreichbar.
Ablaufverfolgung beendet.
traceroute6
en el servidor:
traceroute to 2001:41d0:2:ad64::23 (2001:41d0:2:ad64::23), 30 hops max, 80 byte packets
1 2001:41d0:2:ad64::a (2001:41d0:2:ad64::a) 0.028 ms 0.009 ms 0.008 ms
ping6
en el servidor:
PING 2001:41d0:2:ad64::23(2001:41d0:2:ad64::23) 56 data bytes
64 bytes from 2001:41d0:2:ad64::23: icmp_seq=1 ttl=64 time=0.029 ms
64 bytes from 2001:41d0:2:ad64::23: icmp_seq=2 ttl=64 time=0.057 ms
^C
--- 2001:41d0:2:ad64:23 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.029/0.043/0.057/0.014 ms
tcpdump
salida (al hacer ping y tracerouting en el servidor remoto):
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
tracert
a la puerta de entrada:
Routenverfolgung zu vss-3-6k.fr.eu [2001:41d0:2:adff:ff:ff:ff:ff] über maximal 3
0 Abschnitte:
1 <1 ms <1 ms <1 ms fritz.box [2002:5476:1b4c:0:c225:6ff:fe40:b2b0]
2 23 ms 22 ms 26 ms 2002:c058:6301::1
3 24 ms 40 ms 23 ms 10gigabitethernet6.switch2.fra1.he.net [2001:470
:0:150::1]
4 28 ms 37 ms 39 ms 100ge3-1.core1.ams1.he.net [2001:470:0:2d4::1]
5 * * * Zeitüberschreitung der Anforderung.
6 38 ms 33 ms * ams-5-6k.nl.eu [2001:41d0::8d1]
7 36 ms 39 ms 38 ms rbx-g2-a9.fr.eu [2001:41d0::ab1]
8 36 ms 35 ms 35 ms vss-3-6k.fr.eu [2001:41d0:2:adff:ff:ff:ff:ff]
Ablaufverfolgung beendet.
ping
a la puerta de entrada:
Ping wird ausgeführt für 2001:41d0:2:adff:ff:ff:ff:ff mit 32 Bytes Daten:
Antwort von 2001:41d0:2:adff:ff:ff:ff:ff: Zeit=36ms
Antwort von 2001:41d0:2:adff:ff:ff:ff:ff: Zeit=34ms
Antwort von 2001:41d0:2:adff:ff:ff:ff:ff: Zeit=38ms
Antwort von 2001:41d0:2:adff:ff:ff:ff:ff: Zeit=57ms
Ping-Statistik für 2001:41d0:2:adff:ff:ff:ff:ff:
Pakete: Gesendet = 4, Empfangen = 4, Verloren = 0
(0% Verlust),
Ca. Zeitangaben in Millisek.:
Minimum = 34ms, Maximum = 57ms, Mittelwert = 41ms
Entonces todavía funciona localmente (servidor) pero no desde remoto (mi PC).
fuente
ip route
comando tiene un error tipográfico en la dirección IPv6.2001:41d0:2:adff:ff:ff:ff:ff
después de eso, solo se agota el tiempo de espera.Respuestas:
He necesitado algo similar en el pasado. Descubrí que hay tres pasos necesarios para que esto funcione:
IP_FREEBIND
oIP_TRANSPARENT
en los socketsLa forma correcta de enrutar un prefijo al host implica contactar a su proveedor, si aún no le proporciona uno. Pueden tener un servidor DHCPv6, que puede delegarle un prefijo, si solo le envía la solicitud correcta de DHCPv6.
Si por alguna razón le es imposible obtener un prefijo enrutado real, pero tiene acceso para usar tantas direcciones como desee de un prefijo de enlace disponible en una de sus interfaces de red, puede convertir parte de eso en un prefijo enrutado hacer que un demonio responda a las solicitudes de descubrimiento de vecinos para cada dirección IPv6 en ese rango.
Usar un demonio así no se recomienda como último recurso, ya que consumirá innecesariamente la memoria de todos sus vecinos. Hay algunas implementaciones de tal demonio, una que parece prometedora es ndppd . (No tengo experiencia específica con él, ya que solo aprendí sobre esto después de haber escrito el mío con mi prefijo de enlace codificado).
Parece que ya tienes la ruta local funcionando. Como notó, tiene que asignarse a la
lo
interfaz para que funcione.Finalmente, las aplicaciones que usan direcciones de este rango necesitan una opción de IP para poder unirse a direcciones, que no están asignadas explícitamente a una interfaz de red específica en el host. Aquí hay un fragmento de código que se puede usar:
fuente
tcpdump -pni eth0 'host 2001:41d0:2:ad65::fe'
/etc/rc.local
Es el año 2019 ahora. Una palabra: ip_nonlocal_bind (desde 4,3 kernel como puedo saber).
Use ndppd + sysctl net.ipv6.ip_nonlocal_bind = 1, el último le permite enlazar a cualquier dirección IPv6 (no se necesita IP_FREEBIND en este caso).
Supongo que lo hiciste:
ndppd.conf se verá así:
ejecute ndppd y ahora puede enlazar a cualquier dirección (del bloque agregado) y usarla como se agregó.
fuente