Projekt Sieciowy IPv6
Autor:
Dział: IPv6: "Microsoft Windows" i "Cisco Systems"
2.Protokół IPv6 w systemach firmy Microsoft 4
1.1 Ipv6 oraz Microsoft Windows 5
1.1.1Microsoft IPV6 Technology Preview for Windows 2000 7
1.1.1.1 Podstawy 7
1.1.1.2 Wymagania 7
1.1.1.3 Instalacja IPv6 7
1.1.1.4 Upgrade 8
1.1.1.5 Konfiguracja 8
1.1.1.6 Narzędzia 9
1.1.1.7 Aplikacje 14
1.1.1.8 Problemy 14
1.1.2Microsoft Research IPv6 Release 15
1.1.2.1 Podstawy 15
1.1.2.2Wymagania 15
1.1.2.3 Instalacja IPv6 15
1.1.2.4 Instalacja na Windows 2000 z dodatkiem Service Pack 2 15
1.1.2.5 Upgrade 16
1.1.2.6 Konfiguracja 16
1.1.2.7 Narzędzia 16
1.1.2.8 Aplikacje 16
1.1.3IPv6 w nowych wersjach Windows 17
1.1.3.1 Instalacja 18
1.1.3.2 Narzędzia i konfiguracja 18
1.1.4IPSec 18
2.1.4.1Konfiguracja IPSec pomiędzy dwoma stacjami w sieci lokalnej 18
2.1.4.2Problemy 22
1.1.5Połączenia IPv6 22
1.1.5.1 Polączenie typu link - local 22
1.1.5.2 Połączenie IPv6 pomiędzy dwoma podsieciami IPv4 24
1.1.5.3Przykład manualnej konfiguracji 6to4 25
1.1.5.4Podłączenia do sieci 6bone 26
1.1.5.5 Konfiguracja dwóch tuneli 27
1.1.6IPv6 i WWW 28
1.1.6.1 Witryny internetowe dostępne poprzez IPv6 29
1.2Aplikacje IPV6 dla Microsoft Windows 30
1.2.1Fnord! - serwer www IPv6 30
1.2.1.1 Instalacja i konfiguracja 31
1.2.1.2 Problemy 31
1.2.2Apache - serwer www IPv6 31
1.2.2.1 Instalacja i konfiguracja 31
1.2.2.2 Problemy 32
1.2.3Klienci ssh 32
1.2.3.1 Putty 32
1.2.3.2 Terra Term SSH 32
1.2.4Inne aplikacje 32
4.Bibliografia 34
5. 35
Microsoft, tak jak i każda inna firma branży informatycznej docenia potrzebę wprowadzenia protokołu IPv6. Postępowanie "giganta z Redmond" w tym przypadku jest jak najbardziej stosowne i dalekie od praktyk monopolistycznych. Mówiąc o wdrażaniu IPv6 przez Microsoft, całą akcję można opisać w czterech krokach, (o których mówi zresztą sam Microsoft):
wdrażanie IPv6 rozpoczęło się w 1998 roku, wraz z wydaniem "Microsoft Research IPv6", pakietu zawierającego niezbędne komponenty do testowania Ipng w środowisku Windows (wersja 1.0 została ukończona 23.03.1998 r.)
w marcu 2000 roku światło dzienne ujrzał "Microsoft IPV6 Technology Preview for, Windows 2000", czyli kolejny pakiet, umożliwiający dostęp do IPv6 na platformie Windows 2000, który dostarczał też podstawowe narzędzia programistyczne. Ostatnie zmiany do pierwszej edycji ukazały się 13.03.2000 r.
następnym krokiem jest przystosowanie produktów, tak, aby programiści zaczęli tworzyć aplikacje "od urodzenia" obsługujące IPv6. Spodziewane są także pierwsze użycia IPv6 przez klientów, na razie nie komercyjne i pod kontrolą. Ma to "zaprzyjaźnić" użytkowników z nowym protokołem i zwiększyć ich świadomość. Microsoft przypuszcza, iż pierwsze 10 procent użytkowników przestawi się na IPv6 w latach 2000 - 2003, a następne 20 procent w ciągu następnych trzech do pięciu lat.
w końcowej fazie IPV6 będzie szeroko dostępne, tak, aby jak najwięcej produktów, mogło wykorzystywać zalety IPv6. Hasłem Microsoftu będzie: "Simplicity, Deployment, Security and Mobility", czyli: "Prostota, rozwój, bezpieczeństwo i mobilność".
Mam nadzieję, ze wszystkie, wymienione tu postulaty zostaną spełnione i dzięki staraniom największej firmy programistycznej rozwój i wdrożenie IPv6 będzie szybsze i łatwiejsze.
Microsoft wydał do tej pory dwie, wspominane implementacje protokołu IPv6: "The Microsoft Research IPv6 implementation" oraz "Microsoft Ipv6 Technology Preview for Windows 2000". I właśnie te produkty opiszę.
Microsoft
przygotował oficjalne dodatek do W2k wspierający protokół
IPv6 o nazwie "Microsoft IPv6 Technology Preview for
Windows 2000" (zwany dalej w skrócie "Ms IPV6
TP"). Dodatek ten przeznaczony jest głównie dla
programistów, pragnących rozwijać aplikacje dla
Ipv6. Co nie oznacza, ze szary użytkownik nie może go
wykorzystać. Dodatek można pobrać z serwów
Microsoftu:
(http://msdn.microsoft.com/downloads/sdks/platform/tpipv6.asp).
Oficjalnie Microsoft nie wspiera Windows 9x, Me oraz Ce.
Aby zainstalować "Ms IPv6 TP" wymagana jest platforma Windows 2000 w edycji Proffesional, Server lub Advanced Server. Wersje beta tych produktów nie są wspierane. Ponadto wymagany jest Windows 2000 Service Pack 1. "Ms IPv6 TP" można zainstalować jedynie na angielskich wersjach wymienionych produktów.
Instalacja polega na uruchomieniu samorozpakowujacego się archiwum, które tworzy katalog ipv6kit na domyślnym dysku systemowym. W katalogu tym znajdują się:
- plik setup.exe, który instaluje narzędzia do protokółu ipv6
- przykładowe pliki źródłowe implementujące ipv6
Po wykonaniu komendy setup system zainstaluje odpowiednie komponenty i restartuje system.
Instalator kopiuje następujące pliki:
- tcpip6.sys - driver protokołu
- wship6.dll - dynamiczna biblioteka winsock
- ipv6.exe - narzędzie konfigurujące
- ping6.exe - wersja ping'a dla ipv6
- tracert6.exe - wersja tracert dla ipv6
Instalator zamienia następujące pliki:
- winnet.dll - główna biblioteka IPv6
- ftp.exe - wersja ftp obsługująca IPv6
- telnet.exe - wersja telnet obsługująca IPv6
- tlntsvr.exe - wersja servera telnet'u obsługująca IPv6
Następnie, korzystając z właściwości połączenia sieciowego należy dodać nowy protokół o nazwie "Microsoft IPv6 Protocol". Konfiguracja jest zakończona.
W przypadku posiadania wcześniejszych wersji protokółu IPv6 (Microsoft Research IPv6 Technology Preview) wymagane jest wcześniejsze ich odinstalowanie, a następnie postępowanie analogiczne do standardowej instalacji.
Uruchomienie protokółu następuje po wydaniu komendy: net start tcpip6
Analogicznie można zatrzymać działanie protokółu: net stop tcpip6
Konfiguracji należy dokonać ręcznie przy użyciu narzędzia ipv6.exe, Poniżej znajduje się przykładowy skrypt konfigurujący ipv6. Należy zwrócić szczególną uwagę na fakt, iż zmiany w konfiguracji nie są zapamiętywane przez system, należy przeprowadzić rekonfiguracje po każdym restarcie. Najlepiej wykonać jest to za pomocą prostego skryptu, uruchamianego przy starcie komputera.
Przykład skryptu:
net start tcpip6
c:\winnt2\system32\ipv6.exe adu 4/3ffe:8010:7:20:1::2
Opis skryptu:
komenda net start uruchamia protokół IP w wersji szóstej
komenda ipv6 adu 4 konfiguruje podany adres na czwartym interfejsie.
Po zainstalowaniu "Ms IPv6 TP" dostępne mamy następujące narzędzia:
ipv6.exe - podstawowe narzędzie służące do konfiguracji protokołu oraz wyświetlania jego stanu.
ipv6 if [numer interfejsu]
Wyświetla informacje o podanym interfejsie lub o wszystkich, jeśli zostaje użyte bez parametru. W wyniku otrzymujemy następujące informacje:
Status sieci
Czy używa protokołu Neighbor Discovery
Adres link-level
Adres lub adresy ipv6
Adres multikastowy
Liczbę MTU
Hop limit
Czas osiągnięcia
Poniżej przedstawiam przykładowy listing opisywanej komendy.
D:\>ipv6 if
Interface 3 (site 1): Local Area Connection
cable unplugged
uses Neighbor Discovery
link-level address: 00-10-4b-27-35-25
preferred address 3ffe:8010:7:20:1::11, infinite/infinite
preferred address fe80::210:4bff:fe27:3525, infinite/infinite
multicast address ff02::1, 1 refs, not reportable
multicast address ff02::1:ff27:3525, 1 refs, last reporter
multicast address ff02::1:ff00:11, 1 refs, last reporter
link MTU 1500 (true link MTU 1500)
current hop limit 128
reachable time 44500ms (base 30000ms)
retransmission interval 1000ms
DAD transmits 1
Interface 2 (site 0): Tunnel Pseudo-Interface
does not use Neighbor Discovery
link-level address: 0.0.0.0
link MTU 1280 (true link MTU 65515)
current hop limit 128
reachable time 0ms (base 0ms)
retransmission interval 0ms
DAD transmits 0
Interface 1 (site 0): Loopback Pseudo-Interface
does not use Neighbor Discovery
link-level address:
preferred address ::1, infinite/infinite
link MTU 1500 (true link MTU 1500)
current hop limit 1
reachable time 0ms (base 0ms)
retransmission interval 0ms
DAD transmits 0
ipv6 ifd if#
Usuwa podany interfejs
ipv6 adu if#/adres [life] [anycast / unicast]
Dodaje albo usuwa adres ipv6, przypisany do odpowiedniego interfejsu. Ustala jego czas życia (w sekundach), jeśli parametr life nie jest określony czas życia jest nieskończony. Dla adresów typu anycast możliwymi wartościami parametru life są zero lub nieskończoność. Podając parametr life równy 0 usuwamy interfejs:
D:\>ipv6.exe adu 3/3ffe:8010:7:20:1::13 life 0
ipv6 spt prefix if# life
Dodaje, usuwa, bądź aktualizuje prefiks w tablicy prefiksów
ipv6 rt
Wyświetla stan tablic routingu
ipv6 rt prefiks if# [life] [pref] [publish] [age]
Dodaje bądź usuwa wpis w tablicy routingu. Prefiks jest parametrem obowiązkowym.
6to4cfg [-r] [-s] [-u] [-R relay] [-b] [-S adress] [filename]
Zestawia połączenia typu 6to4
6to4cfg [filename] con
Zapisuje skrypt konfiguracyjny do pliku. Podając parametr con wyświetlimy skrypt na ekranie. Bez podania nazwy pliku 6to4cfg automatycznie zmieni konfiguracje IPv6 na komputerze.
6to4cfg -r
Umożliwia routowanie IPv6 na interfejsach sieciowych
6to4cfg -s
Uaktywnia adresowanie typu site-local w sieci 6to4. Ten parametr należy używać w połączeniu z parametrem -r
6to4cfg -R relay
specyfikuje nazwę albo adres IPv4 routera 6to4. Domyślnym adresem jest 6to4.ipv6.microsoft.com
6to4cfg -S address
Podaje lokalny adres IPv4 dla prefiksu 6to4
ipsec6.exe - narzędzie do konfiguracji polis i bezpieczeństwa dla IPSec ipv6
ipsec6 sp [interfejs]
wyświetla aktywne polisy; wszystkie, badź te, dla podanego interfejsu. Sposób wyświetlania, pozostawia wiele do życzenia:
D:\>ipsec6 sp
All Security Policies
________________________________________________________________________
________________________________________________________________________
_____________________________________________________________________________
Policy RemoteIPAddr LocalIPAddr
Protocol RemotePort LocalPort IPSecProtocol IPSecMode
RemoteGWIPAddr SABundleIndex Direction Action
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
2 - 3ffe:8010:7:20:1::11 - *
- * - * - * AH TRANSPORT
* NONE BIDIRECT BYPASS
1 - * - *
- * - * - * NONE *
* NONE BIDIRECT BYPASS
________________________________________________________________________________
W rzeczywistości jest to prosty plik tekstowy *.spd, zawierający konfigurację SP który najlepiej oglądać w notatniku z wyłączoną opcją "zawijanie wierszy"
ipsec6 sa
wyświetla aktywne SA (security association), sytuacja podobna jak przy komendzie ipsec6 sp, w tym przypadku jest to zawartość pliku konfiguracyjnego SA (*.sad)
ipsec6 c [nazwa_pliku]
tworzy pliki: (nazwa_pliku.sad) dla SA oraz (nazwa_pliku.spd) dla polisy, zawierające konfiguracje IPSec, pliki tworzone są w bieżącym katalogu:
D:\ipsec>ipsec6 c test
SPD -> test.spd
SAD -> test.sad
ipsec6 a [nazwa_pliku]
instaluje SA i polisy bezpieczeństwa zdefiniowane w plikach (nazwa_pliku.sad i nazwa_pliku.spd).
D:\>ipsec6 a test
1 new SP entries installed.
0 new SA entries installed.
W przypadku błędu program zgłosi stosowny komunikat:
D:\>ipsec6 a test
0 new SP entries installed.
Key file test.key could not be opened Entry 2.
Program informuje, w którym wpisie jest błąd oraz którego pola on dotyczy. Tworzy też plik ~ipsec6.res w domyślnym katalogu, gdzie zapisuje komunikat ostatniego błędu.
ipsec6 d [sp, sa] [numer]
kasuje SP albo SA z listy aktywnych polis, parametr [numer] oznacza numer wpisu.
ping6.exe - odpowiednik swojego poprzednika dla wersji ipv4, podobnie wyglądają rezultaty działania:
C:\>ping6 3ffe:8010:7:20:1::13
Pinging 3ffe:8010:7:20:1::13 with 32 bytes of data:
Reply from 3ffe:8010:7:20:1::13: bytes=32 time<1ms
Reply from 3ffe:8010:7:20:1::13: bytes=32 time<1ms
Reply from 3ffe:8010:7:20:1::13: bytes=32 time<1ms
Reply from 3ffe:8010:7:20:1::13: bytes=32 time<1ms
Przydatną opcją jest opcjonalny parametr -a, który rozwiązuje nazwy.
tracert6.exe - nowa wersja aplikacji tracert.exe:
C:\>tracert6 3ffe:8010:7:20:1::13
Tracing route to 3ffe:8010:7:20:1::13
over a maximum of 30 hops:
1 <1 ms <1 ms <1 ms 3ffe:8010:7:20:1::13
Trace complete.
checkv4.exe - narzędzie do kontroli kodu źródłowego, wychwytujące kod, który należy zmienić, aby przystosować aplikację do pracy z ipv6. Poniżej przedstawiam przykładowy wynik działania checkv4.exe na fragmencie kodu:
test.c(35) : gethostbyname : use getaddrinfo instead
test.c(40) : gethostbyaddr : use getnameinfo instead
test.c(48) : SOCKADDR_IN : use SOCKADDR_STORAGE instead, or use SOCKADDR_IN6 in addition for IPv6 support
test.c(57) : AF_INET : use AF_INET6 in addition for IPv6 support
test.c(89) : inet_addr : use WSAStringToAddress or getaddrinfo with AI_NUMERICHOST instead
Razem z MIPv6TP dostajemy podstawowe aplikacje, zdolne do wykorzystywania protokołu IPv6.
ftp.exe - klient ftp z możliwością dokonywania połączeń po ipv4 i ipv6
telnet.exe - klient telnet z możliwością dokonywania połączeń po ipv4 i ipv6
tlntsvr.exe - serwer telnet'u z możliwością dokonywania połączeń po ipv4 i ipv6
Problemy, które wystąpiły podczas użytkowania Ms IPv6 TP:
Problem 1:
Podczas próby dodania nowego adresu, system odmawiał wykonania polecenia, sygnalizując błąd nr 58.
Rozwiązanie:
Usunięcie i ponowne dodanie Ms IPv6 TP rozwiązało problem. Przyczyna pozostaje nieznana, podejrzewa się ogólne komplikacje z instalowanymi w międzyczasie komponentami sieciowymi.
Microsoft Resarch IPv6 Release, był pierwszym pakietem udostępniającym IPv6. Prace nad nim rozpoczęły się w 1998 r, pierwsza jego wersja powstała była przeznaczona dla Windows NT. Obecna edycja nosi numer 1.4 i to ją przedstawię poniżej. Edycja ta ma niewątpliwe walory edukacyjne, ponieważ dostarczane są w raz z nią źródła większości wykorzystywanych programów i sterowników.
Testy przeprowadzane przez Microsoft pozwalają na bezproblemową pracę z "Microsoft Reserch IPv6 Release" pod systemami: Windows 2000 (oprócz Beta 1) oraz Windows NT 4.0 Service Pack 3 (także Service Pack 4).
Pierwszą rzeczą, jaką należy zrobić, jest skompilowanie dostarczonych źródeł. Po rozpakowaniu pakietu, w katalogu kit znajduję się skrypt mkkit.cmd oraz pliki konfiguracyjne dla Windows NT i Windows 2000. Uruchomienie skryptu z parametrem, którym jest docelowy katalog, powoduje przygotowanie wersji instalacyjnej. Następnie, korzystając z właściwości połączenia sieciowego należy dodać nowy protokół o nazwie "Microsoft IPv6 Protocol" - tak jak w przypadku Micorosoft IPv6 Technology Preview.
Podczas instalacji na Windows NT należy jeszcze restartować stację roboczą.
Jeśli w systemie Windows 2000, zainstalowany jest dodatek Service Pack 2, instalacja pakietu nieco się komplikuje. Należy pobrać z internetu edycję "Ms IPv6 TP" oznaczoną numerem 001205 (tpipv6-0012205.exe) i rozpakować archiwum do katalogu. Następnie z podkatalogu files należy wyedytować plik hotfix.ini.
W sekcji [version] należy zmienić wpis:
NTServicePackVersion=256,
Na następujący:
NTServicePackVersion=512
Następnie zapisać plik. Teraz wystarczy już uruchomić hotfix.exe i postępować zgodnie z instrukcjami.
W przypadku posiadania wcześniejszych wersji "Ms Research IPv6 protocol", wymagane jest wcześniejsze ich odinstalowanie. A następnie postępowanie analogiczne jak w przypadku instalowania protokołu po raz pierwszy.
Edycja ta obsługuje statyczną autokonfigurację na poziomie adresów link - local, bezpośrednio po starcie protokołu adresy zostaną przydzielone do interfejsów sieciowych.
Manualna konfiguracja jest identyczna z tą, którą należy zastosować do konfigurowania IPv6 w MS Technology Preview, opisaną w punkcie 1.1.1.5
Tak jak w przypadku "Microsoft IPv6 Technology Preview", podstawowym narzędziem konfiguracyjnym jest ipv6.exe jego użycie jest analogiczne
Podstawowe aplikacje dostarczane przez tę edycją, również mają swoje odpowiedniki w "Microsoft IPv6 Technology Preview" (ping6, tracert6).
Ukazująca się obecnie, najnowsza wersja Microsoft Windows - Windows XP, posiada oczywiście obsługę protokołu IPng i to już wbudowaną. Stos IPv6 wykorzystywany w Windows XP, cały czas określany jest jako wczesna wersja, nie do końca jeszcze przetestowana. Cały czas brakuje graficznego interfejsu konfigurującego IPv6. Czytając dokumentację do tej edycji protokołu i używając jej, ma się wrażenie, że to niewiele zmieniony pakiet Ms IPv6 TP.
Nowością, jest zaimplementowany w Windows XP mechanizm gniazd, który obsługuje też IPv6.
Dla prac programistycznych, nad aplikacjami obsługującymi IPv6 w Windows XP, Microsoft rekomenduje następujące narzędzia:
Microsoft Platform Development Kit (SDK) - edycja z stycznia 2000 roku (lub późniejsze)
Microsoft Visual C++ wersja 6.0
protokół IPv6 zaimplementowany w Windows XP
Implementacja IPv6 zawarta w Windows XP, wykorzystuje te same narzędzia i aplikacje, co "Ms IPv6 TP", identyczny jest sposób konfiguracji i składnia komend. Cały czas konfiguracja protokołu jest tracona podczas restartu systemu i trzeba odnawiać ją za pomocą skryptów.
Rozczarowanie budzi też fakt, że udostępniony IPSec, wciąż jest poważnie ogranicznony. Nie posiada możliwości kodowania danych, ani obsługi IKE (Internet Key Exchange), również klucze muszą być konfigurowane manualnie (szerzej o IPSec w rozdziale 2.1.4).
Rozpoczynając pracę z nową edycją implementacji IPv6 w nowej wersji Windows, miałem nadzieję na więcej usprawnień. Jednak cały czas jest to w pełni funkcjonalna edycja stosu IPv6 pod najpopularniejszym systemem operacyjnym na świecie.
Można śmiało powiedzieć, iż instalacja jest w pełni intuicyjna. Polega ona na wydaniu komendy: ipv6 install w wierszu poleceń. Instalowane są wtedy wszystkie składniku (biblioteki i programy) niezbędne do obsługi protokołu IP w nowej wersji Windows. W przeciwieństwie do poprzednich edycji stosu IPv6, protokół ten nie jest widoczny wśród innych komponentów sieciowych, zainstalowanych w systemie.
Dostępne są wszystkie podstawowe narzędzia (ping6, tracert6). Ich zastosowanie i konfiguracja jest analogiczna do tych opisanych w rozdziale 2.1.1.
IPSsec wykorzystywany w Ms IPv6 TP jest całkowicie niezależny od IPSec dla IPv4, jednocześnie zarządzanie polisami bezpieczeństwa da IPsec IPv6 nie odbywa się poprzez konsolę polis bezpieczeństwa, tak jak ma to miejsce w konfiguracji IPSec IPv4, a poprzez narzędzie konsolowe ipsec6.exe. Jego składnia podana jest w rozdziale 2.1.1.6, dotyczącym aplikacji zawartych w pakiecie "Ms IPv6 TP".
Funkcjonalność IPSec IPv6 została też nieco ograniczona:
zarówno AH, jak i również ESP są wykorzystywane, jednak ESP zaimplementowane w Microsoft IPv6 Technology Preview nie obsługuje kodowania danych.
jedynie wcześniej udostępnione klucze umożliwiają połączenia typu SA.
Konfuguracja IPSec przy użyciu narzędzi dostępnych w Ms TP Ipv6 nie jest jeszcze w pełni dopracowana, przeprowadzenie jej ma jedynie charakter testowy. Takie podejście wymusza "ręczne" tworzenie kluczy i pozbawiona automatyki konfiguracja komputerów.
W przykładzie konfigurujemy połączenie pomiędzy komputerem pierwszym o adresie fe80::2aa:ff:fe53:a92c a komputerem drugim o adresie fe80::2aa:ff:fe92:dof1. Stworzymy IPSec Seciruty Association, wykorzystujące autentykacje nagłówka (AH) oraz algorytm haszujacy MD5.
Wykorzystując narzędzie ipsec6, tworzymy puste SA (security assiociation) oraz SP (security policy): ipsec6 c test
Komenda stworzy nam dwa pliki: test.spd o test.sad. Teraz musimy je wyedytować i dopisać do tych plików następujące informacje:
Plik test.spd, węzeł pierwszy:
Policy 2
RemoteIPAddr -Fe80::2a:ff:fe92:d0f1
LocalIPAddr -*
RemotePort -*
Protocol -*
IPSecProtocol AH
IPSecMode Transport
RemoteGWIPAddr *
SABundleIndex None
Dircetion bidirect
Action apply
InterfaceIndex 0
Na końcu ostatniej linii konfiguracyjnej należy postawić średnik. Wpisy poszczególnych polis muszą być umieszczone w porządku malejącym, dlatego też, ten wpis polisy powinien być wpisany przed domyślnym wpisem, już istniejącym w pliku.
Teraz konfigurujemy wpisy SA, aby zabezpieczyć ruch pomiędzy dwoma węzłami. Na komputerze pierwszym musimy stworzyć dwa wpisy w pliku test.sad: dla ruchu do węzła drugiego i dla ruchu przychodzącego z węzła drugiego.
Plik test.sad, węzeł pierwszy, wpis dla ruchu wychodzącego:
SAEntry 2
SPI 3001
SADestIPAddr fe:80::2aa:ff:fe92:d0f1
DestIPAddr POLICY
SrcIPAddr POLICY
Protocol POLICY
DestPort POLICY
SrcPort POLICY
AuthAlg HMAC-MD5
KeyFile Test.key
Direction OUTBOUND
SecPolicyIndex 2
Plik test.sad, węzeł pierwszy, wpis dla ruchu przychodzącego:
SAEntry 1
SPI 3000
SADestIPAddr fe:80::2aa:ff:fe53:a93c
DestIPAddr POLICY
SrcIPAddr POLICY
Protocol POLICY
DestPort POLICY
SrcPort POLICY
AuthAlg HMAC-MD5
KeyFile Test.key
Direction INBOUND
SecPolicyIndex 2
Należy pamiętać o średniku na końcu ostatniej linii, konfigurującej jeden wpis oraz o malejącym porządku wpisów w pliku.
Następnym krokiem jest przygotowanie klucza. Niestety "Ms Ipv6 TP" wspiera jedynie klucze tworzone "ręcznie". Aby przygotować plik klucza, należy zapisać w pliku test.key dowolny ciąg znaków, ograniczony podwójnym apostrofem, np.: "PJWSTK, IPv6 Team"
Tylko tak przygotowany plik, będzie odczytany przez ipsec6.exe. Można użyć dwóch różnych plików z kluczem, dla ruchu wchodzącego i wychodzącego, definiując pole KeyFile we wpisach w pliku test.sad
Nadszedł czas na skonfigurowanie drugiego węzła. W tym przypadku będziemy postępować analogicznie. Dla uproszczenia będziemy używali tych samych nazw plików, choć można zdefiniować własne. Poniżej przedstawiam wpisy do poszczególnych plików, konfigurujące IPSec na drugim węźle.
Plik test.spd, węzeł drugi:
Policy 2
RemoteIPAddr -Fe80::2a:ff:fe53:a92c
LocalIPAddr -*
RemotePort -*
Protocol -*
IPSecProtocol AH
IPSecMode Transport
RemoteGWIPAddr *
SABundleIndex None
Dircetion bidirect
Action apply
InterfaceIndex 0
Plik test.sad, węzeł drugi, wpis dla ruchu wychodzącego:
SAEntry 2
SPI 3001
SADestIPAddr fe:80::2aa:ff:fe92:d0f1
DestIPAddr POLICY
SrcIPAddr POLICY
Protocol POLICY
DestPort POLICY
SrcPort POLICY
AuthAlg HMAC-MD5
KeyFile Test.key
Direction INBOUND
SecPolicyIndex 2
Plik test.sad, węzeł drugi, wpis dla ruchu przychodzącego:
SAEntry 1
SPI 3000
SADestIPAddr fe:80::2aa:ff:fe53:a93c
DestIPAddr POLICY
SrcIPAddr POLICY
Protocol POLICY
DestPort POLICY
SrcPort POLICY
AuthAlg HMAC-MD5
KeyFile Test.key
Direction OUTBOUND
SecPolicyIndex 2
Pozostał jeszcze plik klucza dla drugiego węzła, powinien być on identyczny (taka sama treść), jak plik na komputerze pierwszym.
Teraz musimy uaktywnić stworzone polisy, wydając komendę ipsec6 a test, na węźle pierwszym i drugim.
Po konfiguracji, zakończonej sukcesem, używając komendy ping6 do sprawdzenia połączenia pomiędzy dwoma węzłami oraz narzędzia "network monitor", możemy zobaczyć wymianę komunikatów ICMPv6 Echo Request z nagłówkiem autoryzującym.
Problemy powstałe przy konfiguracji IPSec IPv6 najczęściej wynikały z niepoprawnego przygotowania plików konfiguracyjnych, jest to jednak naturalna sytuacja, w przypadku tak źle zaprojektowanego formatu plików.
Program ipsec6.exe, oprócz komunikatów o błędach często reagował też typowym w środowisku Windows "błędem ochrony pamięci" lub też zrzutem pamięci ("niebieskim ekranem").
Podsumowując: NIE UDAŁO mi się tego odpalić, ale może ktoś będzie miał więcej szczęścia / cierpliwości / wiedzy.
Konfiguracja połączenia typu link - local nie wymaga od użytkownika żadnych innych działań, poza zainstalowaniem "Ms IPv6 TP". Konfiguracja ta dotyczy dwóch maszyn, podłączonych do tej samej sieci, bez wykorzystania żadnych dodatkowych urządzeń sieciowych (routerów).

ryc. 4: bezpośrenie połączenie IPv6
Domyślnie, adresy IP, dla połączenie link -local konfigurowane są na podstawie adresów odpowiadającym im kart sieciowych. Adresy link - local posiadają prefiks fe80::/64. Ostatnie 64 bity adresu IPv6, nazywane jest identyfikatorem interfesju i powstają z 48 - bitowego MAC - adresu karty sieciowej.
Procedura tworzenia adresu IPv6 z 48 - bitowego MAC - adresu karty jest następująca:
pomiędzy trzeci i czwarty bajt adresu karty sieciowej wstawiana jest wartość 0xff-fe
drugi, najmniej znaczący bit pierwszego bajtu (bit uniwersalny) adresu MAC jest dopełniany. Jeśli jest to 1 to zmieniamy go na 0, a jeśli 0 to zmieniamy na 1.
Można zademonstrować to na przykładzie dla następującego MAC adresu: 00 60 08 52 f9 d8
wartość 0xff-fe jest wstawiana pomiędzy trzeci (0x08), a czwarty (0x52) bajt adresu karty i tworzy 64 - bitowy adres: 00 60 08 ff fe 52 f9 d8
bit universalny jest dopełniany, ponieważ drugi, najmniej znaczący bit z wartości 0x00 jest 0, staje się on 1. W rezultacie pierwszy bajt wygląda następująco: 0x02
Po przeprowadzeniu tych działań, identyfikator interfejsu adresu IPv6, odpowiadający Mac -adresowi o wartości: 00 60 08 52 f9 d8, ma postać: 02 60 08 ff fe 52 f9 d8.
Końcowy, pełen adres IPv6, powstaje z połączenia prefiksu fe80::/64 i identyfikatora interfejsu. W naszym przykładzie ma on postać: fe80::260:8ff:fe52:f9d8
Pozostaje jedynie przetestować zestawione w ten sposób połączenie. Można to wykonać. Używając programu ping6, dostępnego w omawianym pakiecie.
Do połączenia protokołem IPv6 pomiędzy sieciami wykorzystującymi IPv4 służy mechanizm enkapsulacji pakietów IPv6 w pakietach IPv4. Do zautomatyzowania takiej konfiguracji, Microsoft dostarcza nam narzędzie 6to4.exe. Można go użyć do komunikacji z innymi sieciami (IPv6 / IPv4), jak i również do połączenia z siecią 6bone. Nie wymaga to stosowania żadnych urządzeń sieciowych, wykorzystujących IPv6. Cały ruch jest wykonywany przy użyciu enkapsulacji IPv6 w IPv4.
Schemat takiego połączenia przedstawia rysunek 2.

ryc. 5: Schemat połąćzenia IPv6 pomiędzy dwoma podsieciami
Aby zestawić takie połączenie, należy posiadać przynajmniej jeden routowalny adres IP (wersja 4), będzie on wykorzystywany na komputerze, będącym domyślną bramą. W ten sposób, wykorzystując jeden komputer obsługujący IPv4 i IPv6 można podłączyć całą grupę komputerów pracujących pod IPv6.
Do automatycznej konfiguracji sieci 6to4 należy użyć narzędzia 6to4cfg.exe, opisanego w rozdziale 1.1.1.6.
Przykładowym adresem bramy 6to4 będzie adres: 172.31.42.239, jest to adres routowalny. Ten 32-bitowy adres w połączeniu z 16-bitowym prefiksem 2002::/16 stworzy 48-bitowy prefiks adresu IPv6. W naszym przykładzie prefiks 6to4 jest następujący: 2002:ac1f:2aef::/48. Należy zauważyć, że ac1f:2aef jest heksadecymenalną postacią adresu 172.31.42.239.
Konfigurujemy 6to4 na naszej bramie 6to4 za pomocą ipv6.exe
ipv6 rtu 2002::/16 2
Ta komendą uruchomiła routing, 2002::/16 jest unikatowym prefiksem 6to4, natomiast argument "2" ustawia interfejs on-link dla tego prefiksu. Interfejs nr 2 jest nazywany "pseudo-interfejsem" i jest używany do konfigurowania tuneli i 6to4.
Jeśli adres IPv6 pasuje do prefiksu 2002::/16, 32 bity adresu, następujące po prefiksie adresu docelowego, są konwertowane na postać IPv4. Pakiet jest enkaspulowany za po mocą nagłówka IPv4 i wysyłany do docelowego adresu IPv4.
Następnie konfigurujemy adres 6to4 na naszej bramie.
ipv6 adu 2/2002:ac1f:2aef::ac1f:2aef
Użycie powyższych dwóch komend, wystarczy, aby komunikować się z innymi sieciami 6to4. Aby umożliwić komunikację z 6bone, należy skonfigurować tunel do 6to4, Microsoft proponuje użycie swojego routera 6to4, o adresie 131.107.152.32. Wykonujemy to za pomocą następującej komendy:
ipv6 rtu ::/0 2/::131.107.152.32 pub life 1800
Teraz powinniśmy mieć dostęp zarówno do sieci 6bone jak i 6to4.
Końcowym krokiem jest uaktywnienie routingu na naszej bramie 6to4. Zakładamy, ze interfejs 3 jest interfejsem eternetowym, zaś interfejs 4 to 6-over-4. Poniższe komendy przydzielają prefiksy sieci do dwóch linków. Prefiksy podsieci, zostały zaczerpnięte z sieci 6to4: 2002::ac1f:2aef::/48:.
ipv6 rtu 2002:ac1f:2aef:1::/64 3 pub life 1800
ipv6 rtu 2002:ac1f:2aef:2::/64 4 pub life 1800
Następne trzy komendy uaktywniają funkcje routowania na naszej bramie 6to4.
ipv6 ifc 2 fow
ipv6 ifc 3 fov
ipv6 ifc 4 fov
Po tych wszystkich komendach, protokół IPv6 automatycznie skonfiguruje adresy na interfejsach 2 i 4, używając odpowiadający prefiksów sieci. Obydwa interfejsy rozpoczną rozgłaszanie.
Komputery otrzymujące to rozgłoszenie automatycznie skonfigurują się, wykorzystując adres 6to4 oraz domyślny routing, dostarczone przez prefiks ich podsieci. Będą komunikowały się z innymi sieciami 6to4 oraz 6bone przez naszą domyślną bramę.
Najprostszym sposobem podłączenia się do sieci 6bone, który zaleca Microsoft jest skonfigurowanie połączenia 6to4 i użycie routera 6to4, Microsoftu, adres: 6to4.ipv6.microsoft.com.

ryc. 6: ogólny schemat podłączenia do sieci 6bone
|
Nazwa |
Umiejscowienie |
Przepustowość |
|
6to4.ipv6.microsoft.com |
Redmond, WA |
Nieznana |
|
6to4zama6.com |
Seattle, WA |
1.5 mbps |
|
6to4.kfu.com |
Santa Clara, Kalifornia |
384 kbps |
|
ipv6-lab-gw.cisco.com |
San Jose |
100 mbps |
|
6to4.ipv6.bt.com |
Adastral Park, UK |
10 mbps |
|
Skbys-00-00. 6to4.xs2.net |
Baska Bystrzyca, Słowacja |
34 mbps |
|
6to4.ipv6.fh-regensburg.de |
Regebsburg, Niemcy |
34 mbps |
Tabela 1: lista routerów publicznych umożliwiających dostęp do 6bone.
Konfiguracja dwóch tuneli jest przydatna z kilku powodów, jeśli potrzebujemy bezpośrednie połączenie do serwisu lub aplikacji, jeśli chcemy, aby serwis na naszej stacji wykorzystywał tylko konkretny tunel, oraz, najczęstszy powód: jeśli chcemy nauczyć się więcej o IPv6.
Aby skonfigurować takie połączenie na naszej stacji, musimy mieć zainstalowany stos protokoły IPv6 oraz znać niezbędne parametry (adresy podsieci, adresy routerów itp.).
Zakładamy, że mamy już skonfigurowany pierwszy tunel, oraz dostaliśmy już przydzielony drugi tunel i znamy wszystkie jego parametry, (np.: nasza podsieć: 3ffe:8001:13::/48, adres routera: 203.5.119.58)
Najpierw konfigurujemy drugi interfejs naszego drugiego tunelu, przypisując mu podsieć /48:
ipv6 rtu 3ffe:8001:0013:/48 2
Następnie musimy usunąć wpis domyślnego routingu z pierwszego interfejsu:
ipv6 rtu ::/0 2/::195.74.217.132 pub lifetime 0
Teraz dodajemy domyślny routing do drugiego tunelu:
ipv6 rtu ::/0 2/::203.5.119.58 pub
Ponownie dodajemy domyślny routing dla pierwszego tunelu, tym razem dla podsieci /32:
ipv6 rtu 3ffe:8100::/0 2/::195.74.217.132 pub
To wszystko, po wydaniu komendy ipv6 rt, powinniśmy zobaczyć następującą konfigurację:
3ffe:8100::/32 -> 2 pref 0 (life time infinite)
3ffe:8100::/32 -> 2/::195.74.217.132 pref 0 (life time infinite, publish, no aging)
3ffe:8100::/48 -> 2/::203.5.119.58 pref 0 (life time infinite, publish, no aging)
::/0 -> 2/::203.5.119.58 pref 0 (life time infinite, publish, no aging)
::/96 -> 2 pref 0 (life time infinite)
Testy skonfigurowanych tuneli można przeprowadzić za pomocą narzędzia tracert6.exe.
Istnieje możliwość konfiguracji większej liczby tuneli, w praktyce, największa, znana mi ilość tuneli ustawionych na komputerze z Windows 2000 to 5, choć możliwe, że ktoś już skonfigurował więcej.
Po zainstalowaniu któregoś z pakietów, umożliwiających obsługę IPv6 w systemach Windows, mamy możliwość przeglądania stron internetowych, przy użyciu tego protokołu. Większość serwisów udostępniających swoje zasoby również za pomocą IPv6 stosuje odpowiadające takiej konfiguracji adresy stron, np. dostęp za pomocą IPv4 pod adresem: http://ipv4.pjwstk.edu.pl, a wersja IPv6 serwisu internetowego pod adresem http://ipv6.pjwstk.edu.pl.
Zdarza się, że dostęp do strony możliwy jest jedynie poprzez podanie samego adresu IPv6, należy to zrobić, podając adres w przeglądarce w nawiasach kwadratowych:
http:// [2010:836B:4179::836B:4179].
Dostęp do www poprzez IPv6 jest możliwy przy wykorzystaniu przeglądarki "Internet Explorer" w wersjach 5.0 i wyższych, lecz jest to możliwe jedynie wtedy, kiedy "Internet Explorer" nie wykorzystuje przy połączeniach serwera proxy.
Po każdej aktualizacji przeglądarki należy przeinstalować też odpowiedni pakiet IPv6, gdyż w ten sposób przywrócimy do systemu wersję biblioteki wininet.dll, obsługującą IPv6, którą napisała instalacja nowej wersji "Internet Explorera".
http://ipv6.research.microsoft.com/
Strona Microsoft Research IPv6.
http://altavista.ipv6.digital.com/
AltaVista
http://www.ipv6.digital.com/
Strona korporacji "Comapaq".
http://ipv6.decaen.com/
Strona francuskiego stowarzyszenia "Society Decaen".
http://www.ipv6forum.com/
Jedno z centrów informacyjnych IPv6.
http://www.ipv6.bt.com/projects/ipv6.htm
Strony BTexaCT, dotyczące rozwoju IPv6.
http://www.6bone.net/
Oficjalna strona sieci 6bone.
http://www.ip6.rccn.net/
Strona Portugalskiego stowarzyszenia naukowego.
http://www.kame.net/
Strona Projektu KAME.
http://www.zamanetworks.com/
Strona firmy "Zama".
http://www.ipv6.kelite.net/
Informacje o IPv6.
http://www.normos.org/
Strona z dokumentami RFC,STD,RIPE,IANA,W3C.
Fnord! jest prostym serwerem www, przygotowanym do pracy w środowisku Windows, jego autorem jest Brian R. Morin. Serwer rozpowszechniany jest na licencji GNU. Wersja 1.0.0.23 serwera jest przystosowana do pracy przy wykorzystaniu Microsoft Research IP Version 6 oraz Microsoft IPv6 Tech Preview for Windows 2000, co jednocześnie oznacza, że obsługuje protokół IPv6.
Serwer został napisany w języku C++ i przystosowany do kompilacji przy użyciu Microsoft Visual C++, należy zwrócić uwagę na jego prostą konfigurację i przejrzystą dokumentację, co obecnie zdarza się nieczęsto.
Do programu, oprócz wersji instalacyjnej, dołączone są kody źródłowe, które umożliwiają wprowadzenie ewentualnych poprawek i przystosowanie działania serwera do indywidualnych potrzeb. Są też jednocześnie doskonałym narzędziem edukacji.
Dystrybucja zawiera wersję serwera przeznaczoną do pracy jako serwis systemowy (fnordnt.exe), wersję do pracy pod Windows 2000 (fnord.exe) oraz moduł konfiguracyjny (fnordctlexe). Modyfikacje, mające na celu umożliwienie obsługi IPv6 zostały wprowadzone w serwerze, generalnie polegały na zaimplementowaniu konstruktu MSRIPv6 w kodzie programu.
Dokumentacja do programu jest prosta i przejrzysta, jednocześnie sam program jest banalny w swej obsłudze, więc nie będę opisywał tutaj tych czynności.
Podczas pracy z programem pod Windows 2000 nie natrafiłem na żadne problemy.
Autorzy zwracają jedynie uwagę na nie przetestowanie przez nich pracy serwera obsługującego IPv6 pod systemem Windows NT, publikują natomiast listę ewentualnych poprawek, które należy zaaplikować, jeśli takie problemy wystąpią.
Apache - najpopularniejszy serwer www na świecie, począwszy od wersji 1.3 w edycji dla Windows obsługuje protokół IPv6. Serwer można pobrać bezpośrednio z witryny Apache'a - http://apache.org. Dostępne są wersje skompilowane, jak i źródła, zgodnie z ideą Open Source. Pełna dokumentacja pakietu i opis źródeł ułatwiają ewentualne edycje i dostosowanie do swoich potrzeb.
Apache, do obsługi IPv6 wymaga uaktualnienia i pracuje pod systemem Windows 2000 z zainstalowanym "Microsoft IPv6 Technology Preview"
Aplikację można pobrać w postaci pliku *.msi (wersja 1.3), co zdecydowanie ułatwia instalację. Podczas niej proszeni jesteśmy o podanie podstawowych parametrów: nazwę serwer i umiejscowienie plików.
Aby Apache obsługiwał IPv6, należy jeszcze zainstalować patch umożliwiający to:
apache-1.3.19-win32-v6-20010309a.zip. Łatkę można pobrać ze strony: http://win6.goto.info.waseda.ac.jp. Instalacja polega na zastąpieniu starych edycji plików nowymi.
Podczas aplikowania łatek na główną instalację nie współdziałają ze sobą:
Apache 1.3.20 i patch 1.3.20.
Zastąpienie patach, jego starszą edycją umożliwiło prawidłową pracę.
Putty jest jednym z najbardziej popularnych i najwyżej cenionych klientów ssh, nie tylko ze względu na swoje zalety, ale również z uwagi na fakt, iż jest darmowy.
Prace na najnowszą edycją ciągle trwają, obecna wersja, nosząca numer 0.51 obsługuje protokół IPv6.
Terra term jest od dawna cenionym klientem ssh, szczególnie pod systemem Windows. Jego ostatnia edycja: ttermp23-ipv6-0.72 obsługuje IPv6.
Cały czas powstają różne popularne aplikacje wspierające IPv6. Do ich poprawnego funkcjonowania niezbędny jest Windows 2000 SP1, wraz z "Microsoft IPv6 Technology Preview". Można do nich zaliczyć najnowsze edycje popularnych aplikacji:
wget (1.7 v6)
ncftp (IPv6 NcFTP 3.0.3 for Win32)
Ponieważ w chwili obecnej, według moich informacji nie są dostępne żadne publikację książkowe w języku polskim, dotyczące IPv6 w kontekście produktów firm Microsoft i Cisco, przy tworzeniu tej pracy opierałem się głównie na materiałach dostępnych w sieci. Poniżej podam najważniejsze adresy, pod którymi znalazłem najwięcej informacji, oraz nazwy dokumentów.
Główne adresy:
http://www.6bone.net/
Centrum sieciowe 6Bone - bardzo dużo wiadomości o sieci 6Bone i odnośników do innych stron.
http://hs247.com
Centrum informacyjne nowości IPv6.
http://www.microsoft.com/ipv6
Centralna strona microsoftu z informacjami nt. IPv6.
http://www.cisco.com/warp/public/732/Tech/ipv6/
Główna strona Cisco System z informacjami o IPv6
http://win6.goto.info.waseda.ac.jp
Doskonała strona z aplikacjami IPv6 pod Windows
Inne dokumenty:
"Cisco Statment of Directions" Lipiec 2000
Dokument Cisco System opisujący rozwój IPv6
"IPv6 for Cisco IOS Software: Overview"
Dokument Cisco System przedstawiający podstawy IPv6
"IPv6 for Cisco IOS Software: Configuring"
Dokument Cisco Systems opisujący konfigurację routerów
"Internetworking IPv6 with Cisco Routers" - Silvano Gai
Publikacja poruszająca problematykę IPv6 w routerach Cisco.
"Introduction ti IP Version 6" - Microsoft
Dokument Microsoftu opisującyIPv6
"Microsoft IPv6 Technology Preview for W2K" - Microsoft
Specyfikacje konfiguracji pakietu Ms IPv6 TP
"FAQ: Microsoft IPv6 Technology Preview for W2K" - Microsoft
Najczęściej zadawane pytania nt. "Ms IPv6 TP"
"FAQ: IPv6 Protocol for Windows XP" - Microsoft
Najczęściej zadawne pytania o IPv6 w nowej wersji Windows
"Microsoft Objectives for IP version 6" - Microsoft
Publikacja o rozwoju IPv6
Grupy dyskusyjne
6bone-pl@sunsite.icm.edu.pl
polska grupa dyskusyjna (pocztowa) użytkowników sieci 6bone
msripv6-users@list.research.microsoft.com
grupa dyskusyjna (pocztowa) użytkowników protokołu IPv6 pod systemami operacyjnymi Microsoftu.
Projekt Sieciowy IPv6 Microsoft Windows i Cisco