Strona 1 z 1

Sposób konfiguracji IPv6 na ADSL (Neostrada) pod Debianem

: 15 września 2008, 17:47
autor: afterhours
Poniższy poradnik pokaże w jaki sposób skonfigurować tunel IPv6 na modemie ADSL (Neostrada). Poradnik może być stosowany także do innych dostawców ADSL jak np. NET24 (Netia), różnice występują jedynie w konfiguracji modemu.
  1. Na sam początek jest niezbędne prawidłowo działające połączenie z internetem. Użytkowników neostrady odsyłam do tego poradnika:[list:c5b74dbb32]http://debian.linux.pl/viewtopic.php?t=2875
[*]Kolejnym krokiem jest uzyskanie domeny na dynamicznym IP. W tym celu posłużymy się DynDNS.
  1. Po rejestracji/zalogowaniu na stronie należy przejść do "My Services" i w dziale "Host Services" dodać naszą domenę poprzez kliknięcie na "Add Hostname".
  2. Jesteśmy już właścicielem naszej dynamicznej domeny, teraz należy zainstalować program, który będzie aktualizował adres IP w naszej domenie. Robimy to w następujący sposób:

    Kod: Zaznacz cały

    # apt-get install ddclient
    Podczas instalacji program poprosi nas o wybranie serwisu, który obsługuje naszą domenę. Podanie loginu, hasła, nazwy naszej domeny oraz interface'u sieciowego (tj. ppp0). W poradniku posłużę się domeną ipv6.dydns.com.
[*]Przyszedł czas na domenę typu NS, darmową możemy zdobyć na FreeDNS lub VEL. Możemy także użyć wykupionej domeny jeśli taka posiadamy. W tym poradniku posłużę się darmową domeną z serwisu FreeDNS.
  1. Po szybkiej i prostej rejestracji przechodzimy do "Subdomains" następnie klikamy na "Add a subdomain".
  2. W polu "Type" wybieramy NS, podajemy nazwę subdomeny, wybieramy jedną z dostępnych domen, a w polu "Address" podajemy wcześniej zarejestrowaną dynamiczną domenę. W moim przypadku będzie to ipv6.dydns.com. W krótkim czasie staliśmy się posiadaczem domeny np. ipv6.strangled.net wydelegowanej na nasz serwer nazw.
[*]Instalacja oraz konfiguracja serwera nazw pod naszą domenę NS.
  1. Proponuje zainstalować BIND9, a robi się to tak:

    Kod: Zaznacz cały

    # apt-get install bind9
  2. Następnie dodajemy naszą strefę w głównym pliku konfiguracyjnym:

    Kod: Zaznacz cały

    # nano /etc/bind/named.conf
    i dodajemy wpis:

    Kod: Zaznacz cały

    zone "ipv6.strangled.net" IN {
                  type master;
                  file "ipv6.strangled.net";
                  allow-update { none; };
                  allow-transfer { none; };
                  notify yes;
              };
  3. Tworzymy plik strefy:

    Kod: Zaznacz cały

    # touch /var/cache/bind/ipv6.strangled.net
           # nano  /var/cache/bind/ipv6.strangled.net
    i dodajemy wpis:

    Kod: Zaznacz cały

    $TTL 120
              $ORIGIN ipv6.strangled.net.
              @    IN    SOA    ipv6.strangled.net. root.ipv6.strangled.net. (
                      2008091501 ; serial
                      3600 ; refresh
                      1800 ; retry
                      1209600 ; expire
                      86400 ) ; minimum
              @    IN    NS     ipv6.dyndns.com.
              @ IN A 83.26.212.195      ; Aktualny adres IP
    Adres IP można sprawdzić np. na TwojeIP. Zwracam szczególną uwagę na wpis "IN A", ważne aby został zapisany dokładniej w takiej postaci.
    Będzie to miało znaczenie podczas uruchomienia skryptu do podnoszenia tunelu ale o tym później.
  4. Pozostało nam przeładować strefę i sprawdzić czy działa poprawnie.
    Przeładowanie robimy tak:

    Kod: Zaznacz cały

    # rndc reload ipv6.strangled.net
             zone reload queued
    zaś sprawdzenie czy wszystko działa poprawnie poprzez:

    Kod: Zaznacz cały

    # host -t A ipv6.strangled.net
    ipv6.strangled.net has address 83.26.212.195
[*]Znaleźliśmy się w najważniejszej części poradnika, mianowicie bierzemy się za postawienie naszego tunelu IPv6.
  1. Rejestrujemy się w serwisie GO6.
  2. Pobieramy program Gateway6 5.1 Source Code (Linux/Unix/Darwin/BSD) i instalujemy:

    Kod: Zaznacz cały

    # apt-get install libssl-dev g++
    # tar xvf gw6c-5_1-RELEASE-src.tar.gz
    # cd tspc-advanced
    # make install target=linux installdir=/usr/local/gw6c
  3. Konfiguracja GW6c:

    Kod: Zaznacz cały

    # nano /usr/local/gw6c/bin/gw6c.conf
    I uzupełniamy config w następujący sposób:

    Kod: Zaznacz cały

    userid=login_z_strony_go6.net    
    passwd=hasło      
    server=broker.freenet6.net
    auth_method=any
    host_type=router
    prefixlen=48
    if_prefix=ppp0              
    dns_server=ipv6.dydns.com
    log_console=3
  4. Pozyskanie naszego adresu IPv6:

    Kod: Zaznacz cały

    # /usr/local/gw6c/bin/gw6c -f /usr/local/gw6c/bin/gw6c.conf
    w terminalu wyświetli nam się sporo informacji. Musimy odnaleźć linie:

    Kod: Zaznacz cały

    <prefix length="48">2001:05c0:a00c:0000:0000:0000:0000:0000</prefix>
    posiadamy już adresacje IPv6 z przedziału 2001:05c0:a00c::/48
  5. Na koniec mała modyfikacja kosmetyczna:

    Kod: Zaznacz cały

    # nano /usr/local/gw6c/bin/gw6c.conf
    i zmieniamy:

    Kod: Zaznacz cały

    log_console=3
    na:

    Kod: Zaznacz cały

    log_console=0
