PatrickPR schreef op woensdag 23 december 2020 @ 11:20:
[...]
Kun je wat meer info geven over jouw netwerk? Welke router gebruik je en welke servers heb je draaien? Welke configuraties heb je allemaal aan moeten passen? Ik ben nog steeds aan het bekijken wat nu de impact zal zijn. Hoe zit het bijvoorbeeld met de beveiliging van al die devices als ze een publiekelijk IPv6 krijgen? Normaal vangt de router al een deel af (uiteraard afhankelijk van de configuratie als bijv portforwarding etc.)
sure:
- de router is een Linux box, met Fedora 30, (i5 op Gigabyte Z68P-DS3)
- zitten 2 NICs in: Intel Corporation 82574L Gigabit NIC, en Intel Corporation I350 Gigabit NIC (dual)
- ik gebruik NetworkManager om de PPPoE link te managen, Huawei glasvezel modem zit direct in een van de NICs (enp2s0), configuratie als volgt:
code:
1
2
3
4
5
6
7
8
9
10
11
| # create vlan interface with id 6 (where trined pppoe is located)
sudo nmcli con add type vlan dev enp2s0 id 6 con-name enp2s0.6 \
autoconnect yes mtu 1508 connection.interface-name enp2s0.6 \
ipv4.method disabled ipv6.method ignore
# discover if pppoe is on this vlan (sanity check)
sudo pppoe-discovery -I enp2s0.6
# if all is well, add the pppoe device (with trined uname/passwd)
sudo nmcli con add type pppoe username <USERNAME> password <PASSWORD> \
ifname pppoe0 pppoe.parent enp2s0.6 autoconnect yes |
- Mijn versie van NetworkManager is niet in staat om een lease te krijgen via DHCP6, wellicht is dat met Fedora 32 gefixed, om die reden heb ik dit custom ipv6-up.local script (in /etc/ppp/) geplaats:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| #!/bin/bash
case "$1" in
pppoe0)
PARENTDEV=$2
INTERFACE=$1
LOGDEVICE=$6
LEASEFILE=/var/lib/dhclient/dhclient6.leases
PIDFILE=/var/run/dhclient6.pid
CFGFILE=/etc/dhcp/dhclient6-$INTERFACE.conf
sysctl net.ipv6.conf.${INTERFACE}.accept_ra=2
sysctl net.ipv6.conf.${INTERFACE}.accept_ra_defrtr=1
sysctl net.ipv6.conf.${INTERFACE}.router_solicitations=1
PARENTHWADDR=`ip add show dev ${PARENTDEV} | grep link/ether | cut -f 6 -d \ | tail -n 1 | sed s/:/\\\\\\\\x/g`
echo "default-duid \"\\x00\\x03\\x00\\x01\\x$PARENTHWADDR\";" > $LEASEFILE
dhclient -6 -v -P -N -lf $LEASEFILE -pf $PIDFILE -cf $CFGFILE $INTERFACE
GUAPREFIX=`cat ${LEASEFILE} | grep iaprefix | \
sed -ne 's/[ \t]*iaprefix[ \t]*\([0-9a-f:\/]*\)[ \t]*{.*/\1/p'`
# create script in network-scripts otherwise ipv6-down scripts fail!
NMPPPNUM=`echo $LOGDEVICE | sed -e 's/.*\///'`
touch /etc/sysconfig/network-scripts/$NMPPPNUM
;; *)
;;
esac
exit 0 |
en dit ipv6-down.local script
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| #!/bin/bash
case "$1" in
pppoe0)
INTERFACE=$1
LOGDEVICE=$6
PIDFILE=/var/run/dhclient6.pid
dhclient -x -pf $PIDFILE || true
rm -f $PIDFILE || true &> /dev/null
# remove script in network-scripts created to prevent ipv6-down scripts fail!
NMPPPNUM=`echo $LOGDEVICE | sed -e 's/.*\///'`
rm -f /etc/sysconfig/network-scripts/$NMPPPNUM || true &>/dev/null
;;
*)
;;
esac
exit 0 |
Je moet radvd gebruiken voor ipv6 route advertisement, (systemctl enable radvd; systemctl start radvd), ik gebruik deze /etc/radvd.conf, enp6s0f0 en enp6s0f1 zijn mijn NICs voor het interne netwerk (WiFi en ethernet), de prefix moet je zelf invullen, is de statische prefix die je van trined hebt gekregen (dit zou je ook automatisch moeten kunnen halen van je ppp interface, maar dat is mij niet gelukt)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
| interface enp6s0f0
{
AdvSendAdvert on;
AdvManagedFlag on;
prefix fd5d:12c9:2201:1::1/64 {
AdvOnLink on;
AdvAutonomous on;
};
RDNSS fd5d:12c9:2201:1::1{
};
prefix <trinedprefix>01::1/64 {
AdvOnLink on;
AdvAutonomous on;
};
};
interface enp6s0f1
{
AdvSendAdvert on;
AdvManagedFlag on;
prefix fd5d:12c9:2201:2::1/64 {
AdvOnLink on;
AdvAutonomous on;
};
RDNSS <trinedprefix>01:2::1{
};
prefix 2a00:bba0:120e:b002::1/64 {
AdvOnLink on;
AdvAutonomous on;
};
}; |
zoals je ziet heb ik ook een local ipv6 in radvd.conf geconfigureerd, dat is mijn ULA, met 2 /64 subnets (fd5d:12c9:2201:1::/64 en fd5d:12c9:2201:2::/64) ik maak ook 2 subnets in de globale /56 prefix (GUA), je moet de laatste 2 nullen van de trined prefix weg laten, en vervangen door 01/02 voor twee subnets (het is een 56bit prefix).
Je moet NetworkManager vertellen welke interne NICs welke ipv6 subnets krijgen, dat kan zo:
code:
1
2
3
4
| sudo nmcli con mod enp6s0f0 ipv6.method manual ipv6.address fd5d:12c9:2201:1::1/64 ipv6.dns ::1 ipv6.dns-search example.net
sudo nmcli con mod enp6s0f1 ipv6.method manual ipv6.address fd5d:12c9:2201:2::1/64 ipv6.dns ::1 ipv6.dns-search example.net
sudo nmcli con mod enp6s0f0 +ipv6.address <trinedprefix>01::1/64
sudo nmcli con mod enp6s0f1 +ipv6.address <trinedprefix>02::1/64 |
Tenslotte heb je voor het ULA een dhcpd6 nodig (systemctl start dhcpd6.service), als je stabiele subnets in ddns wil, dit is mijn config (draait gewoon naast dhcpd voor ipv4):
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
| authoritative;
ddns-update-style interim;
ddns-updates on;
ddns-domainname "example.net.";
use-host-decl-names on;
allow client-updates;
allow unknown-clients;
update-optimization off;
update-conflict-detection false;
key DHCP_UPDATER {
algorithm hmac-md5;
secret <SECRET>;
};
zone example.net. {
primary 127.0.0.1;
key DHCP_UPDATER;
}
zone 1.0.0.0.1.0.2.2.c.9.2.1.d.5.d.f.ip6.arpa {
primary 127.0.0.1;
key DHCP_zone 2.0.0.0.1.0.2.2.c.9.2.1.d.5.d.f.ip6.arpa {
primary 127.0.0.1;
key DHCP_UPDATER;
}
subnet6 fd5d:12c9:2201:1::/64 {
option dhcp6.name-servers fd5d:12c9:2201:1::1;
option dhcp6.domain-search "example.net";
range6 fd5d:12c9:2201:1::100 fd5d:12c9:2201:1::200;
}
subnet6 fd5d:12c9:2201:2::/64 {
option dhcp6.name-servers fd5d:12c9:2201:2::1;
option dhcp6.domain-search "example.net";
range6 fd5d:12c9:2201:2::100 fd5d:12c9:2201:2::200;
}
UPDATER;
} |
ik draai verder gewoon named als dns server, configuratie moet een klein beetje aangepast workden om ipv6 te doen, dit moet je toevoegen als ip6.arpa (voor reverse lookup, voeg maar een subnet toe als voorbeeld):
code:
1
2
3
4
5
6
| zone "1.0.0.0.1.0.2.2.9.c.2.1.d.5.d.f.ip6.arpa" IN {
type master;
file "dynamic/fd5d:12c9:2201:1";
notify no;
allow-update { key DHCP_UPDATER; key rndc-key; localhost; fd5d:12c9:2201:1::1; };
}; |
verder kun je aan je zones makkelijk AAAA records toevoegen, gewoon naast de A records voor de forward lookup.
volgens mij is dat het wel zo'n beetje, performance is prima, en alles lijkt te werken tot nu toe (inclusief asterisk als PBX voor het voip nummer dat je van trined kunt krijgen).
Succes!!
[
Voor 0% gewijzigd door
Biazz op 23-12-2020 16:06
. Reden: had perongeluk nog een prive hostname in de config files ]