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