Direccionamiento IPv6, prefijo dinámico, parte local estática


10

El enrutador de mi red entrega un prefijo IPv6 asignado por mi ISP. Este prefijo es dinámico pero "bastante pegajoso".

Me gustaría que mis máquinas recojan automáticamente el prefijo anunciado en los RA, pero lo combinen con una parte local especificada por el usuario en lugar de generar una al azar o basada en la dirección MAC. ¿Hay alguna manera fácil de hacer eso?


1
No he visto ningún sistema operativo que te permita hacer esto :(
Sander Steffann

@SanderSteffann ¿Nunca usó Linux?
Michael Hampton

1
@Michael Nunca he visto un sistema operativo que te permita configurar tokens IID. Técnicamente, el núcleo puede hacerlo, pero ningún sistema operativo (como en la distribución) lo admite :(
Sander Steffann

Respuestas:


11

Hay dos maneras de hacer esto. Uno es el camino fácil y el otro es el difícil.

La manera fácil es ejecutar un servidor DHCPv6 en su red y asignar direcciones de host a cada dispositivo usted mismo. O deje que el servidor elija la parte del host; Los servidores DHCPv6 que he visto mantendrán la misma parte de host incluso si cambia el prefijo.

La forma difícil es usarlo ip tokenpara establecer identificadores de interfaz tokenizados. Esto se describe como:

El soporte de identificador de interfaz tokenizada IPv6 se utiliza para asignar direcciones de parte de host bien conocidas a los nodos mientras se obtiene un prefijo de red global de los anuncios de enrutador. El objetivo principal de los identificadores tokenizados son las plataformas de servidor en las que las direcciones generalmente se configuran manualmente, en lugar de usar DHCPv6 o SLAAC. Mediante el uso de identificadores tokenizados, los hosts aún pueden determinar su prefijo de red mediante el uso de SLAAC, pero se pueden volver a numerar automáticamente en caso de que cambie su prefijo de red. Los identificadores IPv6 tokenizados se describen en el borrador: <draft-chown-6man-tokenised-ipv6-identifiers-02>.

La razón por la que es difícil es que, si bien Linux incluye esta funcionalidad, no sé que la distribución de Linux incluye soporte para hacer que dicha configuración sea persistente y aplicarla en el momento del arranque, como lo hacen para las direcciones configuradas manuales o DHCP. Por lo tanto, probablemente no va a funcionar muy bien para usted, hasta que alguna distribución lo haga. Tenga en cuenta que ahora es posible configurar tokens IPv6 en NetworkManager y systemd-networkd; Las respuestas más recientes tienen instrucciones de configuración específicas.


Finalmente, si su ISP ocasionalmente cambia su prefijo, considere usar direcciones locales únicas dentro de su red. De esta manera, todos sus dispositivos siempre tendrán una dirección que nunca cambiará, con la que puedan comunicarse entre sí. Algunos enrutadores domésticos / SOHO compatibles con IPv6 (como OpenWrt) tienen una opción para habilitar ULA en toda la red doméstica; Si hay varios enrutadores en el hogar, esto debería habilitarse en el enrutador que se conecta al ISP.


El problema que realmente provocó la pregunta fue que el enrutador de mi ISP envía RA con una vida útil corta. Esto causa grandes problemas con las direcciones de privacidad. OTOH No me gusta mucho la idea de revelar mi dirección MAC al mundo.
lavar el

Una parte local estática evita los problemas con las direcciones de privacidad sin revelar mi dirección MAC, gracias.
lavar el

¿Conoces una manera de agregar múltiples tokens a una sola interfaz para configurar múltiples direcciones IPv6 "dinámicas estáticas"?
Wedi

@wedi Linux solo admite un token por interfaz. Los tokens IPv6 probablemente no sean la solución a su problema, sea lo que sea.
Michael Hampton

6

Michael hizo un resumen muy bueno y el consejo reciente de plugwash fue lo mejor que pude encontrar después de buscar durante varias horas una solución CentOS 7 / RHEL (también systemd y administrador de red). Después de acostumbrarme a nmcli (principalmente seguía usando ifcfg e ip), pude aplicarlo con éxito.

Pero profundizar de acuerdo con https://developer.gnome.org/NetworkManager/stable/settings-ipv6.html NetworkManager admite directamente identificadores de interfaz tokenizados IPv6 como una propiedad (desde la versión 1.4 de agosto de 2016 http://news.softpedia.com/ news / networkmanager-1-4-add-support-for-setting-ipv6-tokenized-interface-identificators-507601.shtml ).

Por lo tanto, no necesita establecer la configuración de IPv6 del administrador de red para ignorarla, pero debe establecerla en

nmcli connection modify eth0 ipv6.method "auto" # if not already
nmcli connection modify eth0 ipv6.addr-gen-mode "eui64" # use interface token
nmcli connection modify eth0 ipv6.token "::2"

que escribirá IPV6_TOKEN=::2en / etc / sysconfig / network-scripts / ifcfg-eth0 para sobrevivir a un reinicio. Para aplicar esto inmediatamente, reinicie la interfaz

nmcli connection up id eth0  # restart

3

Gracias a Michael por confirmar que Linux era compatible con la función y apuntó al comando de bajo nivel. Esta respuesta cubre cómo hacer que funcione en la práctica en un escritorio de Debian stretch (con systemd y network-manager).

Primero edite la conexión en el administrador de red y establezca la configuración de IPv6 para ignorar.

Ahora cree un archivo /etc/NetworkManager/dispatcher.d/pre-up.d/iptoken. El archivo debe ser propiedad de root, permisos 755 y con los siguientes contenidos.

#!/bin/sh
ip token set ::2 dev eth0

Reemplace eth0 con el dispositivo que desee y :: 2 con el sufijo que desee.


2

En Linux puedes usar systemd-network.

Simplemente cree un .networkarchivo en /etc/systemd/network/somename.network:

[Match]
Name=e*

[Network]
DHCP=yes
IPv6Token=::1

en lugar de e*hacer coincidir todas las interfaces que comienzan con e, puede ingresar el nombre completo de la interfaz. Esto habilita DHCP {v4, v6} y se usa ::1como sufijo. Puede elegir cualquier dirección IPv6, pero los primeros 64 bits deben establecerse en cero.

Después de esto habilite e inicie el systemd-networkd.service.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.