Dirección de loopback personalizada IPv6 y hacer ping desde otro host

Dirección de loopback personalizada IPv6 y hacer ping desde otro host

¿Puedo o cómo puedo agregar una dirección IPv6 personalizada en la interfaz de bucle invertido del host A y hacer ping desde el host B?

Intenté agregar algo como esto ::ffff:5:4:3:2, sin embargo ip -6 route, dice que este destino está unreachablecon error 101, pero puedo hacer ping desde el host A. Cuando configuro esta dirección en tap0, por ejemplo, la ruta es accesible, pero aún no se puede hacer ping desde el host B. No puedo entender qué direcciones permite el loopback, por qué no se puede acceder a mi personalizado, por qué puedo hacer ping desde el host A, cómo habilitarlo route_localnety rp_filterpara IPv6.

SO: ArchLinux, núcleo 4.10.

Conozco la manera de hacerlo para IPv4, pero IPv6 funciona completamente (¿o no?) diferente.

Respuesta1

Sí. Así como puedes hacer esto con IPv4, esto se llama enrutamiento. Tienes que decirle a un anfitrión cómo comunicarse con otro anfitrión.

Digamos que tenemos dos anfitriones, A y B.

El host A tiene su dirección de bucle invertido predeterminada ::1y su dirección personalizada en la interfaz de bucle invertido. (En mi ejemplo, la dirección personalizada seráfd56:dcaa:2099::1 . Elegí esta de una dirección local única. Deberíasutilizar direcciones ULApara propósitos como estos.)

El host A también tiene una interfaz Ethernet, llamémosla eth0. En IPv6, tendrá una dirección local de enlace IPv6. Puede que tenga otras direcciones IPv6. Puedes encontrarlos ejecutando ip -6 addr eth0. Aquí hay un ejemplo de mi sistema:

$ ip -6 addr show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
    inet6 2601:404:ce00:adc0:9d6c:9e16:a9a9:b03b/64 scope global temporary dynamic 
       valid_lft 593594sec preferred_lft 74600sec
    inet6 2601:404:ce00:adc0:bc87:129a:ed5d:814/64 scope global temporary deprecated dynamic 
       valid_lft 78769sec preferred_lft 0sec                                                                                                                                                                                      
    inet6 2601:404:ce00:adc0:1453:3734:6742:4500/64 scope global mngtmpaddr noprefixroute dynamic                                                                                                                                 
       valid_lft 2591820sec preferred_lft 604620sec                                                                                                                                                                               
    inet6 fe80::5520:a68f:5416:a68c/64 scope link                                                                                                                                                                                 
       valid_lft forever preferred_lft forever

En esa lista hay cuatro direcciones diferentes (puede que tengas más). Para nuestros propósitos, desea el que dice "enlace de alcance" después. En mi sistema (y también en mi ejemplo), eso es fe80::5520:a68f:5416:a68c.

En el host B, también tenemos una interfaz eth0. Para permitir que el host B alcance la dirección de loopback especial del host A, el host B necesita saber dónde encontrarla. Para ello, agregue una entrada a la tabla de enrutamiento del host B:

# ip route add fd56:dcaa:2099::1 via fe80::5520:a68f:5416:a68c dev eth0

Lo que estamos haciendo es decirle al kernel del host B que puede alcanzar fd56:dcaa:2099::1(la dirección especial del host A en su interfaz loopback) en fe80::5520:a68f:5416:a68c(la dirección local de enlace del host A en su eth0interfaz), pero que el host B necesita intentar llegar fe80::5520:a68f:5416:a68cdesdeanfitrión B eth0interfaz. (Eso es lo complicado de las direcciones de enlace local. La dirección en sí solo tiene significado en el contexto de un segmento de red determinado. Estudie el modelo de red OSI para obtener más detalles).

Una vez que tenga esa entrada en la tabla de enrutamiento del host B, debería poder hacer ping a la dirección personalizada del host A desde el host B, ya que el host B ahora sabe que debe usar la dirección local de enlace del host A como enrutador para llegar a esa dirección.

Respuesta2

Porque las direcciones de bucle invertido y la interfaz están en un solo host. No está diseñado para comunicarse con otro dispositivo.

información relacionada