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:7334Adresstypen
| 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 AdresseIPv6-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 inet6IPv6-Konnektivität testen
# Ping zu IPv6-Host
ping6 google.com
# Oder mit ping
ping -6 google.com
# Route prüfen
traceroute6 google.comStatische 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::8888netplan applyDebian/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::1systemctl restart networkingCentOS/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 eth0CentOS/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::8888systemctl restart NetworkManagerDHCPv6 und SLAAC
SLAAC (Stateless Address Autoconfiguration)
# Netplan mit SLAAC
network:
version: 2
ethernets:
eth0:
accept-ra: true
addresses:
- 192.168.1.10/24DHCPv6
# Netplan mit DHCPv6
network:
version: 2
ethernets:
eth0:
dhcp4: true
dhcp6: trueBeide kombinieren
# SLAAC + DHCPv6 für zusätzliche Infos (DNS)
network:
version: 2
ethernets:
eth0:
accept-ra: true
dhcp6: trueMehrere 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/64Ganzes Subnetz routen
# Wenn Sie ein /48 haben und /64 Subnetze vergeben
ip -6 route add 2001:db8:85a3:1::/64 dev eth0Firewall-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 enableip6tables
# 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.v6firewalld (CentOS/RHEL)
# firewalld unterstützt IPv6 automatisch
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reloadWichtige 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 DiscoveryWebserver 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::25PTR-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.8SSH über IPv6
SSH-Server
# /etc/ssh/sshd_config
# Auf allen Adressen lauschen
AddressFamily any
# Nur auf bestimmter IPv6-Adresse
ListenAddress 2001:db8:85a3::10SSH-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@hostnameE-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 -allIPv6 deaktivieren (falls nötig)
Temporär
sysctl -w net.ipv6.conf.all.disable_ipv6=1
sysctl -w net.ipv6.conf.default.disable_ipv6=1Permanent
# /etc/sysctl.conf
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1sysctl -pNur für bestimmtes Interface
sysctl -w net.ipv6.conf.eth1.disable_ipv6=1Troubleshooting
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 eth0DNS-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.comFirewall-Probleme
# IPv6-Firewall-Regeln prüfen
ip6tables -L -n -v
# Temporär alle IPv6-Regeln löschen (zum Testen)
ip6tables -FIPv6 Privacy Extensions
Temporäre Adressen aktivieren
# /etc/sysctl.conf
net.ipv6.conf.all.use_tempaddr = 2
net.ipv6.conf.default.use_tempaddr = 2sysctl -pAuf Servern oft deaktivieren
# Server sollten stabile Adressen haben
net.ipv6.conf.all.use_tempaddr = 0IPv6 und Docker
Docker mit IPv6
// /etc/docker/daemon.json
{
"ipv6": true,
"fixed-cidr-v6": "2001:db8:1::/64"
}systemctl restart dockerDocker Compose
version: '3.8'
networks:
default:
enable_ipv6: true
ipam:
config:
- subnet: 2001:db8:1::/64Zusammenfassung
| 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.