IPv6 ist der Nachfolger von IPv4 und bietet praktisch unbegrenzte Adressen. Die Konfiguration unterscheidet sich von IPv4, aber mit dem richtigen Wissen ist sie schnell erledigt.

IPv6-Grundlagen

Adressformat

IPv4: 192.168.1.1 (32 Bit, 4 Milliarden Adressen)
IPv6: 2001:0db8:85a3:0000:0000:8a2e:0370:7334 (128 Bit)

Kurzschreibweise:
2001:0db8:85a3:0000:0000:8a2e:0370:7334
= 2001:db8:85a3:0:0:8a2e:370:7334
= 2001:db8:85a3::8a2e:370:7334

Adresstypen

| Typ | Präfix | Beschreibung | |-----|--------|--------------| | Global Unicast | 2000::/3 | Öffentliche Adressen | | Link-Local | fe80::/10 | Nur im lokalen Netzwerk | | Unique Local | fc00::/7 | Privat (wie 192.168.x.x) | | Loopback | ::1/128 | Localhost | | Multicast | ff00::/8 | Multicast-Adressen |

Netzwerk-Notation

IPv6-Netzwerk: 2001:db8:85a3::/48
- Präfix: 2001:db8:85a3
- Präfixlänge: /48 (48 Bit für Netzwerk, 80 Bit für Hosts)

Typische Zuteilungen:
- /32: ISP bekommt vom RIR
- /48: Kunde bekommt vom ISP
- /64: Ein Subnetz (Standard)
- /128: Einzelne Adresse

IPv6-Status prüfen

Aktuelle Konfiguration

# IPv6-Adressen anzeigen
ip -6 addr show

# IPv6-Routing
ip -6 route show

# Alle IPv6-Informationen
ip addr show | grep inet6

IPv6-Konnektivität testen

# Ping zu IPv6-Host
ping6 google.com

# Oder mit ping
ping -6 google.com

# Route prüfen
traceroute6 google.com

Statische IPv6-Konfiguration

Debian/Ubuntu (Netplan)

# /etc/netplan/01-network.yaml

network:
  version: 2
  ethernets:
    eth0:
      addresses:
        - 192.168.1.10/24
        - 2001:db8:85a3::10/64
      routes:
        - to: default
          via: 192.168.1.1
        - to: default
          via: 2001:db8:85a3::1
      nameservers:
        addresses:
          - 8.8.8.8
          - 2001:4860:4860::8888
netplan apply

Debian/Ubuntu (interfaces)

# /etc/network/interfaces

auto eth0
iface eth0 inet static
    address 192.168.1.10
    netmask 255.255.255.0
    gateway 192.168.1.1

iface eth0 inet6 static
    address 2001:db8:85a3::10
    netmask 64
    gateway 2001:db8:85a3::1
systemctl restart networking

CentOS/RHEL (nmcli)

# IPv6 statisch konfigurieren
nmcli con mod eth0 ipv6.addresses "2001:db8:85a3::10/64"
nmcli con mod eth0 ipv6.gateway "2001:db8:85a3::1"
nmcli con mod eth0 ipv6.method manual
nmcli con mod eth0 ipv6.dns "2001:4860:4860::8888"

# Verbindung neu starten
nmcli con up eth0

CentOS/RHEL (ifcfg)

# /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes

IPADDR=192.168.1.10
NETMASK=255.255.255.0
GATEWAY=192.168.1.1

IPV6INIT=yes
IPV6_AUTOCONF=no
IPV6ADDR=2001:db8:85a3::10/64
IPV6_DEFAULTGW=2001:db8:85a3::1
DNS1=2001:4860:4860::8888
systemctl restart NetworkManager

DHCPv6 und SLAAC

SLAAC (Stateless Address Autoconfiguration)

# Netplan mit SLAAC
network:
  version: 2
  ethernets:
    eth0:
      accept-ra: true
      addresses:
        - 192.168.1.10/24

DHCPv6

# Netplan mit DHCPv6
network:
  version: 2
  ethernets:
    eth0:
      dhcp4: true
      dhcp6: true

Beide kombinieren

# SLAAC + DHCPv6 für zusätzliche Infos (DNS)
network:
  version: 2
  ethernets:
    eth0:
      accept-ra: true
      dhcp6: true

Mehrere IPv6-Adressen

Zusätzliche Adressen hinzufügen

# Temporär
ip -6 addr add 2001:db8:85a3::20/64 dev eth0

# Permanent (Netplan)
network:
  version: 2
  ethernets:
    eth0:
      addresses:
        - 2001:db8:85a3::10/64
        - 2001:db8:85a3::20/64
        - 2001:db8:85a3::30/64

Ganzes Subnetz routen

# Wenn Sie ein /48 haben und /64 Subnetze vergeben
ip -6 route add 2001:db8:85a3:1::/64 dev eth0

Firewall-Konfiguration

UFW (Ubuntu)

# IPv6 in UFW aktivieren
# /etc/default/ufw
IPV6=yes

# Regeln gelten automatisch für IPv4 und IPv6
ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable

ip6tables

# Eingehend SSH erlauben
ip6tables -A INPUT -p tcp --dport 22 -j ACCEPT

# HTTP/HTTPS erlauben
ip6tables -A INPUT -p tcp --dport 80 -j ACCEPT
ip6tables -A INPUT -p tcp --dport 443 -j ACCEPT

# ICMPv6 erlauben (wichtig für IPv6!)
ip6tables -A INPUT -p ipv6-icmp -j ACCEPT

# Established/Related erlauben
ip6tables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Loopback erlauben
ip6tables -A INPUT -i lo -j ACCEPT

# Rest blockieren
ip6tables -A INPUT -j DROP

