Configurar Herramientas para Utilizar IPv6 en un Servidor Linux

Actualizado el . Posteado en Blog. Visitado 3442 veces.

                               Configurar Herramientas para Utilizar IPv6 en un Servidor Linux

Introducción

IPv6 es la versión más reciente del protocolo IP en la que todo el Internet se basa para conectarse a otras ubicaciones (el protocolo IP es un poco redundante porque IP significa protocolo de Internet, pero lo usaremos porque es fácil). Mientras que IPv4 todavía está en uso en muchas áreas del mundo, el espacio de direcciones IPv4 se está consumiendo a un ritmo rápido y no es lo suficientemente grande como para sostener el rápido despliegue de dispositivos preparados para Internet.

IPv6 busca resolver estos problemas. Además de hacer mejoras generales en el protocolo, el beneficio más obvio de la utilización de direcciones IPv6  tiene un espacio de direcciones mucho mayor. Mientras que IPv4 permite direcciones de 2 ^ 32 (con algunas de las reservadas para propósitos especiales), el espacio de direcciones IPv6 permite 2 ^ 128 direcciones, lo que es un aumento increíble.

Aunque IPv6 abre muchas oportunidades y resuelve muchos problemas de largos datos, requiere un poco de ajuste a algunas de sus configuraciones de red de rutina si está acostumbrado a usar IPv4 exclusivamente. En esta guía, hablaremos de algunas de las contrapartes IPv6 de algunas herramientas y utilidades IPv4 populares y discutiremos cómo configurar algunos servicios populares para utilizar IPv6.

Diagnósticos de Red Triviales con IPv6

Algunas de las utilidades más simples utilizadas para diagnosticar problemas de red se crearon con IPv4 en mente. Para abordar esto, podemos utilizar sus primos IPv6 cuando queremos hacer frente al tráfico IPv6.

En primer lugar, para ver las direcciones IPv6 configuradas actualmente para su servidor, puede utilizar las herramientas iproute2 para mostrarle las direcciones configuradas:

ip -6 addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
    inet6 2400:6180:0:d0::41f/64 scope global 
       valid_lft forever preferred_lft forever
    inet6 fe80::601:15ff:fe43:b201/64 scope link 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
    inet6 fe80::601:15ff:fe43:b202/64 scope link 
       valid_lft forever preferred_lft forever

Para imprimir la tabla de enrutamiento IPv6, puede utilizar netstat escribiendo algo como esto:

netstat -A inet6 -rn

Kernel IPv6 routing table
Destination                    Next Hop                   Flag Met Ref Use If
2400:6180:0:d0::/64            ::                         U    256 0     1 eth0
fe80::/64                      ::                         U    256 0     0 eth1
fe80::/64                      ::                         U    256 0     0 eth0
::/0                           2400:6180:0:d0::1          UG   1024 0     0 eth0
::/0                           ::                         !n   -1  1    90 lo
::1/128                        ::                         Un   0   1    20 lo
2400:6180:0:d0::41f/128        ::                         Un   0   1    86 lo
fe80::601:15ff:fe43:b201/128   ::                         Un   0   1    75 lo
fe80::601:15ff:fe43:b202/128   ::                         Un   0   1     0 lo
ff00::/8                       ::                         U    256 0     0 eth1
ff00::/8                       ::                         U    256 0     0 eth0
::/0                           ::                         !n   -1  1    90 lo

Si prefiere las herramientas iproute2, puede obtener información similar escribiendo:

ip -6 route show

2400:6180:0:d0::/64 dev eth0  proto kernel  metric 256 
fe80::/64 dev eth1  proto kernel  metric 256 
fe80::/64 dev eth0  proto kernel  metric 256 
default via 2400:6180:0:d0::1 dev eth0  metric 1024 

Ahora que ya sabe cómo obtener parte de su propia información de IPv6, vamos a aprender un poco acerca de cómo usar algunas herramientas que funcionan con IPv6.

El comando omnipresente ping es realmente específico de IPv4. La versión IPv6 del comando, que funciona exactamente igual pero para las direcciones IPv6, se denomina inesperadamente ping6 . Esto hará ping a la interfaz de bucle local:

ping6 -c 3 ::1

PING ::1(::1) 56 data bytes
64 bytes from ::1: icmp_seq=1 ttl=64 time=0.021 ms
64 bytes from ::1: icmp_seq=2 ttl=64 time=0.028 ms
64 bytes from ::1: icmp_seq=3 ttl=64 time=0.022 ms

--- ::1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1998ms
rtt min/avg/max/mdev = 0.021/0.023/0.028/0.006 ms

Como puede ver, esto funciona exactamente como se esperaba, la única diferencia es la versión del protocolo que se utiliza para el direccionamiento.

Otra herramienta en la que puede confiar es traceroute . También hay un equivalente IPv6 disponible:

traceroute6 google.com

