• Página inmutable
  • Información
  • Adjuntos

LibreNet6: Instalación de requisitos y configuración

Necesitas tener tinc y babeld, configurar tinc para que se conecte al tunnel broker, y luego correr babeld sobre la interfaz de tinc.

Primero se explica cómo hacer todo eso en un debian, que puede ser una PC o notebook, o inclusive una virtual de OpenVZ (ver apéndice al final). Así, obtenés una IP pública única para la computadora que está corriendo el tinc+babel, y rutas óptimas hacia todas las redes conectadas a LibreNet6.

Si en cambio querés desplegar IPv6 en una LAN entera, debes configurar el border gateway (un router hogareño con OpenWrt) para hacer que envie Router Advertisements hacia tu red, y así las computadoras locales también obtienen IPv6 públicas automáticamente. Este segundo caso se explica detalladamente para OpenWrt, usando dnsmasq para anunciar el rango IPv6 asignado.


Tabla de Contenidos


Instalar y configurar tinc+babeld en un debian / ubuntu

Instalar tinc

apt-get install tinc

mkdir -p /etc/tinc/librenet6/hosts

echo librenet6 >>/etc/tinc/nets.boot

cat <<EOF >/etc/tinc/librenet6/tinc.conf
Name = host_$(hostname)
Mode = switch
EOF

cat <<EOF >/etc/tinc/librenet6/tinc-up
#!/bin/sh
ip -6 link set \$INTERFACE up txqueuelen 1000
echo 2 > /proc/sys/net/ipv6/conf/\$INTERFACE/accept_ra
EOF
chmod +x /etc/tinc/librenet6/tinc-up

tincd -n librenet6 -K </dev/null ### Genera una pubkey para este nuevo nodo cliente

Lógica tinc sobre servers, clientes, pubkeys, ips

Un nodo "server" acepta conexiones entrantes solamente de nodos para los cuales conoce la pubkey correspondiente.

Un nodo "cliente", además de la pubkey del "server" a quien se va a conectar, necesita conocer la ip pública (v4) a dónde conectarse, y ésta se define mediante un "Address = x.x.x.x" en el mismo archivo de la pubkey.

(La distinción es meramente pedagógica; todos los nodos tinc pueden ser "server" y "cliente", al mismo tiempo)

Configurar el tinc como "cliente"

Obtenés entonces la IP y pubkey del broker de LibreNet6, y configurás tu tinc para conectarse a ese server ("topu").

wget 'http://docs.altermundi.net/LibreNet6?action=AttachFile&do=get&target=librenet6-pubkeys.tar.gz' -O - | tar -zxvf - -C /etc/tinc/librenet6/hosts/

echo "ConnectTo = topu" >> /etc/tinc/librenet6/tinc.conf

Ahora, el server tiene que conocer la pubkey de tu nodo "cliente" para aceptar la conexión, por lo tanto debes enviarnos la pubkey de tu tinc para que la aceptemos en nuestro server.

$ cat /etc/tinc/librenet6/hosts/host_$(hostname)
-----BEGIN RSA PUBLIC KEY-----
...
-----END RSA PUBLIC KEY-----

Tenés que enviarnos ese archivo adjunto (o cut&paste) en un mail a la dirección: <soporte AT altermundi DOT net>

A partir de que autoricemos tu pubkey, cuando levantes el túnel obtendrás una IPv6 pública con prefijo 2a00:1508:1:f000::/64 en la interfaz librenet6.

Sólo falta babeld, que resuelve el ruteo dinámico de subredes IPv6, usando el link-local que provee tinc.

apt-get install babeld --no-install-recommends # no queremos ahcpd

### necesitas un babeld reciente,
### si el del repo oficial es antiguo,
### bajas otro adecuado por wget
# wget http://ftp.us.debian.org/debian/pool/main/b/babeld/babeld_1.3.1-1_amd64.deb
# dpkg -i babeld_1.3.1-1_amd64.deb

Luego, le indicamos a tinc que levante babeld

echo 'babeld -D $INTERFACE' >>/etc/tinc/librenet6/tinc-up

cat <<EOF >/etc/tinc/librenet6/tinc-down
#!/bin/sh
killall babeld
EOF
chmod +x /etc/tinc/librenet6/tinc-down

Finalmente, inicias tinc con sudo /etc/init.d/tinc start y pruebas la conectividad con la Internet v6