# Regeln speichern
ip6tables-save > /etc/iptables/rules.v6

firewalld (CentOS/RHEL)

# firewalld unterstützt IPv6 automatisch
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload

Wichtige ICMPv6-Typen

# Diese ICMPv6-Typen sollten NICHT blockiert werden:
- Type 1: Destination Unreachable
- Type 2: Packet Too Big
- Type 3: Time Exceeded
- Type 4: Parameter Problem
- Type 128/129: Echo Request/Reply
- Type 133-137: Router/Neighbor Discovery

Webserver für IPv6

Apache

# /etc/apache2/ports.conf
Listen 80
Listen [::]:80
Listen 443
Listen [::]:443

# Oder nur IPv6
Listen [2001:db8:85a3::10]:80
# VirtualHost
<VirtualHost *:80 [::]:80>
    ServerName example.com
    ...
</VirtualHost>

Nginx

# /etc/nginx/sites-available/default

server {
    listen 80;
    listen [::]:80;

    listen 443 ssl;
    listen [::]:443 ssl;

    server_name example.com;
    ...
}

Nur IPv6-Adresse

server {
    listen [2001:db8:85a3::10]:80;
    listen [2001:db8:85a3::10]:443 ssl;
    ...
}

DNS für IPv6

AAAA-Records

; Zonendatei
example.com.    IN  A       93.184.216.34
example.com.    IN  AAAA    2001:db8:85a3::10
www             IN  CNAME   example.com.
mail            IN  AAAA    2001:db8:85a3::25

PTR-Records (Reverse DNS)

; Reverse Zone für 2001:db8:85a3::/48
; Zone: 3.a.5.8.8.b.d.0.1.0.0.2.ip6.arpa

0.1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0   IN  PTR  example.com.

DNS-Server mit IPv6

# /etc/resolv.conf
nameserver 2001:4860:4860::8888
nameserver 2001:4860:4860::8844
nameserver 8.8.8.8

SSH über IPv6

SSH-Server

# /etc/ssh/sshd_config

# Auf allen Adressen lauschen
AddressFamily any

# Nur auf bestimmter IPv6-Adresse
ListenAddress 2001:db8:85a3::10

SSH-Client

# Verbinden über IPv6
ssh user@2001:db8:85a3::10

# Oder mit eckigen Klammern
ssh user@[2001:db8:85a3::10]

# IPv6 erzwingen
ssh -6 user@hostname

E-Mail mit IPv6

Postfix

# /etc/postfix/main.cf

# Auf IPv4 und IPv6 lauschen
inet_protocols = all

# Nur IPv4
inet_protocols = ipv4

# Nur IPv6
inet_protocols = ipv6

# Bestimmte Adressen
inet_interfaces = 192.168.1.10, [2001:db8:85a3::10]

SPF-Record mit IPv6

v=spf1 ip4:93.184.216.34 ip6:2001:db8:85a3::/48 -all

IPv6 deaktivieren (falls nötig)

Temporär

sysctl -w net.ipv6.conf.all.disable_ipv6=1
sysctl -w net.ipv6.conf.default.disable_ipv6=1

Permanent

# /etc/sysctl.conf
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
sysctl -p

Nur für bestimmtes Interface

sysctl -w net.ipv6.conf.eth1.disable_ipv6=1

Troubleshooting

Keine IPv6-Konnektivität

# Prüfen ob IPv6 aktiviert ist
cat /proc/sys/net/ipv6/conf/all/disable_ipv6
# 0 = aktiviert, 1 = deaktiviert

# Link-Local-Adresse vorhanden?
ip -6 addr show | grep fe80

# Gateway erreichbar?
ping6 2001:db8:85a3::1

# Router Advertisement empfangen?
rdisc6 eth0

DNS-Probleme

# IPv6-DNS-Auflösung testen
dig AAAA example.com
host -t AAAA example.com

# Bestimmten DNS-Server nutzen
dig @2001:4860:4860::8888 AAAA example.com

Firewall-Probleme

# IPv6-Firewall-Regeln prüfen
ip6tables -L -n -v

# Temporär alle IPv6-Regeln löschen (zum Testen)
ip6tables -F

IPv6 Privacy Extensions

Temporäre Adressen aktivieren

# /etc/sysctl.conf
net.ipv6.conf.all.use_tempaddr = 2
net.ipv6.conf.default.use_tempaddr = 2
sysctl -p

Auf Servern oft deaktivieren

# Server sollten stabile Adressen haben
net.ipv6.conf.all.use_tempaddr = 0

IPv6 und Docker

Docker mit IPv6

// /etc/docker/daemon.json
{
  "ipv6": true,
  "fixed-cidr-v6": "2001:db8:1::/64"
}
systemctl restart docker

Docker Compose

version: '3.8'

networks:
  default:
    enable_ipv6: true
    ipam:
      config:
        - subnet: 2001:db8:1::/64

Zusammenfassung

| Aufgabe | Befehl/Datei | |---------|--------------| | Adresse anzeigen | ip -6 addr show | | Route anzeigen | ip -6 route show | | Ping | ping6 host | | Adresse hinzufügen | ip -6 addr add 2001:db8::10/64 dev eth0 | | Firewall | ip6tables oder ufw | | DNS-Abfrage | dig AAAA domain.com |

Fazit

IPv6-Konfiguration auf Linux-Servern ist nicht kompliziert, wenn man die Grundlagen versteht. Achten Sie auf die korrekte Firewall-Konfiguration (besonders ICMPv6) und konfigurieren Sie Ihre Dienste für Dual-Stack-Betrieb. Vergessen Sie nicht die DNS-Einträge (AAAA-Records) und testen Sie die Konnektivität nach jeder Änderung.