IPv6

INN Kompilieren Bei den meisten Rootservern ist SuSE 9.1 oder 9.3 vorinstalliert, das INN-RPM beherrscht leider kein IPv6. Die RPMs sind ohne -enable-ipv6 compiliert. Will man nur den INN IP version 6 fähig machen, kompiliert man sich das Paket neu. Die inn.spec muss dazu ander Stelle LDFLAGS="-s" CFLAGS="$RPM_OPT_FLAGS -pipe -fno-strict-aliasing" angepasst werden: ./configure \ --enable-dual-socket \ --enable-uucp-rnews \ --enable-setgid-inews \ --prefix=/usr/lib/news \ --mandir=/usr/share/man \ --disable-shared \ --enable-tagged-hash \ --enable-ipv6 \ --with-perl \ --with-sendmail=/usr/sbin/sendmail \ --with-news-user=news \ --with-news-group=news \ --with-news-master=news \ --with-etc-dir=/etc/news \ --with-db-dir=/var/lib/news \ --with-run-dir=/var/run/news \ --with-log-dir=/var/log/news \ --with-spool-dir=/var/spool/news \ --with-tmp-dir=/var/spool/news/tmp Wird dabei aber kein Update des INN vorgnommen, lässt sich das so entstanden Paket nicht mit rpm -Uvh einspielen, weil es die gleiche Versionsnummer hat. Deswegen ist das ebenfalls anzupassen. Auf jeden Fall ist darauf zu achten, dass ein Backup der wichtigen Konfigurationsdaten gemacht worden ist. make install wenn nicht der Packagemanager verwendet wird, macht das zwar automatisch, in dem alle Dateien nach datei.conf.OLD kopiert werden, aber spätesten ein zweiter Aufruf, wenn man sich bei configure vertan hat (zum Beispiel --enable-tagged-hash rausgenommen hat und der INN danach nicht funktioniert) würde dann die alten Dateien überschreiben. Ansonsten sei es das hier mit der Kompilation von INN, da es hier eigentlich um IPv6 geht und dazu langt es --enable-ipv6 hinzuzufügen. IP version 6 Adresse Damit der Server sich an eine IPv6-Adresse binden kann, braucht er natürlich eine. Der meist empfohlene Provider SIXXS ist dazu nicht geeignet. SIXXS schmeisst einen raus, wenn man einen Newsserver mit deren Adressen betreiben will. Hat man einen 1&1-Rootserver dann ist es Stand Dezember 2005 möglich sich ein Subnetz von Schlund geben zu lassen. Dazu schreibt der Serverinhaber eine formlose Mail an ipv6@schlund.de mit der freundlichen Bitte für ein IPv6-Subnetz. Nach ein bis zwei Tagen erhält der Serverinhaber die Daten, die sehen dann so aus: ============================ Hier ihre IPv6-Tunneldaten: ---------------------------- IP Endpunkt Kunde = 123.456.789.123 IP Endpunkt Schlund = 212.227.117.6 IPv6-Netz auf dem Tunnel = 2001:08d8:0080:0011::124/127 IPv6 Kunde = 2001:08d8:0080:0011::125 IPv6 Schlund = 2001:08d8:0080:0011::124 Die obige "IPv6 Schlund" sollten sie als default gateway konfigurieren. ========================== Hier ihre IPv6-Netzdaten: -------------------------- Das folgende IPv6 Netz = 2001:08d8:0081:126::/60 ... Natürlich mit anderen Adressen. Wer einen Debianserver hat dem empfehle ich einen Blick auf http://kb.gnuher.de/various/HOWTO-ipv6.html Einrichtung Arnold schreibt Jörn eine Mail: Leider nicht wirklich. Die URLs sind dürftig: http://faq.1und1.de/server/root_server/howtos/1.html http://kb.gnuher.de/various/HOWTO-ipv6.html da auf meiner Kiste SuSE läuft, aber da du Debian hast, dürften die für dich brauchbarer sein. Die erste Hürde war aber nicht die Einrichtung der Tunnel und der Connection als solche, sondern rauszufinden, dass INN nur nach Neukompilierung ipv6 beherrscht. Zumindest bei SuSE ist das Ding ohne ipv6-kompiliert worden. Das Sourcerpm geholt und dieselbe Version funktioniert wunderbar mit ipv6, wenn ich dieselben configure-Optionen wie in der innd.spec verwende und zusätzlich ein --enable-ipv6 hinzufüge, war das dann der Schlüssel, damit sich innd überhaupt an die Adresse bindet. In der inn.conf noch bindaddress: all bindaddress6: "2001:8d8:81:1260::1" und sourceaddress: all sourceaddress6: "2001:8d8:81:1260::1" eingefügt und er tat es endlich. Wenn ich jetzt noch die Reversedelgation für den Bereich von Schlund für die Namensauflösung hingebogen bekomme, dann sollte lt. Sven Geggus der Rest (peering,feeding) automatisch auch über ipv6 funktionieren. Folgende Daten hatte cih von Schlund erhalten: IP Endpunkt Kunde = 217.160.217.58 IP Endpunkt Schlund = 212.227.117.6 IPv6-Netz auf dem Tunnel = 2001:08d8:0080:0011::304/127 IPv6 Kunde = 2001:08d8:0080:0011::305 IPv6 Schlund = 2001:08d8:0080:0011::304 IPv6 Netz = 2001:08d8:0081:1260::/60 Und folgendes habe ich wie bei gnuher abgekupfert daraus gemacht: Wir haben von Schlund das Netz 2001:08d8:0081:1260::/60 erhalten. Dieses wurde wie folgt aufgeteilt: 2001:08d8:0081:1260::/64 Netz für code-werk.net selbst davon vergeben: dns.ipv6.code-werk.net 2001:08d8:0081:1260::1 2001:08d8:0081:1261::/64 Netz für Tunnelendpunkte davon vergeben: gw-arnold.code-werk.net 2001:08d8:0081:1261::1 gw-arnold.ipv6.code-werk.net 2001:08d8:0081:1261::2 gw-christian.code-werk.net 2001:08d8:0081:1261::3 gw-christian.ipv6.code-werk.net 2001:08d8:0081:1261::4 2001:08d8:0081:1262::/64 Subnetz Arnold 2001:08d8:0081:1263::/64 Subnetz Christian 2001:08d8:0081:1264::/64 noch nicht vergeben 2001:08d8:0081:1265::/64 noch nicht vergeben 2001:08d8:0081:1266::/64 noch nicht vergeben 2001:08d8:0081:1267::/64 noch nicht vergeben 2001:08d8:0081:1268::/64 noch nicht vergeben 2001:08d8:0081:1269::/64 noch nicht vergeben 2001:08d8:0081:126a::/64 noch nicht vergeben 2001:08d8:0081:126b::/64 noch nicht vergeben 2001:08d8:0081:126c::/64 noch nicht vergeben 2001:08d8:0081:126d::/64 noch nicht vergeben 2001:08d8:0081:126e::/64 virtueller User 2001:08d8:0081:126f::/64 Subnetz Da kein Debian gnuher debian installation habe ich für SuSE so umgebogen: #!/bin/sh # $Id: iptunnelserver.sh Exp $ # Script for Linux 2.4 and 2.6 kernels LOCAL4=10.10.10.2 REMOTE4=217.160.217.58 LOCAL6=2001:08d8:0081:1261::2/128 REMOTE6=2001:08d8:0081:1261::1 TUNLIF=arnold ip tunnel add $TUNLIF mode sit remote ${REMOTE4} ttl 64 ip link set $TUNLIF mtu 1280 ip link set dev $TUNLIF up ip addr add ${LOCAL6} dev $TUNLIF ip tunnel change $TUNLIF local 127.0.0.1 ttl 64 # ip ro add 2000::/3 via ${REMOTE6} dev arnold # echo "0" > /proc/sys/net/ipv6/conf/all/forwarding ip -6 ro add 2001:08d8:0081:1261::1/128 dev $TUNLIF ip -6 ro add default via 2001:08d8:0081:1261::1 Und zuhause für Gentoo sieht das dann so aus: #!/bin/sh # $Id: iptunnelzuhause.sh Exp $ # Script for Linux 2.4 and 2.6 kernels LOCAL4=10.10.10.1 REMOTE4=217.160.217.58 LOCAL6=2001:08d8:0081:1261::1/128 REMOTE6=2001:08d8:0081:1261::2 SUBNETZ=2001:08d8:0081:1262::/64 TUNLIF=arnold ip tunnel add $TUNLIF mode sit remote ${REMOTE4} ttl 64 ip link set $TUNLIF mtu 1280 ip link set dev $TUNLIF up ip addr add ${LOCAL6} dev $TUNLIF # ip ro add 2000::/3 via ${REMOTE6} dev arnold # echo "0" > /proc/sys/net/ipv6/conf/all/forwarding ip -6 ro add 2001:08d8:0081:1261::2/128 dev $TUNLIF ip -6 ro add $SUBNETZ dev $TUNLIF ip tunnel change $TUNLIF local 217.160.217.58 ttl 64 ip tunnel change $TUNLIF remote 82.135.30.10 Die ipv6-1und1-Seite funktioniert so nicht, weil das lokale Netz nicht am Interface hängt: #!/bin/sh # $Id: ipv6schlund.sh auf dem SuSEServer $ # Script for Linux 2.4 and 2.6 kernels LOCAL4=217.160.217.58 REMOTE4=212.227.117.6 LOCAL6=2001:08d8:0080:0011::305/127 IP0=2001:08d8:0081:1260::/64 IP1=2001:08d8:0081:1260::1/64 REMOTE6=2001:08d8:0080:0011::304 IP=/sbin/ip TUNLIF=schlund case "$1" in start) echo -n "Starting ipv6 tunnel: schlund" $IP tunnel add $TUNLIF mode sit local ${LOCAL4} remote ${REMOTE4} ttl 64 $IP link set $TUNLIF mtu 1280 $IP link set dev $TUNLIF up $IP addr add ${LOCAL6} dev $TUNLIF $IP -6 addr add ${IP0} dev $TUNLIF $IP -6 addr add ${IP1} dev $TUNLIF $IP ro add 2000::/3 via $REMOTE6 dev $TUNLIF # echo "1" > /proc/sys/net/ipv6/conf/all/forwarding echo "." ;; stop) echo -n "Stopping ipv6 tunnel: schlund" ifconfig $TUNLIF down $IP tunnel del $TUNLIF echo "." ;; force-reload|restart) $0 stop $0 start ;; *) echo "Usage: /etc/init.d/$0 {start|stop|restart|force-reload}" exit 1 esac exit 0 Dann noch einen named.ipv6.code-werk.include für bind erstellt /* * 2001:08d8:0081:1260::/60 * * Zone file built with the fpsn.net IPv6 Reverse DNS zone builder * http://tools.fpsn.net/ipv6-inaddr */ zone "6.2.1.1.8.0.0.8.d.8.0.1.0.0.2.ip6.arpa" { // If this is a slave server comment out this line: type master; // And uncomment this line: //type slave; // Change this to point to the correct file name file "master/reverse6.2.1.1.8.0.0.8.d.8.0.1.0.0.2.ip6.arpa"; // Comment out the following lines if this is a slave entry: allow-transfer { 195.20.225.142; }; // Uncomment the following lines // masters { // 217.160.217.58; //}; }; zone "ipv6.code-werk.net" in { file "master/ipv6.code-werk.net"; type master; allow-transfer { 195.20.225.142; }; }; zone "dns.ipv6.code-werk.net" in { file "master/dns.ipv6.code-werk.net"; type master; allow-transfer { 195.20.225.142; }; }; Und die entprechenden Zonendateien an die entsprechende Stelle gelegt ; ; 2001:08d8:0081:1260::/60 ; ; Zone file built with the fpsn.net IPv6 Reverse DNS zone builder ; http://tools.fpsn.net/ipv6-inaddr ; $TTL 3d ; Default TTL (bind 8 needs this, bind 9 ignores it) @ IN SOA 6.2.1.1.8.0.0.8.d.8.0.1.0.0.2.ip6.arpa. schiller.code-werk.net. ( 200512310 ; Serial number (YYYYMMdd) 24h ; Refresh time 30m ; Retry time 2d ; Expire time 3d ; Default TTL (bind 8 ignores this, bind 9 needs it) ) ; Name server entries IN NS dns.ipv6.code-werk.net. IN NS ns2.v6.schlund.de. ; IPv6 PTR entries ; Subnet #1 $ORIGIN 0.6.2.1.1.8.0.0.8.d.8.0.1.0.0.2.ip6.arpa. 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0 IN PTR dns.ipv6.code-werk.net. ; Subnet #2 $ORIGIN 1.6.2.1.1.8.0.0.8.d.8.0.1.0.0.2.ip6.arpa. 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0 IN PTR gw-arnold.code-werk.net. 2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0 IN PTR gw-arnold.ipv6.code-werk.net. 3.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0 IN PTR gw-christian.code-werk.net. 4.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0 IN PTR gw-christian.ipv6.code-werk.net. $TTL 1W @ IN SOA ipv6.code-werk.net. schiller ( 42 ; serial (d. adams) 2D ; refresh 4H ; retry 6W ; expiry 1W ) ; minimum IN NS dns.ipv6.code-werk.net. IN AAAA 2001:8d8:81:1260::1 news.ipv6.code-werk.net. IN AAAA 2001:8d8:81:1260::1 dns.ipv6.code-werk.net. IN AAAA 2001:8d8:81:1260::1 gw-arnold.v6.code-werk.net. IN AAAA 2001:08d8:0081:1261::1 gw-christian.v6.code-werk.net. IN AAAA 2001:08d8:0081:1261::2 Da keine Reversedelegation bisher vorliegt, hoffe ich keinen Fehler gemacht zu haben und das alles so läuft, wie es soll. Zumindest motzt das Testtool auf denic nicht, dass mein bind falsch konfiguriert wäre, es motzt nur was, dass dies nicht der Master ist und in derselben AS liegt. Das ist logisch und soweit noch kein Fehler. Ich muss mir mal irgendwo einen gescheiten DNS-Server suchen, der unabhängig von Christians Server ist. Ob das jetzt idiotensicher ist, was ich hier beschrieben habe, weiss ich nicht, aber es scheint mir fasst schon wie ein kleines HOWTO, jetzt müssten eigentlich nur noch meine privaten Daten raus und dafür dann $Konfigurationsbeispiel rein und dann sollte es allgemein distributionsunabhängig funktionieren. Kannst mir ja sagen ob die Beschreibung brauchbar ist oder sogar daraus ein Howto basteln.
Deutsch