W Twoim labie nie zastępujemy IPv4 – dokładamy do niego IPv6:
*.lab) zwraca:
A → IPv4 (10.10.20.10),AAAA → IPv6 (np. fd10:10:20::10),Na start zrobimy IPv6 tylko w LAN (ULA, bez internetu po IPv6). Globalny prefix od ISP i pełne IPv6 w Dockerze/Traefiku możemy dodać jako kolejny etap.
Obecna sytuacja (IPv4):
LAN: 10.10.20.0/24
MikroTik (brama): 10.10.20.1
rpi5 (Pi‑hole, Traefik, usługi Docker): 10.10.20.10
Proponowana IPv6 (ULA, tylko wewnętrznie):
prefix LAN ULA: fd10:10:20::/64
MikroTik (LAN): fd10:10:20::1/64
rpi5: fd10:10:20::10/64
To odpowiada IPv4 10.10.20.* → fd10:10:20::* i jest łatwe do ogarnięcia.
/system package print where name~"ipv6"
Jeśli pakiet ipv6 jest disabled → włącz i zrób reboot.
Włącz ogólnie IPv6:
/ipv6 settings set disable-ipv6=no
Masz tylko wbudowane listy (all, none, dynamic, static), więc najpierw tworzymy własne:
/interface list add name=WAN comment="Uplink/WAN"
/interface list add name=LAN comment="Internal/LAN"
Teraz ustalamy, które interfejsy są WAN i LAN:
/interface print
/interface bridge print
Załóżmy (zmień, jeśli u Ciebie jest inaczej):
WAN = ether1
bridge LAN = bridge-lan
Dodanie do list:
/interface list member add list=WAN interface=ether1
/interface list member add list=LAN interface=bridge-lan
(Jeśli Twój bridge nazywa się po prostu bridge, to użyj bridge zamiast bridge-lan)
/ipv6 address add address=fd10:10:20::1/64 interface=bridge-lan advertise=yes comment="LAN ULA"
advertise=yes → MikroTik wysyła RA, hosty same dostaną adresy fd10:10:20::xxxx i bramę fd10:10:20::1.Uwaga: jeśli masz już jakieś reguły IPv6 – wstaw te poniżej wysoko (nad ewentualnymi drop all).
/ipv6 firewall filter
add chain=input action=accept connection-state=established,related comment="IPv6: allow established, related"
add chain=input action=accept protocol=icmpv6 comment="IPv6: allow ICMPv6"
add chain=input action=accept in-interface-list=LAN comment="IPv6: allow LAN to router"
add chain=input action=drop in-interface-list=WAN comment="IPv6: drop everything from WAN to router"
add chain=forward action=accept connection-state=established,related comment="IPv6: allow established/related forward"
add chain=forward action=accept protocol=icmpv6 comment="IPv6: allow ICMPv6 forward"
add chain=forward action=drop in-interface-list=WAN connection-state=new comment="IPv6: block new from WAN to LAN"
To jest poprawiona wersja – korzysta z list interfejsów, które właśnie utworzyłeś, więc nie będzie błędu „input does not match any value of interface-list”.
Sprawdź nazwę interfejsu:
ip addr
Załóżmy, że to enp1s0. Edytuj plik netplan, w którym masz skonfigurowane 10.10.20.10 (np. /etc/netplan/01-netcfg.yaml):
network:
version: 2
renderer: networkd
ethernets:
enp1s0:
addresses:
- 10.10.20.10/24
- fd10:10:20::10/64
routes:
- to: default
via: 10.10.20.1
nameservers:
addresses:
- 10.10.20.10
Uwagi:
fd10:10:20::1).10.10.20.10 – Pi‑hole), tak jest najprościej na start.Zastosuj:
sudo netplan apply
ip -6 addr show
ip -6 route show
Powinieneś zobaczyć:
fd10:10:20::10/64 na enp1s0,fd10:10:20::xxxx/64 (SLAAC – normalne),default via fd10:10:20::1.Testy z rpi5:
ping -6 fd10:10:20::1 # MikroTik
ping -6 fd10:10:20::10 # lokalnie po IPv6
Windows
ipconfig
Sprawdź:
fd10:10:20::,fd10:10:20::1.Test ping:
ping -6 fd10:10:20::1 # MikroTik
ping -6 fd10:10:20::10 # rpi5
Linux
ip -6 addr show
ping -6 fd10:10:20::1
ping -6 fd10:10:20::10
Jeśli to działa – dual‑stack w LAN (L2/L3) jest skonfigurowany poprawnie.
AAAA dla *.labKlienci nadal pytają Pi‑hole po IPv4 (10.10.20.10), ale Pi‑hole może im już zwracać również IPv6.
Wejdź w panel Pi‑hole:
[http://10.10.20.10/admin](http://10.10.20.10/admin) lub [http://pihole.lab/admin](http://pihole.lab/admin)Sekcja:
Dodaj (lub uzupełnij istniejące A):
portainer.lab → fd10:10:20::10gitea.lab → fd10:10:20::10grafana.lab → fd10:10:20::10kuma.lab → fd10:10:20::10loki.lab → fd10:10:20::10traefik.lab → fd10:10:20::1010.10.20.10) zostawiasz – będziesz mieć równolegle A + AAAA dla tych samych nazw.Test z klienta:
nslookup portainer.lab 10.10.20.10
Oczekiwany efekt:
Address: 10.10.20.10 (A),Address: fd10:10:20::10 (AAAA).Na kliencie (Linux lub WSL):
ping -6 portainer.lab
ping -6 gitea.lab
Jeżeli odpowiedź przychodzi z fd10:10:20::10 → DNS i routing po IPv6 w LAN działają.
HTTP/HTTPS:
http://portainer.lab, http://gitea.lab – na tym etapie mogą wciąż używać IPv4 do kontenerów (bo Docker domyślnie nie ma włączonego IPv6 NAT).Kiedy powyższe działa (pingi + DNS po IPv6):