$ ping6 2001:ad0::1
PING 2001:ad0::1(2001:ad0::1) 56 data bytes
64 bytes from 2001:ad0::1: icmp_seq=1 ttl=53 time=455 ms
^C
--- 2001:ad0::1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 455.665/455.665/455.665/0.000 ms

Perfecto!

Instalar y configurar tinc+babeld en un router OpenWrt

opkg install tinc babeld
# Recordar que siempre es mas optimo en terminos de espacio precompilar los paquetes en la imagen squashfs del binario y reflashear el equipo

Configuramos tinc con uci:

HOSTNAME=$(uci get system.@system[0].hostname)

uci import tinc < /dev/null
uci set tinc.librenet6=tinc-net
uci set tinc.librenet6.enabled=1
uci commit tinc

mkdir -p /etc/tinc/librenet6/hosts/

wget 'http://docs.altermundi.net/LibreNet6?action=AttachFile&do=get&target=librenet6-pubkeys.tar.gz' -O - | tar -zxvf - -C /etc/tinc/librenet6/hosts/

cat <<EOF >/etc/tinc/librenet6/tinc.conf
Name = topo_$HOSTNAME
Mode = switch
ConnectTo = topu
EOF

cat <<EOF >/etc/tinc/librenet6/tinc-up
#!/bin/sh
ifconfig \$INTERFACE up txqueuelen 1000
EOF
chmod +x /etc/tinc/librenet6/tinc-up

tincd -n librenet6 -K </dev/null ### Genera una pubkey para este nuevo nodo cliente

En este punto, el server tiene que conocer la pubkey de tu nodo "cliente" para aceptar la conexión, por lo tanto debes enviarnos la pubkey que acaba de generar tu tinc para que la aceptemos en nuestro server. Podés encontrarla en

/etc/tinc/librenet6/hosts/topo_$(hostname)

Mandanos ese archivo adjunto (o cut&paste - sin olvidar indicar tu $HOSTNAME) por mail a la dirección: <soporte AT altermundi DOT net>

solicitando asimismo que quieres una subred /64 para tu LAN. Además de aceptar tu pubkey, te asignaremos e informaremos un prefijo global único de red, por ejemplo "2001:db8", con el cuál completarás los siguientes pasos, siempre dentro del router:

PREFIX="2001:db8"

# Primero la IP publica del router, en la interfaz LAN
uci set network.lan.ip6addr=${PREFIX}::1/64
uci set network.lan.accept_ra=0
uci commit network

# Luego, que el dnsmasq mande Router Advertisements con ese prefijo
cat <<EOF >>/etc/dnsmasq.conf
enable-ra
dhcp-range=lan, ${PREFIX}::, ra-names
EOF

Luego configuras babeld con uci:

cat <<EOF >/etc/config/babeld
config interface
        option ifname 'librenet6'
        option link_quality 'true'
                
config filter
        option ignore 'false'
        option type 'redistribute'
        option ip '2a00:1508:1:f000::/52'
        option eq '64'

config filter
        option ignore 'false'
        option type 'redistribute'
        option ip '2a00:1508:0a00::/40'
        option eq '64'

config filter
        option 'ignore' 'false'
        option 'type' 'redistribute'
        option 'local' '1'
        option 'action' 'deny'
EOF

Sólo falta relajar las reglas de firewall ipv6 que vienen por defecto en OpenWRT:

cat <<EOF >>/etc/firewall.user
ip6tables -F -t filter
ip6tables -F -t mangle
ip6tables -F -t raw
ip6tables -P INPUT ACCEPT
ip6tables -P FORWARD ACCEPT
ip6tables -P OUTPUT ACCEPT
EOF

Y por último dejar activados los servicios:

/etc/init.d/tinc enable
/etc/init.d/babeld enable

Reinicias el router para que levante con los cambios, y deberás poder acceder a la Internet v6 tanto desde dentro del router (con ssh) como desde cualquier computadora de la red local:

$ ping6 2001:ad0::1
PING 2001:ad0::1(2001:ad0::1) 56 data bytes
64 bytes from 2001:ad0::1: icmp_seq=1 ttl=53 time=455 ms
^C
--- 2001:ad0::1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 455.665/455.665/455.665/0.000 ms

Perfecto!

Apéndice: Consideraciones previas para instalar tinc en una virtual de openvz

primero hace falta en el hardnode cargar el modulo tun y darle privilegios para usarlo al container:

lsmod | grep '^tun\>' || ( modprobe tun && echo tun >>/etc/modules )

