====== IPv6 ======
* RFC4291: [[https://youtu.be/z2NDIHsxP1Q|Ipv6 Adresse einfach erklärt, ipv6 Subnetting und ip Prefix]]
===== Neighbor Discovery (NDP) =====
* ipv6 multicast ping an alle hosts: ''%%ping6 ff02::1%eth0%%''
* ipv6 multicast ping an alle router: ''%%ping6 ff02::2%eth0%%''
* ndp cache (ipv6) bzw. arp tabelle (ipv4) auslesen:
* ''%%ip neigh%%''
* ''%%ip -6 neigh%%''
* ''%%ip -4 neigh%%''
===== IP Adressen reserviert für Dokumentation =====
* [[https://en.wikipedia.org/wiki/Reserved_IP_addresses]]
* IPv4:
* ''192.0.2.0/24'' (256)
* ''198.51.100.0/24'' (256)
* ''203.0.113.0/24'' (256)
* IPv6:
* ''2001:db8::/32'' (2^96)
* ''3fff::/20'' (2^108)
===== IPv6 ULA gegenüber IPv4 bevorzugen =====
==== Windows ====
# prefix präferenz anzeigen
netsh interface ipv6 show prefixpolicies
# 6to4, prio: 30 -> 20
netsh interface ipv6 set prefixpolicy prefix=2002::/16 precedence=20 label=2 store=persistent
# ipv4, prio: 35 -> 30
netsh interface ipv6 set prefixpolicy prefix=::ffff:0:0/96 precedence=30 label=4 store=persistent
# ula, prio: 3 -> 35
netsh interface ipv6 set prefixpolicy prefix=fc00::/7 precedence=35 label=13 store=persistent
# prefix präferenz anzeigen
netsh interface ipv6 show prefixpolicies
===== Teredo Tunneling =====
* Teredo erlaubt es IPv6-Konnektivität an einem IPv4-only Anschluss
* Da Teredo am aussterben ist, gibt es kaum noch aktive Server
* für den zuletzt funktionierenden Server siehe den nicht auskommentierten ''ServerAddress''-Eintrag in der Linux-Konfiguration
* Teredo nutzt UDP und benötigt Port 3544 und einen weiteren Port (Firewall muss ausgehend zulassen)
* Es wird empfohlen Teredo nicht zu nutzen, weil es sehr unzuverlässsig sein kann
* Es ist jedoch nützlich, wenn man unbedingt IPv6 benötigt und keine andere Möglichkeit hat
==== Linux ====
* Debian
apt install miredo
# Please refer to the miredo.conf(5) man page for details.
InterfaceName teredo
# Pick a Teredo server:
#ServerAddress teredo.ipv6.microsoft.com
#ServerAddress teredo-debian.remlab.net
#ServerAddress teredo.trex.fi
ServerAddress teredo.iks-jena.de
# Some firewall/NAT setups require a specific UDP port number:
BindPort 3545
systemctl restart miredo; systemctl status miredo
ip a
cat /var/log/syslog | grep -Fi miredo | less
==== Windows ====
* PowerShell als Admin ausführen
* [[https://learn.microsoft.com/powershell/module/networktransition/|Docs]]
* aktuellen Status abfragen: ''Get-NetTeredoState''
* Konfiguration abfragen: ''Get-NetTeredoConfiguration''
* Konfiguration zurücksetzen: ''Reset-NetTeredoConfiguration''
* Konfiguration modifizieren: ''Set-NetTeredoConfiguration''
Set-NetTeredoConfiguration -ServerName "teredo.iks-jena.de" -ClientPort 3545 -Type Default
ipconfig -all
===== IPv6 SLAAC auf FreeBSD =====
* ''man rc.conf''
* ''man ifconfig''
* ''man rtsold''
* ''man inet6''
# IPv6 aktivieren
ipv6_activate_all_interfaces="YES"
# privacy extensions (temporary addresses)
ipv6_privacy="NO"
# ICMPv6 RA (router advertisment)
#ifconfig_em0_ipv6="inet6 accept_rtadv"
# ICMPv6 RA (router advertisment) & default route
ifconfig_em0_ipv6="inet6 accept_rtadv -no_radr"
# ICMPv6 RS (router solicitation)
rtsold_enable="YES"
rtsold_flags="-aF"
# IPv6 Sockets sind von IPv6 & IPv4 ansprechbar
net.inet6.ip6.v6only=0
===== IPv6 abschalten =====
==== FreeBSD ====
* [[https://www.freebsd.org/doc/de/books/developers-handbook/ipv6.html]]
* [[https://forums.freebsd.org/threads/freebsd-9-disable-ipv6.29042/]]
* [[http://www.hpc.mil/index.php/2013-08-29-16-03-23/networking-overview/2013-10-03-17-24-38/ipv6-knowledge-base-ip-transport/enabling-ipv6-in-freebsd-unix]]
* [[https://grox.net/sysadm/unix/fbsd_disable_ipv6.howto]]
in FreeBSD 10.1
> vi /etc/rc.conf
...
### IPv6
ip6addrctl_verbose="NO" # Set to YES to enable verbose configuration messages
ip6addrctl_policy="ipv4_prefer" # Use IPv4 instead of IPv6
ipv6_default_interface="NO"
ipv6_gateway_enable="Yes"
ipv6_ipv4mapping="YES"
#
### abschalten
ip6addrctl_enable="NO" # Set to YES to enable default address selection
ipv6_enable="NO" # FreeBSD 5.4
ipv6_activate_all_interfaces="NO"
ipv6_network_interfaces="none"
...
testen ob IPv6 noch aktiv ist:
> netstat -anp tcp | fgrep tcp6
> netstat -s -p ip6
> cat /etc/sysctl.conf
### IPv6 abschalten
kern.features.inet6=0
==== Linux ====
* [[http://www.pro-linux.de/artikel/2/1557/ipv6-basiertes-heim-netzwerk.html|IPv6]]
* [[https://linuxconfig.org/how-to-disable-ipv6-address-on-ubuntu-18-04-bionic-beaver-linux]]
* //**WARNING:** Please note, that at the time of writing this method to disable IPv6 after reboot using /etc/sysctl.conf configuration file on Ubuntu 18.04 does Not work. However, this seems to be a bug so feel free to try.//
* dieses Kommando hat bei Ubuntu 18.04 LTS funktioniert:
* ''for A in $(ls /proc/sys/net/ipv6/conf/*/disable_ipv6) ; do echo "1" > ${A} ; done''
Viele Anwendungen ([[ssh_ssl#unerwuenschte_wartezeit_wegen_ipv6_vor_dem_login|SSH]], host, ping, nslookup, ...) ist die Reihenfolge,
nach der sie die einzelnen Netzwerkprotokolle einsetzen, separat festgelegt.
=== /etc/gai.conf ===
* [[http://www.funtoo.org/wiki/IPv6_Networking#Prefer_IPv4_over_IPv6]]
* [[http://www.getipv6.info/index.php/Customer_problems_that_could_occur#GNU.2FLinux]]
Es gibt aber auch noch die glibc, die ebenfalls nach einer konfigurierbaren
Reihenfolge vorgeht.
Die dazugehörige Konfigurationsdatei heißt "''/etc/gai.conf''":
# vi /etc/gai.conf
precedence ::ffff:0:0/96 100
=== /etc/sysctl.conf ===
net.ipv6.conf.all.disable_ipv6=1
net.ipv6.conf.default.disable_ipv6=1
net.ipv6.conf.lo.disable_ipv6=1
=== IPv6-Kerneloption ===
Um dem Kernel beim booten bereits mitzuteilen, dass IPv6 unerwünscht ist,
gibt es eine Option: "''ipv6.disable=1''".
Bei Ubuntu trägt man diese hier ein:
# vi /etc/default/grub
...
GRUB_CMDLINE_LINUX_DEFAULT="noplymouth,ipv6.disable=1"
...
Jetzt muss die Grub-Konfigurations neu geschrieben werden:
# update-grub