[*]Mamy już IPv6 czas na dodanie wpisów AAAA do naszej domeny NS oraz stworzenie strefy z revDNS.
  1. Dodanie wpisów typu AAAA:

    Kod: Zaznacz cały

    # nano /var/cache/bind/ipv6.strangled.net
    uzupełniamy o:

    Kod: Zaznacz cały

    @                         IN      AAAA    2001:5c0:a00c::1
    test.ipv6.strangled.net   IN      AAAA    2001:5c0:a00c::5
    lubie.ipv6.strangled.net  IN      AAAA    2001:5c0:a00c::10
    Ważne! Wpis A (tj. @ IN A 83.26.212.195) musi zostać na końcu pliku strefy.
  2. Obliczanie revDNS dla naszego IPv6.

    Kod: Zaznacz cały

    # apt-get install ipv6calc
    # ipv6calc -r 2001:05c0:a00c::/48
    No input type specified, try autodetection...found type: ipv6addr
    c.0.0.a.0.c.5.0.1.0.0.2.ip6.int.
    nasz revDNS ma następującą postać:

    Kod: Zaznacz cały

    c.0.0.a.0.c.5.0.1.0.0.2.ip6.arpa
  3. Dodajemy naszego revDNS'a do configu:

    Kod: Zaznacz cały

    # nano /etc/bind/named.conf
    i dodajemy wpis:

    Kod: Zaznacz cały

    zone "c.0.0.a.0.c.5.0.1.0.0.2.ip6.arpa" IN {
                       type master;
                       file "revdns.ipv6";
                     };
  4. Tworzymy plik strefy:

    Kod: Zaznacz cały

    # touch /var/cache/bind/revdns.ipv6
    # nano  /var/cache/bind/revdns.ipv6
    i dodajemy wpis:

    Kod: Zaznacz cały

    $TTL 120
                    $ORIGIN c.0.0.a.0.c.5.0.1.0.0.2.ip6.arpa.
                    @	IN	SOA	ipv6.strangled.net. root.ipv6.strangled.net. (
    			2007092708
    			3600
    			1800
    			1209600
    			86400 )
                    @    IN    NS     ipv6.dyndns.com.
                    1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0 IN PTR ipv6.strangled.net.
                    5.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0 IN PTR test.ipv6.strangled.net.
                    0.1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0 IN PTR lubie.ipv6.strangled.net.
  5. Sprawdzamy czy wszystko działa poprawnie:

    Kod: Zaznacz cały

    # host ipv6.strangled.net
                    ipv6.strangled.net has address 83.26.212.195
                    ipv6.strangled.net has IPv6 address 2001:5c0:a00c::1   
                    # host 2001:5c0:a00c::1   1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c.0.0.a.0.c.5.0.1.0.0.2.ip6.arpa domain name pointer ipv6.strangled.net.
[*]Musimy postawić ostatni krok, aby nasz tunel był cały czas włączony (pomimo zmiany IP) należy uruchomić skrypt do podnoszenia naszego tunelu oraz aktualizacji IP w serwerze nazw. Skrypt do poprawnego działania wymaga IProute. Poniższy skrypt powinien być uruchamiany cyklicznie (co parę minut), można to wykonać poprzez crontaba.

Kod: Zaznacz cały

#!/bin/bash
ZONE=/var/cache/bind/ipv6.strangled.net # ścieżka do pliku strefy
BACKUP=/var/cache/bind/ipv6.strangled.net.bak # ścieżka do backupu strefy
IPLIST="1 5 10" # lista adresów IPv6
POOL="2001:5c0:a00c::" # pula adresów IPv6

DNSIP=`cat $ZONE | grep "IN A" |  awk -F" " '{ print $4 }'`
MYIP=`/sbin/ifconfig ppp0 | grep "inet addr\:" | awk '{ print (substr($2,6)) }'`

   if [ "$DNSIP" = "$MYIP" ];
     then
        echo '--------------------------------------------------------'
        echo Tunel jest juz poprawnie skonfigurowany
        echo '--------------------------------------------------------'
     else
        echo '--------------------------------------------------------'
        echo '****** Podnoszenie Tunelu IPv6'
        echo '****** ModProbe IPv6'
        modprobe ipv6
        echo '****** Wylaczanie nieaktualnego interfacu'
        ifconfig sit1 down
        echo '****** Aktualizacja BIND'
        cat $ZONE > $BACKUP
        sed -e '$d' $BACKUP > $ZONE
        echo '@ IN A '$MYIP >> $ZONE
        killall -HUP named
        sleep 1s
        echo '****** Uruchamianie GW6C'
        /usr/local/gw6c/bin/gw6c -f /usr/local/gw6c/bin/gw6c.conf
        echo '****** Dodawanie adresow IPv6 2001:05c0:a00c::1/48'
        sleep 5s
          for ip in $IPLIST; do
            echo '--Dodaje '$POOL$ip
            ip a a $POOL$ip dev sit1
          done
        echo '****** Tunel zostal podniesiony'
        echo '--------------------------------------------------------'
   fi
[/list :o :c5b74dbb32]Poradnik został oparty o artykuł http://pasternok.org/articles/ipv6-i-neostrada.html.
Z góry przepraszam za wszelkie orty, co do zredagowania słabo to wyszło wkrótce poprawię :)