Fiber7 an einem IPv6 Linux router

Posted on Jan 16, 2022

Konfiguration unter Linux

Dieser Artikel befasst sich mit der Konfiguration von IPv6 + Fiber7. Warum IPv6? Weil es zu IPv4 eigentlich nicht viel zu sagen gibt :-)

IPv6 auf dem Router einrichten

Wir gehen von einem Router mit 2 physikalischen interfaces aus: wan0 und lan0.

Sysctl und router interface einrichten

Zuerst stellen wir sicher, dass der Router sich nicht via SLAAC automatisch konfiguriert, da Init7 dies nicht (mehr) wirklich supported.

in /etc/rc.local (oder ähnlich) tragen wir folgende Kommandos ein:

LAN=lan0
WAN=wan0
### IPv6 SLAAC
# No autoconf in LAN
sysctl -w net.ipv6.conf.${LAN}.autoconf=0
sysctl -w net.ipv6.conf.${LAN}.accept_ra=0
# Disable SLAAC in WAN and accept router advertisements
sysctl -w net.ipv6.conf.${WAN}.autoconf=0
sysctl -w net.ipv6.conf.${WAN}.accept_ra=2
### Enable forwarding
sysctl -w net.ipv4.ip_forward=1
sysctl -w net.ipv6.conf.all.forwarding=1

Mit dieser Konfig wird sich der Router nicht automatisch konfigurieren. Um eine IPv6 addr zu bekommen, konfigurieren wir nun also wide-dhcpv6. Meine Konfiguration sieht inetwa so aus:

interface wan0 {
    request domain-name-servers;
    send rapid-commit;
    # request WAN addr
    send ia-na 1;
    # request prefix delegation
    send ia-pd 1;
    script "/opt/wide-dhcpv6/bin/prehook.sh";
};

id-assoc na 1 {
};

id-assoc pd 1 {
	# apply the received prefix delegation to enp3s0 (LAN)
        prefix-interface lan0 {
           sla-id  1;
           sla-len 16;   # we expect a delegation of 16 bits (48-64)
           ifid 1;       # configure eth0 to be ::1
        };
};

Mit dieser Konfiguration senden wir einen DHCPv6 request für eine prefix delegation & normale addresse auf wan0 heraus. wan0 wird dann mit der normalen adresse (/128) konfiguriert (id-assoc na 1) während lan0 mit sla-id 1 der prefix delegation konfiguriert wird. Das interface selber schnappt sich ...::1 als adresse (ifid).

Nachdem wide-dhcpv6 gestartet wurde, sollten wir also auf beiden interfaces eine IPv6 konfiguriert haben.

RADVD

Abschliessend können wir nun radvd auf lan0 konfigurieren, damit clients hinter dem router sich autoconfiguren können.

interface lan0 {
  AdvSendAdvert on;
  MinRtrAdvInterval 600;
  MaxRtrAdvInterval 900;
  prefix ::/64
  {
    AdvOnLink on;
    AdvAutonomous on;
    AdvRouterAddr on;
  };	
};