Ich habe in meiner pf.conf:
Code:
anchor "binat6_int" quick on $int_if inet6
anchor "binat6_ext" quick on $ext_if inet6
und dann ein Script, was bei Präfixwechseln mit dem /56 aufgerufen wird (zB 2003:d7:123:a00::/56):
Code:
PROG=$(basename ${0})
binatnet=${1}
siteid=fd00:0:0
sitenet=${siteid}::/48
intnet=${siteid}:fd00::/56
natnet=$(
slaacctl show interface pppoe0 \
| grep prefix: \
| egrep -o '[[:xdigit:]:]+/[0-9]+$' \
| head -n 1
)
[ -z "${natnet}" ] && { logger -t ${PROG} 'slaacctl returned no prefix?'; return 1; }
pfctl -a binat6_ext -f - <<-EOF
pass in quick to ${binatnet} modulate state (if-bound) rdr-to ${intnet} bitmask
pass out quick from ${intnet} modulate state (if-bound) nat-to ${binatnet} bitmask static-port
pass out quick from ${sitenet} modulate state (if-bound) nat-to ${natnet} port 49152:65535 random
EOF
pfctl -a binat6_int -f - <<-EOF
pass in quick to ${binatnet} tag BINAT6 modulate state (if-bound) rdr-to ${intnet} bitmask
pass out quick from ${intnet} tagged BINAT6 modulate state (if-bound) nat-to ${binatnet} bitmask static-port
pass out quick from ${sitenet} tagged BINAT6 modulate state (if-bound) nat-to ${natnet} port 49152:65535 random
EOF
logger -t ${PROG} "configured new binat network: ${binatnet} <-> ${intnet}"
Das macht aber irgendwie noch mehr, sehe ich grade. Das /56 wird 1:1 auf ein /56 gemappt,
gleichzeitig wird aber ein größeres /48 noch ausgehend in das kleinere /56 reingemappt, so dass jede neue ausgehende Verbindung eine neue Adresse benutzt. Ist ziemlicher Schnickschnack und normal wohl nicht nötig. Das betrifft jede Zeile, die
${sitenet}
verwendet. Die kann man weglassen. Edit: Es gibt Seiten, bei denen sind Logins noch an Quelladressen gekoppelt. Da funktioniert das nicht so gut.
Edit: Jetzt weiß ichs wieder. Das kleine Netz, in das alle sonstigen ausgehenden Verbindungen mit einer random Adresse reingemappt werden, ist das /64er Transfernetz, was man zusätzlich kriegt.
Also zusammenfassend:
fd00:0:0:fd00::/56 <-> public /56
fd00:0:0::/48 -> NAT auf public /64 mit randomisierten Quelladressen
Rest hat keinen Internetzugriff
Edit: Der zweite Anker auf dem internen Interface sorgt für die vollständig transparente Reflektion. Man sieht Verbindungen intern dann wie von außen kommen, nur mit seinem eigenen /56 als Quelle, inkl. der o.g. Random-Magic.