traceroute to google.com (2404:6800:4003:803::1006) from 2400:6180:0:d0::41f, 30 hops max, 24 byte packets
 1  2400:6180:0:d0:ffff:ffff:ffff:fff1 (2400:6180:0:d0:ffff:ffff:ffff:fff1)  0.993 ms  1.034 ms  0.791 ms
 2  2400:6180::501 (2400:6180::501)  0.613 ms  0.636 ms  0.557 ms
 3  2400:6180::302 (2400:6180::302)  0.604 ms  0.506 ms  0.561 ms
 4  10gigabitethernet1-1.core1.sin1.he.net (2001:de8:4::6939:1)  6.21 ms  10.869 ms  1.249 ms
 5  15169.sgw.equinix.com (2001:de8:4::1:5169:1)  1.522 ms  1.205 ms  1.165 ms
 6  2001:4860::1:0:337f (2001:4860::1:0:337f)  2.131 ms  2.164 ms  2.109 ms
 7  2001:4860:0:1::523 (2001:4860:0:1::523)  2.266 ms  2.18 ms  2.02 ms
 8  2404:6800:8000:1c::8 (2404:6800:8000:1c::8)  1.741 ms  1.846 ms  1.895 ms

Puede estar familiarizado con el comando tracepath . Esto sigue el ejemplo de los otros comandos para la versión IPv6:

tracepath6 ::1

 1?: [LOCALHOST]                        0.045ms pmtu 65536
 1:  ip6-localhost                                         0.189ms reached
 1:  ip6-localhost                                         0.110ms reached
     Resume: pmtu 65536 hops 1 back 64

Si necesita supervisar el tráfico a medida que entra en su computadora, el programa tcpdump se utiliza con frecuencia. Podemos obtener esta utilidad para mostrar sólo nuestro tráfico IPv6 mediante el filtrado con la expresión ip6 or proto ipv6 después de nuestras opciones.

Por ejemplo, podemos medir rápidamente el flujo de tráfico IPv6 fácilmente diciéndole a la herramienta que solo capture la información que nos interesa. Podemos usar este comando:

tcpdump -t -n -i eth0 -s 512 -vv ip6 or proto ipv6

Comprobación de la Información de DNS IPv6

Puede comprobar fácilmente la información DNS de sus dominios utilizando las herramientas típicas. La principal diferencia es que probablemente va a pedir registros AAAA , que se utilizan para las direcciones IPv6 en lugar de registros A , que sólo se utilizan para la cartografía IPv4.

Para recuperar un registro de dirección IPv6 para un dominio, simplemente puede solicitar el registro AAAA . Con el comando host , puede hacer esto así:

host -t AAAA google.com

google.com has IPv6 address 2404:6800:4003:803::1004

If you prefer to use dig, you can get similar results by using this syntax:

dig google.com AAAA

; <<>> DiG 9.8.1-P1 <<>> google.com AAAA
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 14826
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;google.com.            IN  AAAA

;; ANSWER SECTION:
google.com.     299 IN  AAAA    2404:6800:4003:803::1006

;; Query time: 5 msec
;; SERVER: 8.8.4.4#53(8.8.4.4)
;; WHEN: Tue Apr  1 13:59:23 2014
;; MSG SIZE  rcvd: 56

Como puede ver, la comprobación de que su DNS está resolviendo correctamente para sus dominios, es igual de fácil cuando está trabajando con direcciones IPv6.

Servicios de Red con IPv6

La mayoría de sus servicios de red comunes deben tener la capacidad de manejar el tráfico IPv6. A veces, necesitan banderas especiales o sintaxis, y otras veces, proporcionan una implementación alternativa específicamente para IPv6.

Configuración de SSH

Para SSH, el daemon se puede configurar para escuchar una dirección IPv6. Esto se controla en el archivo de configuración que se puede abrir con:

sudo nano /etc/ssh/sshd_config

El ListenAddress especifica a qué dirección se unirá el daemon SSH. Para direcciones IPv4, esto se parece a esto:

ListenAddress 111.111.111.111:22

Esto escucha la dirección IPv4 111.111.111.111 en el puerto 22. Para una dirección IPv6, puede hacer lo mismo colocando la dirección entre corchetes:

ListenAddress [1341:8954:a389:33:ba33::1]:22

Esto le dice al demonio SSH que escuche la dirección 1341:8954:a389:33:ba33::1 en el puerto 22. Puede decirle que escuche todas las direcciones IPv6 disponibles escribiendo:

ListenAddress ::

Recuerde recargar el daemon después de realizar los cambios:

sudo service ssh restart

En el lado del cliente, si el daemon al que se está conectando está configurado para escuchar utilizando IPv4 e IPv6, puede forzar al cliente a utilizar IPv6 sólo mediante el indicador -6 , de la siguiente manera:

<>ssh -6 Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo. 

Configuración del Servidor Web

Al igual que el daemon SSH, los servidores web también deben estar configurados para escuchar en direcciones IPv6.

En Apache, puede configurar el servidor para responder a peticiones en una dirección IPv6 determinada utilizando esta sintaxis:

Listen [1341:8954:a389:33:ba33::1]:80

