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.

IPv6 (last edited 2006-01-11 10:27:59 by host-82-135-30-10)