[LUG.ro] Como configurar ipv6-to-ipv4 en Linux
Horacio Castellini
lugro@lugro.org.ar
Wed, 16 Apr 2003 16:14:27 -0300 (ART)
Hola:
Siguiendo con mi raconto de experiencias personales para compartir
con la comunidad Lugro, les comentaré como se implementa ipv6 en la distro
RedHat 7.3 en adelante, con algunos comentarios para generalizarlos a
distros con núcleos de versiones mayores al 2.4.10 que soportan en un 100%
ipv6 asi como algunas aplicaciones entre ellas el ssh y el domaind.
Preperando el nucleo:
el núcleo genérico Linux version 2.4.18-3 que viene en la distro
RH 7.3 soporta muy bien ipv6, pero hay pasarle algunos parámetros
especiales al núcleo para que manipule los paquetes ipv6. Si uno usa un
núcleo personalizado y se enfrascó en la configuración casi seguro borró
todo el soporte de ipv6. Este es un gran defecto a mi enterder que tiene
linux que no tiene FreeBSD ni OpenBSD pues uno tiene la opción "make
GENERIC" y te genera un núcleo genérico de fuentes actualizadas sin tener
que apelar a correr "make menuconfig" antes.
Los parámetros los modificaremos usando el comando sysctl (como
root) pues es una forma más profecional que usar "echo 1 > ....", además
es un estilo de trabajo universal cuando no se disponga del pseudo
directório /proc (como ocurre en *BSD)
sysctl -w net.ipv6.conf.all.autoconf=0
sysctl -w net.ipv6.conf.all.accept_ra=0
sysctl -w net.ipv6.conf.all.accept_redirects=0
sysctl -w net.ipv6.conf.all.forwarding=1
sysctl -w net.ipv6.conf.all.router_solicitations=0
o puden definirse en el archivo /etc/sysctl.conf para que se fijen en el
arranque. Esto permite evitar ciertos problemas cuando se configure
ipv6-to-ipv4 y se desee usar freenet (206.123.31.102) como router ipv6
para experimentar en ipv6. Esto es comun a todas las distros.
Configuración de dispocitivo Ethernet
Debián:
Si deseamos usar ipup/ipdown basta con editar el archivo correspondiente a
la interfase y colocar (/etc/network/interfaces)
iface eth0 inet6 static
address 3ffe:1234:0005:0006::78
netmask 64
iface lo inet6 static
address ::1
netmask 128
Esto identifica una dirección global (ver más adelante) para eth0 y un
host para lo.
Otra alternativa es ingresar
ifconfig eth0 add fe80::200:21ff:fe43:ca26/10
ifconfig eth0 add 3ffe:1234:0005:0006::78/64
ifconfig lo add ::1/128
Si todo anduvo bien cuando hagamos lsmod debe aprecer
ipv6 152352 -1
y cuando hagamos ifconfig
eth0 Link encap:Ethernet HWaddr 00:00:21:43:CA:26
inet addr:192.168.1.4 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::200:21ff:fe43:ca26/10 Scope:Link
inet6 addr: 3ffe:1234:5:6::78/64 Scope:Global
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:0 (0.0 b) TX bytes:396 (396.0 b)
Interrupt:5 Base address:0x320
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:211 errors:0 dropped:0 overruns:0 frame:0
TX packets:211 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:30210 (29.5 Kb) TX bytes:30210 (29.5 Kb)
La dirección fe80::200:21ff:fe43:ca26/10 se la conoce como "link-local" y
corresponde al dispositivo de red eth0, su propósito es de
autoconfiguración o en situaciones sin router su ámbito es solo local, no
puede salir de ahí.
En RH:
Bueno aca lo tengo más claro. Primero debemos agregar en el archivo
/etc/sysconfig/network lo siguiente:
NETWORKING_IPV6=yes
IPV6_GATEWAYDEV=sit1
pues vamos a definir como pasrela ipv6 al dispositivo sit1 para luego
hacer ipv6-to-ipv4, pues en la argentina no existe a mi conocimiento
router ipv6 en coneciones dial-up (en adsl no se?)
luego para el dispositivo "lo" y "eth0" agregamos lo siguiente en
/etc/sysconfig/network-scripts/ifcfg-eth0 y
/etc/sysconfig/network-scripts/ifcfg-lo
en *-eth0:
IPV6INIT=yes
IPV6ADDR=3ffe:1234:0005:0006::78/64
en *-lo:
IPV6INIT=yes
IPV6ADDR=::1/128
luego creamos el archivo /etc/sysconfig/network-scripts/ifcfg-sit1
con lo siguiente: (para que no arranque en el booteo)
DEVICE=sit1
BOOTPROTO=none
ONBOOT=no
IPV6INIT=yes
IPV6TUNNELIPV4=206.123.31.102
IPV6ADDR=3ffe:b00:c18:1fff:0:0:0:7f5/128
206.123.31.102 es el ipv4-address de freenet en cambio
3ffe:b00:c18:1fff:0:0:0:7f5/128 es el ipv6 de nuestra máquina remota. sit0
no puede usarse pues es usado como dispositivo especial.
Si todo estuvo ok, ya podemos usar el escript ifup-ipv6 para activar
nuestro eth0 (si lo tenemos) y lo, el módulo ipv6.o se cargará
automáticamente bajo demanda. por lo que debemos tener ahora los
siguientes dispositivo con ifconfig -a
eth0 Link encap:Ethernet HWaddr 00:00:21:43:CA:26
inet addr:192.168.1.4 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::200:21ff:fe43:ca26/10 Scope:Link
inet6 addr: 3ffe:1234:5:6::78/64 Scope:Global
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:0 (0.0 b) TX bytes:396 (396.0 b)
Interrupt:5 Base address:0x320
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:211 errors:0 dropped:0 overruns:0 frame:0
TX packets:211 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:30210 (29.5 Kb) TX bytes:30210 (29.5 Kb)
sit0 Link encap:IPv6-in-IPv4
NOARP MTU:1480 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Donde sit0 es el especial antes enunciado. Pero esto no es todo, en Rh 7.3
se usa en xinetd que debemos reeplazar con xinetd-ipv6, para que podamos
correr aplicaciones que usen ambas.
Por ejemplo en el siguiente listado optenido con "netstat -tan" se puede
ver la existencia de aplicaiones que usan ipv6.
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:515 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:6000 0.0.0.0:* LISTEN
tcp 0 0 192.168.1.4:80 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:113 0.0.0.0:* LISTEN
tcp 0 0 192.168.1.4:53 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN
tcp 0 0 192.168.1.4:443 0.0.0.0:* LISTEN
tcp 0 0 :::21 :::* LISTEN
tcp 0 0 :::22 :::* LISTEN
tcp 0 0 :::119 :::* LISTEN
tcp 0 0 ::1:953 :::* LISTEN
como ser ssh (puerto 22) ndc(953), y leafnode (119)
Aca les debo algo, como escribir en el archivo hosts para que relacione
::1 con localhost (esto se lo debo)
Bueno ahora para activar el ipv6-to-ipv4 (si uno se conecta con la WAN via
dial-up, primaro hay que conectarse ojo!) basta con ingresar
/etc/sysconfig/network-scripts/ifup sit1
con lo cual resulta:
sit1 Link encap:IPv6-in-IPv4
inet6 addr: 3ffe:b00:c18:1fff::7f5/128 Scope:Global
inet6 addr: fe80::c82b:3073/10 Scope:Link
inet6 addr: fe80::c0a8:104/10 Scope:Link
UP POINTOPOINT RUNNING NOARP MTU:1494 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Y ya estamos conectados! Bueno aca termino para cortarlo basta con usar
/etc/sysconfig/network-scripts/ifdown sit1
Saludos Horacio