Esto indica al servidor que escuche esta dirección específica en el puerto 80. Podemos combinar esto con una dirección IPv4 para permitir una mayor flexibilidad como esta:

Listen 111.111.111.111:80
Listen [1341:8954:a389:33:ba33::1]:80

En la práctica, si desea escuchar conexiones en todas las interfaces en todos los protocolos en el puerto 80, puede utilizar:

Listen 80

En el nivel de host, también puede especificar una dirección IPv6. Aquí, puede ver que es posible configurar un host para que coincida con una dirección IPv4 y una dirección IPv6:

<VirtualHost 111.111.111.111:80, [1341:8954:a389:33:ba33::1]:80>
    . . .
</VirtualHost>

Recuerde reiniciar el servicio para realizar los cambios:

sudo service apache2 restart

Si prefiere utilizar Nginx como su servidor web, podemos implementar configuraciones similares. Para la directiva listen, podemos utilizar esto para el tráfico IPv6:

listen [1341:8954:a389:33:ba33::1]:80;

En Linux, esto también permite el tráfico IPv4 en el puerto 80, ya que automáticamente asigna las peticiones IPv4 a la dirección IPv6. Esto realmente le impide especificar una dirección IPv6 y una dirección IPv4 por separado como esto:

listen [1341:8954:a389:33:ba33::1]:80;
listen 111.111.111.111:80;

Esto resultará en un error diciendo que el puerto ya está enlazado a otro servicio. Si desea utilizar directivas separadas como esta, debe desactivar esta funcionalidad utilizando sysctl siguiente manera:

sysctl -w net.ipv6.bindv6only=1

Puede asegurarse de que se aplique automáticamente al arrancar añadiéndolo a /etc/sysctl.conf :

<>sudo nano /etc/sysctl.conf

. . .
net.ipv6.bindv6only=1

Posteriormente, puede usar una configuración similar a la que estaba fallando antes añadiendo el ipv6only=on a la directiva de escucha de IPv6:

listen [1341:8954:a389:33:ba33::1]:80 ipv6only=on;
listen 111.111.111.111:80;

Una vez más, reinicie Nginx para realizar los cambios:

sudo service nginx restart

Configuración de Firewall

Si está acostumbrado a configurar sus reglas de Firewall usando los front-ends de configuración de netfilter como iptables , estará encantado de saber que hay una herramienta equivalente llamada ip6tables .

Tenemos aquí una guía sobre cómo configurar iptables para Ubuntu aquí.

Para la variante IPv6, simplemente puede reemplazar el comando con ip6tables para administrar las reglas de filtro de paquetes IPv6. Por ejemplo, para listar las reglas IPv6, puede escribir:

sudo ip6tables -L

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Si está utilizando la herramienta ufw , entonces felicidades, ya está hecho! La herramienta ufw configura ambos paquetes al mismo tiempo, a menos que se especifique lo contrario. Puede que tenga que agregar reglas para sus direcciones IPv6 específicas, pero no tendrá que utilizar una herramienta diferente.

Puede obtener más información sobre cómo utilizar ufw aquí.

Configuración de Wrappers de TCP

Si utiliza TCP wrappers para controlar el acceso a su servidor a través de los archivos /etc/hosts.allow y /etc/hosts.deny , simplemente puede usar la sintaxis IPv6 para hacer coincidir ciertas reglas de origen.

Por ejemplo, sólo puede permitir que una dirección IPv4 y una dirección IPv6 se conecten a través de SSH escribiendo la edición del archivo /etc/hosts.allow y agregando esto:

sudo nano /etc/hosts.allow

. . .
sshd: 111.111.0.0/255.255.254.0, [1341:8954:a389:33::]/64

Como puede ver, es muy fácil adaptar las reglas actuales de TCP wrapper para aplicarlas a las direcciones IPv6. Puede obtener más información sobre cómo formatear direcciones IP y subredes aquí.

Conclusión

Con suerte, ya te das cuenta de que la transición a IPv6 o aprovechando IPv6 además de IPv4 es un proceso bastante sencillo.

Tendrá que investigar específicamente cualquier servicio de red que utilice para averiguar si hay algún cambio de configuración adicional que sea necesario para utilizar correctamente sus recursos de IPv6. Sin embargo, ahora debería sentirse más cómodo trabajando con IPv6 con sus utilidades y servicios más básicos.

 

Fuente. Artículo traducido y con muy ligeras modificaciones de: https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-debian

licencia creative common
Este trabajo está licenciado por Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
Sobre el Autor
Pipe Peña
Author: Pipe Peña
Soy un loco enamorado de la vida. Licenciado en Ciencias Sociales y Humanas, amante de la informática y la astrofísica. Me gusta crear e investigar proyectos que enriquezcan la construcción y desarrollo del conocimiento individual y colectivo. Me encantan los videojuegos, el cine, la química, matemáticas, la física cuántica y la música, en donde actualmente soy compositor. Me baso en la idea que toma Baruch Spinoza sobre Dios.

Imprimir


Comentar este artículo en los foros (0 respuestas).