CTID=101
vzctl set $CTID --devnodes net/tun:rw --save
vzctl set $CTID --devices c:10:200:rw --save
vzctl set $CTID --capability net_admin:on --save
vzctl exec $CTID mkdir -p /dev/net
vzctl exec $CTID chmod 600 /dev/net/tun

Es importante tambien que el container este usando veth (y no venet), para que todo funcione correctamente. Y finalmente un restart del container para que tome los cambios.

vzctl set $CTID --ipdel all --save
vzctl set $CTID --netif_add eth0 --save

vzctl restart $CTID
vzctl enter $CTID

Luego, desde dentro del container, continuas con la guía de setup como si fuera una maquina real.

Apéndice: Subredes asignadas

  • 2a00:1508:a00:0000::/40 --> espacio nuevo para LibreMesh autoconfigurado

  • 2a00:1508:afa:7b00::/56 --> NonoLibre

  • 2a00:1508:a54:ef00::/56 --> MulukukuLibre

  • 2a00:1508:a57:8900::/56 --> FumaçaOnline

  • 2a00:1508:adf:6c00::/56 --> BoqueronLibre

  • 2a00:1508:1:f000::/52 --> espacio para dar prefijos a tuneles, entran 4096 x /64

  • 2a00:1508:1:f804::/64 --> red deltalibre.org.ar (con Libre-Mesh)

  • 2a00:1508:1:f820::/64 --> red Garraf Lliure guifi.net (con Libre-mesh)

  • 2a00:1508:1:fe4c::/64 --> red Jardí Botànic de Barcelona (con Libre-mesh)

  • 2a00:1508:1:f030::/64 --> red NonoLibre

  • 2a00:1508:1:f040::/64 --> mesh Universidad Cooperativa de Colombia - Ibague

  • 2a00:1508:1:feca::/64 --> demo.deltalibre.org.ar

  • 2a00:1508:1:fefe::/64 --> red BattleMeshv6

  • 2a00:1508:1:f000::/64 --> rango para tinc endpoints con SLAAC

  • 2a00:1508:1:f001::/64 --> red atahualpa

  • 2a00:1508:1:f002::/64 --> red.quintanalibre.org.ar

  • 2a00:1508:1:f003::/64 --> en desuso

  • 2a00:1508:1:f004::/64 --> red.deltalibre.org.ar

  • 2a00:1508:1:f005::/64 --> gambado.deltalibre.org.ar

  • 2a00:1508:1:f007::/64 --> red larepublicalibre.org.ar

  • 2a00:1508:1:f008::/64 --> en desuso

  • 2a00:1508:1:f009::/64 --> en desuso

  • 2a00:1508:1:f00a::/64 --> red fernets1

  • 2a00:1508:1:f00b::/64 --> red fernets2

  • 2a00:1508:1:f00c::/64 --> red anisacatelibre.org.ar

  • 2a00:1508:1:f00d::/64 --> red haedolibre.org.ar

  • 2a00:1508:1:f00e::/64 --> red valle.anisacatelibre.org.ar

  • 2a00:1508:1:f00f::/64 --> red CompartirEsBueno

  • 2a00:1508:1:f010::/64 --> red eigenNet

  • 2a00:1508:1:f011::/64 --> red ChakanaLibre

  • 2a00:1508:1:f012::/64 --> red LaSerranitaLibre

  • 2a00:1508:1:f013::/64 --> red Gaucho

  • 2a00:1508:1:f014::/64 --> red MeshUsh

  • 2a00:1508:1:f015::/64 --> red Ninux Verona

  • 2a00:1508:1:f016::/64 --> red BarilocheLibre

  • 2a00:1508:1:f017::/64 --> red Eixample Dret (Aureasocial) en Barcelona (con Libre-mesh)

  • 2a00:1508:1:f018::/64 --> red Eixample deret

  • 2a00:1508:1:f020::/64 --> red Garraf Lliure guifi.net

  • 2a00:1508:1:f021::/64 --> red Muros e Noia guifi.net

  • 2a00:1508:1:f022::/64 --> otra red de guifi.net

  • 2a00:1508:1:f023::/64 --> rede livre Brasil

  • 2a00:1508:1:f024::/64 --> NetworkBogota.org

  • 2a00:1508:1:f025::/64 --> Pablo (modulistic)

AlterMundiDocs: LibreNet6/Setup (última edición 2016-07-12 14:55:53 efectuada por Gui)