-
Notifications
You must be signed in to change notification settings - Fork 9
/
Linux+IPv6-HOWTO.de.sgml
3464 lines (3413 loc) · 326 KB
/
Linux+IPv6-HOWTO.de.sgml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V4.2//EN"
[
<!ENTITY % output.print.png "IGNORE">
<!ENTITY % output.print.pdf "IGNORE">
<!ENTITY % output.print.eps "IGNORE">
<!ENTITY % output.print.bmp "IGNORE">
]>
<!-- SGML file was created by LyX 2.3.4.2
See http://www.lyx.org/ for more information -->
<book lang="de">
<bookinfo>
<title>Linux IPv6 HOWTO (de)</title>
<author><firstname>Peter</firstname><surname>Bieringer</surname><affiliation><address>pb at bieringer dot de</address></affiliation></author>
<revhistory>
<revision> <revnumber>0.67.de.1wip</revnumber> <date>2020-04-04</date> <authorinitials>PB</authorinitials></revision>
<revision> <revnumber>0.66.de.1</revnumber> <date>2014-05-15</date> <authorinitials>PB</authorinitials></revision>
<revision> <revnumber>0.65.de.1</revnumber> <date>2009-12-13</date> <authorinitials>PB</authorinitials></revision>
<revision> <revnumber>0.64.de.1</revnumber> <date>2009-06-11</date> <authorinitials>PB</authorinitials></revision>
<revision> <revnumber>0.61.de.1</revnumber> <date>2007-10-06</date> <authorinitials>PB</authorinitials></revision>
</revhistory> <abstract>
<para>Das Ziel des Linux IPv6 HOWTO ist die Beantwortung von Basis- und Experten-Fragen zum Thema IPv6 mit Linux-Betriebssystemen. Dieses HOWTO will dem Leser genug Informationen bereitstellen, um IPv6-Anwendungen auf Linux Computer installieren, konfigurieren und anwenden zu können. Zwischen-Versionen sind auf <ulink url="http://mirrors.bieringer.de/Linux+IPv6-HOWTO/">mirrors.bieringer.de</ulink> oder <ulink url="http://mirrors.deepspace6.net/Linux+IPv6-HOWTO/">mirrors.deepspace6.net</ulink> verfügbar. Änderungen sind in der <link linkend="revision-history">Revisionshistorie</link> aufgelistet.</para>
</abstract></bookinfo><chapter id='chapter-general' >
<title><!-- anchor id="chapter-general" -->Allgemein</title>
<para>Informationen über verfügbare Übersetzungen finden Sie im Abschnitt <link linkend="general-translations">Übersetzungen</link>.</para><sect1 id='general-copright' >
<title><!-- anchor id="general-copright" -->Copyright, Lizenz und anderes</title>
<sect2>
<title>Copyright</title>
<para>Verfasst von und urheberrechtlich geschützt durch Peter Bieringer © 2001-2020
</para>
<para>Deutsche Übersetzung:</para>
<para>Verfasst von und urheberrechtlich geschützt durch Georg Käfer © 2002-2003, weitergeführt von Peter Bieringer © 2004-2014.</para></sect2><sect2>
<title>Lizenz</title>
<para>Dieses Linux IPv6 HOWTO wird unter der GNU GPL Version 2 herausgegeben:
</para>
<para>Dieses Linux IPv6 HOWTO ist ein Handbuch zur Anwendung und Konfiguration von IPv6 auf Linux-Systemen.
</para>
<para>Copyright © 2001-2020 Peter Bieringer
Deutsche Übersetzung Copyright © 2002-2003 Georg Käfer, weitergeführt von Peter Bieringer © 2004-2013.
</para>
<para>Diese Dokumentation ist freie Software; Sie können diese unter den Bedingungen der GNU General Public License, wie von der Free Software Foundation publiziert, entweder unter Version 2 oder optional jede höhere Version redistribuieren und/oder modifizieren.</para>
<para>Dieses Programm wird in der Hoffnung verteilt, dass es für Sie nutzvoll ist, jedoch OHNE JEDWEDER GEWÄHRLEISTUNG; sogar ohne der implizierten Gewährleistung der MARKTFÄHIGKEIT oder der FÄHIGKEIT ZU EINEM BESONDEREN ZWECK bzw. VORSATZ. Weitere Details finden Sie in der GNU General Public License.</para>
<para>Zusammen mit diesem Dokument sollten Sie eine Kopie der GNU General Public License erhalten haben; Wenn dem nicht so ist, können Sie sich an folgende Adresse wenden: Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA.</para></sect2><sect2>
<title>Über den Autor</title>
<sect3>
<title>Internet/IPv6 Background des Autors</title>
<itemizedlist>
<listitem><para>1993: In Kontakt mit dem Internet getreten, kennenlernen von konsolenbasierte E-Mail- und News-Client-Programme (z.B.: suchen Sie nach ”e91abier” auf <ulink url="http://groups.google.com/">groups.google.com</ulink>, das ist der Autor).</para></listitem><listitem><para>1996: Anfrage zur Gestaltung eines IPv6 Kurses inklusive eines Workshops zum Thema Linux Betriebssystem bekommen.</para></listitem><listitem><para>1997: Schreiben einer Anleitung, wie man IPv6 auf Linux Systemen installieren, konfigurieren und anwenden kann, genannt <ulink url="http://www.bieringer.de/linux/IPv6/">IPv6 & Linux - HowTo</ulink> (siehe unter <ulink url="http://www.bieringer.de/linux/IPv6/IPv6-HOWTO/IPv6-HOWTO-0.html#history">IPv6 & Linux - HowTo/History</ulink>).</para></listitem><listitem><para>2001: Begonnen, dieses neue Linux IPv6 HOWTO zu schreiben.</para></listitem></itemizedlist></sect3><sect3>
<title>Ansprechpartner</title>
<para>Der Autor kann via E-Mail <pb at bieringer dot de> und auch über seine <ulink url="http://www.bieringer.de/pb/">homepage</ulink> kontaktiert werden.</para>
<para>Der Autor lebt zurzeit in München / Bayern / (Süd-)Deutschland / (Mittel-)Europa / Erde (Festland).</para></sect3></sect2></sect1><sect1 id='general-category' >
<title><!-- anchor id="general-category" -->Kategorie</title>
<para>Dieses HOWTO sollte in der Kategorie ”<emphasis>Networking</emphasis>/<emphasis>Protocols</emphasis>” aufgelistet werden.</para></sect1><sect1>
<title>Version, Werdegang und Unerledigtes</title>
<sect2>
<title>Version</title>
<para>Die aktuelle Versionsnummer finden Sie auf der Titelseite.</para>
<para>Für andere verfügbare Versionen/Übersetzungen siehe auch <ulink url="http://www.bieringer.de/linux/IPv6/">http://www.bieringer.de/linux/IPv6/</ulink>.</para></sect2><sect2>
<title>Werdegang</title>
<sect3>
<title>Eckpunkte</title>
<para>2001-11-30: Beginn mit der Neukonzeption dieses HOWTOs.</para>
<para>2002-01-02: Viel Inhalt eingearbeitet, erste Version des Kapitels 1 veröffentlicht (Version 0.10).</para>
<para>2002-01-14: Weitere Vervollständigung und Überprüfung des Inhalts, öffentliche Freigabe des kompletten Dokuments (Version 0.14).</para>
<para>2002-08-16: Polnische Übersetzung ist in Arbeit.</para>
<para>2002-10-31: Chinesische Übersetzung ist verfügbar.</para>
<para>2002-11-10: Deutsche Übersetzung ist in Arbeit.</para>
<para>2003-02-10: Deutsche Übersetzung ist verfügbar.</para>
<para>2003-04-09: Französische Übersetzung ist in Arbeit.</para>
<para>2003-05-09: Französische Übersetzung ist verfügbar</para>
<para>2003-10-16: Italienische Übersetzung ist in Arbeit.</para>
<para>2004-03-12: Italienische Übersetzung ist verfügbar</para>
<para>2004-06-18: Griechische Übersetzung ist in Arbeit</para>
<para>2005-07-25: Türkische Übersetzung ist verfügbar</para>
<para>2007-03-28: Portugiesisch-Brasilianische Übersetzung ist in Arbeit</para>
<para>2008-07-30: Spanische Übersetzung ist verfügbar (aber noch nicht abgeschlossen, inzwischen nicht mehr online)</para>
<para>2011-05-09: Portugiesisch-Brasilianische Übersetzung ist wieder in Arbeit</para></sect3><sect3>
<title>Vollständiger Werdegang</title>
<para>Am Ende dieses Dokumentes finden Sie die <link linkend="revision-history">Historie der Änderungen</link>.</para></sect3></sect2><sect2>
<title>Unerledigtes</title>
<itemizedlist>
<listitem><para>Fehlenden Inhalt ergänzen</para></listitem><listitem><para>Grammatik-Überprüfung beenden</para></listitem></itemizedlist></sect2></sect1><sect1 id='general-translations' >
<title><!-- anchor id="general-translations" -->Übersetzungen</title>
<para>Übersetzungen müssen den URL, die Versionsnummer und das Copyright des Originaldokuments enthalten (aber auch die Daten zu ihrer Übersetzung). Bitte übersetzen Sie nicht das Original-Changelog, das wäre nicht sehr sinnvoll. Es sieht aus, als wäre die Änderungsfrequenz dieses Dokumentes überwiegend geringer als einmal pro Monat. Seit Version 0.27 scheint der Hauptteil des vom Autor beigesteuerten Inhaltes geschrieben zu sein. Übersetzungen müssen immer das englische Original als Quelle benutzen.</para><sect2>
<title>Diverse Sprachen</title>
<para>Notiz: eine Übersicht mit URLs ist zu finden unter <ulink url="http://www.bieringer.de/linux/IPv6/">http://www.bieringer.de/linux/IPv6/</ulink>.</para><sect3>
<title>Deutsch</title>
<para>Mit 2002-11-10 wurde von Georg Käfer <gkaefer at gmx dot at> die Deutsche Übersetzung begonnen und am 10.02.2003 erstmals publiziert. Grundlage der Übersetzung ist die CVS-Version 1.53 der Lyx-Datei, aus der das Linux IPv6 HOWTO Version 0.39.2 erstellt wurde.</para>
<para>Mit Sicherheit werden in dieser Übersetzung noch so manche 'Hoppalas' und auch 'grausige' Rechtschreibfehler zu finden sein. Sorry! Ebenfalls fällt es nicht immer leicht, zu entscheiden, ob ein Terminus überhaupt übersetzt werden soll, bzw. ob die Beibehaltung des englischen Originalwortes nicht zielführender wäre... </para>
<para><emphasis>Neue deutsche Rechtschreibung</emphasis>: es wurde eine konservative Übersetzung angewandt, d.h. nicht alle möglichen Änderungen der Neuen deutschen Rechtschreibung wurden durchgeführt, sondern nur die notwendigen Änderungen.</para>
<para>Die URL für diese deutsche Übersetzung ist: <ulink url="http://mirrors.deepspace6.net/Linux+IPv6-HOWTO-de/">http://mirrors.deepspace6.net/Linux+IPv6-HOWTO-de/</ulink></para></sect3><sect3>
<title>Andere Sprachen</title>
<para>Informationen über Übersetzungen in andere Sprachen finden Sie hier im Originaldokument: <ulink url="http://www.tldp.org/HOWTO/Linux+IPv6-HOWTO/general-translations.html">TLDP / Linux+IPv6-HOWTO / Übersetzungen</ulink>.</para></sect3></sect2></sect1><sect1>
<title>Technisches</title>
<sect2 id='general-original-source' >
<title><!-- anchor id="general-original-source" -->Originalquelle dieses HOWTOs</title>
<para>Aktuelle Versionen dieses HOWTOs werden mit LyX Version 2.2.2 auf einem Fedora 25 Linux System mit SGML-Template (DocBook book) erstellt. Alle Dateien sind unter <ulink url="https://github.com/tLDP/Linux-IPv6/">github / tLDP / Linux-IPv6</ulink> verfügbar.</para>
<para>Auch die deutsche Version wurde mit LyX erstellt und befindet sich ebenfalls im angegebenen GitHub-Verzeichnis.</para><sect3>
<title>Zeilenumbruch in Code-Beispielen</title>
<para>Der Zeilenumbruch wird mit Hilfe eines selbst geschriebenen Tools ”lyxcodelinewrapper.pl” erstellt; Sie finden das Skript am CVS unter: <ulink url="https://github.com/tLDP/Linux-IPv6/">github / tLDP / Linux-IPv6</ulink></para></sect3><sect3>
<title>SGML Erzeugung</title>
<para>SGML wird mit Hilfe der Exportfunktion in LyX generiert.</para>
<para>Um korrekten SGML Code zu erstellen, müssen einige Korrekturen gemacht werden. Die entsprechenden Perl Skripts finden Sie unter <ulink url="https://github.com/tLDP/Linux-IPv6/">github / tLDP / Linux-IPv6</ulink>:</para><itemizedlist>
<listitem><para>Der Export von Lyx-Tabellen erstellt keine korrekten ”colspan” Tags. Tool für die Korrektur: ”sgmllyxtabletagfix.pl” (behoben seit LyX Version 1.2.0)</para></listitem><listitem><para>LyX verwendet manchmal , anstelle der normalen, spezielle Links-/Rechts-Formatierungen für Zitate, die dann auch im generierten HTML Code ausgegeben werden. Einige Browser können das Ergebnis nicht besonders schön darstellen (bekannt sind: Opera TP2 oder Konqueror). Tool für die Korrektur: ”sgmllyxquotefix.pl”</para></listitem></itemizedlist></sect3></sect2><sect2>
<title>Online-Verweise auf die HTML Version dieses HOWTOs (Links / Anchors)</title>
<sect3>
<title>Hauptindexseite</title>
<para>Im Allgemeinen wird ein Verweis auf die Hauptindexseite empfohlen.</para></sect3><sect3>
<title>Seitennamen</title>
<para>Da die HTML-Seiten aus einer SGML-Datei erstellt werden, werden einige HTML-Dateinamen ziemlich zufällig gewählt. Manche Seiten sind jedoch in LyX mit Tags gekennzeichnet, woraus statische Namen resultieren. Diese sollten der besseren Referenz wegen zukünftig nicht geändert werden.</para>
<para>Bitte lassen Sie es wissen, wenn Sie glauben, dass ein Tag vergessen wurde.</para></sect3></sect2></sect1><sect1>
<title>Vorwort</title>
<para>Einiges vorab:</para><sect2>
<title>Wie viele IPv6 & Linux bezogene HOWTOs gibt es?</title>
<para>Inklusive diesem gibt es drei (3) HOWTO-Dokumente. Pardon, wenn das zu viele sind ;-)</para><sect3>
<title>Linux Ipv6 FAQ/HOWTO (veraltet)</title>
<para>Das erste IPv6 bezogene Dokument wurde von <emphasis>Eric Osborne</emphasis> geschrieben und heißt <ulink url="http://www.linuxhq.com/IPv6/">Linux IPv6 FAQ/HOWTO</ulink> (bitte benutzen Sie den Text nur im historischen Kontext). Die neueste Version 3.2.1 wurde am 14.Juli 1997 veröffentlicht.</para>
<para>Bitte um Ihre Mithilfe: Wenn jemand das Erstellungsdatum der Erstversion dieses HOWTOs kennen sollte, senden Sie mir Bitte ein E-Mail (Die Information wird im Abschnitt ”Werdegang” eingearbeitet).</para></sect3><sect3>
<title>IPv6 & Linux - HowTo (gewartet)</title>
<para>Ein zweites Dokument (<ulink url="http://www.bieringer.de/linux/IPv6/">IPv6 & Linux - HowTo</ulink>) wurde vom selben Autor (Peter Bieringer) geschrieben und liegt im HTML-Format vor. Begonnen wurde mit dem Schreiben im April 1997 und die erste englische Version wurde im Juni 1997 veröffentlicht. Das Dokument wird weiterhin betreut, es wird aber langsam (jedoch nicht komplett) in das Linux IPv6 HOWTO - das Sie gerade lesen - eingearbeitet.</para></sect3><sect3>
<title>Linux IPv6 HOWTO (dieses Dokument)</title>
<para>Da das <ulink url="http://www.bieringer.de/linux/IPv6/">IPv6 & Linux - HowTo</ulink> in HTML geschrieben wurde, war es nicht wirklich mit dem <ulink url="http://www.tldp.org/">The Linux Documentation Project (TLDP)</ulink> kompatibel. Der Autor (Peter Bieringer) bekam Ende Nov. 2001 die Anfrage, das <ulink url="http://www.bieringer.de/linux/IPv6/">IPv6 & Linux - HowTo</ulink> in SGML zu konvertieren. Er entschied sich auf Grund dieser Diskontinuität (<ulink url="http://www.bieringer.de/linux/IPv6/IPv6-HOWTO/IPv6-HOWTO-0.html#history">Future of IPv6 & Linux - HowTo</ulink>) und der Tatsache, dass IPv6 mehr und mehr zum Standard wird, zum Schreiben eines neuen Dokuments. Im zweiten HOWTO (<ulink url="http://www.bieringer.de/linux/IPv6/">IPv6 & Linux - HowTo</ulink>) wird auch weiterhin dynamischer Inhalt sowie weiterführender Inhalt zu finden sein. </para></sect3></sect2></sect1><sect1>
<title>Verwendete Begriffe, Glossar und Abkürzungen</title>
<sect2>
<title>Netzwerkbegriffe</title>
<variablelist>
<varlistentry><term>Base 10</term><listitem><para>Dezimales Zahlensystem, das die Zahlen 0-9 beinhaltet.</para></listitem></varlistentry><varlistentry><term>Base 16</term><listitem><para>Generell in Programmiersprachen verwendetes hexedezimales Zahlensystem, das die Zahlen 0-9 und die Buchstaben A-F beinhaltet (Groß/Kleinschreibung möglich).</para></listitem></varlistentry><varlistentry><term>Base 85</term><listitem><para>85 verschiedene Zahlen/Buchstaben umfasst dieses Zahlensystem und ermöglicht dadurch kürzere Zeichenketten - aber niemals in der Praxis gesehen.</para></listitem></varlistentry><varlistentry><term>Bit</term><listitem><para>Kleinste Speichereinheit mit dem Wert ein/wahr (1) oder aus/falsch (0)</para></listitem></varlistentry><varlistentry><term>Byte</term><listitem><para>Meistens eine Menge von 8 bits (aber kein Muss - siehe ältere Computer Systeme)</para></listitem></varlistentry><varlistentry><term>Device</term><listitem><para>Netzwerkgerät, siehe auch NIC</para></listitem></varlistentry><varlistentry><term>Dual homed host</term><listitem><para>Ein Dual homed host ist ein Node mit zwei (physischen oder virtuellen) Schnittstellen auf zwei unterschiedlichen Links. Datenpakete können zwischen den zwei Verbindungen nicht weitergeleitet werden.</para></listitem></varlistentry><varlistentry><term>Host</term><listitem><para>Im Regelfall handelt es sich um einen Rechner mit einen Link sowie einer aktiven Netzwerk-Schnittstelle, z.B. Ethernet oder (aber nicht und) PPP.</para></listitem></varlistentry><varlistentry><term>Interface</term><listitem><para>Ident mit ”device”, siehe auch NIC.</para></listitem></varlistentry><varlistentry><term>IP Header</term><listitem><para>Kopf eines IP-Paketes (jedes Netzwerk-Paket hat einen header, die Form des headers ist abhängig von der Netzwerkschicht).</para></listitem></varlistentry><varlistentry><term>Link</term><listitem><para>Ein Link ist eine Schicht 2 Netzwerk-Transportmedium für Pakete; Beispiele sind Ethernet, Token Ring, PPP, SLIP, ATM, ISDN, Frame Relay,...</para></listitem></varlistentry><varlistentry><term>Node</term><listitem><para>Ein Node (=Knoten) ist ein Host oder ein Router.</para></listitem></varlistentry><varlistentry><term>Octet</term><listitem><para>Sammlung von acht (8) realen bits, vergleichbar mit ”byte”.</para></listitem></varlistentry><varlistentry><term>Port</term><listitem><para>Information für den TCP/UDP dispatcher (Schicht 4), mit dessen Hilfe Informationen auf höhere Schichten transportiert werden.</para></listitem></varlistentry><varlistentry><term>Protocol</term><listitem><para>Jede Netzwerkschicht enthält meistens ein Protokoll-Feld damit die Übergabe transportierter Informationen an höhere Netzwerkschichten erleichtert wird. Beispiele hierfür: Schicht 2 (MAC) und 3 (IP).</para></listitem></varlistentry><varlistentry><term>Router</term><listitem><para>Ein Router ist ein Knoten mit zwei (2) oder mehr (physischen oder virtuellen) Schnittstellen, der Datenpakete zwischen den Schnittstellen versenden kann.</para></listitem></varlistentry><varlistentry><term>Socket</term><listitem><para>Ein IP socket wird durch Quell- und Zieladresse, den Ports (und der Verbindung) definiert.</para></listitem></varlistentry><varlistentry><term>Stack</term><listitem><para>Ein Stack setzt sich aus Netzwerkschichten zusammen. </para></listitem></varlistentry><varlistentry><term>Subnetmask</term><listitem><para>IP Netzwerke verwenden Bitmasken um lokale von entfernten Netzwerken zu trennen.</para></listitem></varlistentry><varlistentry><term>Tunnel</term><listitem><para>Ein Tunnel ist typischerweise eine Punkt-zu-Punkt-Verbindung, über die Datenpakete eines anderen Protokolls ausgetauscht werden. Beispiel: IPv6-in-IPv4 Tunnel.</para></listitem></varlistentry></variablelist><sect3 id='Glossar' >
<title><!-- anchor id="Glossar" -->Abkürzungen</title>
<variablelist>
<varlistentry><term>ACL</term><listitem><para>Access Control List - Zugriffsliste)</para></listitem></varlistentry><varlistentry><term>API</term><listitem><para>Application Programming Interface - Schnittstellen in Programmen zwischen den Applikationen</para></listitem></varlistentry><varlistentry><term>ASIC</term><listitem><para>Application Specified Integrated Circuit - Applikationsspezifischer integrierter Schaltkreis</para></listitem></varlistentry><varlistentry><term>BSD</term><listitem><para>Berkeley Software Distribution</para></listitem></varlistentry><varlistentry><term>CAN-Bus</term><listitem><para>Controller Area Network Bus (physical bus system)</para></listitem></varlistentry><varlistentry><term>ISP</term><listitem><para>Internet Service Provider</para></listitem></varlistentry><varlistentry><term>KAME</term><listitem><para>Ein Projekt und gemeinsame Anstrengung von sechs (6) Firmen in Japan mit dem Ziel, einen freien IPv6 und IPsec Stack für BSD Derivate der Öffentlichkeit zur Verfügung zu stellen <ulink url="http://www.kame.net/">www.kame.net</ulink>.</para></listitem></varlistentry><varlistentry><term>LIR</term><listitem><para>Local Internet Registry - Lokale Internet Registratur</para></listitem></varlistentry><varlistentry><term>NIC</term><listitem><para>Network Interface Controller - Netzwerk[schnittstellen]karte, kurz Netzwerkkarte</para></listitem></varlistentry><varlistentry><term>RFC</term><listitem><para>Request For Comments - eine Sammlung von technischen und organisatorischen Dokumenten zum Thema Internet.</para></listitem></varlistentry><varlistentry><term>USAGI</term><listitem><para>UniverSAl playGround for Ipv6 Project - dieses Projekt will für das Linux System einen IPv6 Protokoll stack mit Produktionsqualität ausliefern.</para></listitem></varlistentry></variablelist></sect3></sect2><sect2>
<title>In diesem Dokument verwendete Syntax</title>
<sect3>
<title>Zeilenumbruchs-Zeichen bei langen Codebeispielen</title>
<para>Das spezielle Zeichen ”¬” zeigt in den Beispielen an, dass die Zeile umgebrochen wurde. Dies wurde für eine korrekte Darstellung des Textes in den PDF- und PS-Versionen benötigt.</para></sect3><sect3>
<title>Platzhalter</title>
<para>In allgemeinen Beispielen können Sie öfters lesen:</para><screen>
<![CDATA[<myipaddress>
]]></screen><para>In Skripts oder an Ihrer Kommandozeile müssen Sie die < und > weglassen und den Text mit dem entsprechenden Inhalt ersetzen. Das Beispiel hier z.B. könnte sein:</para><screen>
<![CDATA[1.2.3.4
]]></screen></sect3><sect3>
<title>Shell-Kommandos</title>
<para>Kommandos, die nicht als Root-Benutzer ausgeführt werden, beginnen mit $, z.B.</para><screen>
<![CDATA[$ whoami
]]></screen><para>Befehle, die mit Root-Rechten ausgeführt werden, beginnen mit #, z.B.</para><screen>
<![CDATA[# whoami
]]></screen></sect3></sect2></sect1><sect1>
<title>Grundvoraussetzung für die Verwendung dieses HOWTOs</title>
<sect2>
<title>Persönliche Anforderungen</title>
<sect3>
<title>Erfahrung mit Unix Tools</title>
<para>Sie sollten mit den gängigsten Unix Tools wie<emphasis> grep</emphasis>, <emphasis>awk</emphasis>, <emphasis>find</emphasis>, etc. und deren Kommandozeilen-Optionen vertraut sein.</para></sect3><sect3>
<title>Erfahrung mit Netzwerktheorie</title>
<para>Sie sollten das Schichtmodell und die einzelnen Schichten, Protokolle, Adressarten, Kabelsorten, Stecker etc. kennen. Wenn das Neuland für Sie sein sollte, finden Sie hier einen guten Ausgangspunkt: <ulink url=" https://web.archive.org/web/20121018222845/http://www.rigacci.org/docs/biblio/online/intro_to_networking/book1.htm"> https://web.archive.org/web/20121018222845/http://www.rigacci.org/docs/biblio/online/intro_to_networking/book1.htm</ulink></para></sect3><sect3>
<title>Erfahrung mit der Konfiguration von IPv4 Netzen</title>
<para>Sie sollten definitiv Erfahrung mit der Konfiguration von IPv4 Netzwerken haben, andernfalls werden Sie dem Text nur schwer folgen können.</para></sect3><sect3>
<title>Erfahrung mit dem Domain Name System (DNS)</title>
<para>Sie sollten ebenfalls das Domain Name System (DNS) verstehen und damit umgehen können.</para></sect3><sect3>
<title>Routine im Umgang mit Strategien zur Netzwerk-Fehlersuche</title>
<para>Sie sollten zumindest mit tcpdump umgehen und den Output des Programms interpretieren können. Andernfalls wird die Netzwerk-Fehlersuche für Sie schwierig.</para></sect3></sect2><sect2>
<title>Linux kompatible Hardware</title>
<para>Sicherlich wollen Sie mit realer Hardware experimentieren und nicht darüber an dieser Stelle lesen und an der einen oder anderen Stelle einschlummern. ;-7)</para></sect2></sect1></chapter><chapter id='chapter-basics' >
<title><!-- anchor id="chapter-basics" -->Grundlagen</title>
<sect1>
<title>Was ist IPv6?</title>
<para>IPv6 ist ein neues Schicht 3 Vermittlungsprotokoll und es wird IPv4 (auch als IP bekannt) ablösen. IPv4 wurde vor langer Zeit entworfen (<ulink url="http://www.faqs.org/rfcs/rfc760.html">RFC 760 / Internet Protocol</ulink> vom Januar 1980). Seitdem wurden viele Adressen vergeben und Erweiterungen angeregt. Die aktuelle RFC ist <ulink url="http://www.faqs.org/rfcs/rfc2460.html">RFC 2460 / Internet Protocol Version 6 Specification</ulink>. Hauptänderungen in IPv6 sind das neue Design des Headers sowie die Erweiterung der Adresslänge von 32 bits auf 128 bits. Die Schicht 3 ist für den Transport der Pakete von Endpunkt-zu-Endpunkt mittels adressbasierten Paket-Routings zuständig, und wie bei IPv4 müssen bei IPv6 die Adressen (Quell- und Zieladresse) inkludiert sein.</para>
<para>Für weitere Informationen zur IPv6 Geschichte siehe die älteren RFCs z.B. <ulink url="http://www.switch.ch/lan/ipv6/references.html">SWITCH IPv6 Pilot / References</ulink>.</para></sect1><sect1 id='basic-history-IPv6-Linux' >
<title><!-- anchor id="basic-history-IPv6-Linux" -->Geschichte von IPv6 & Linux</title>
<para>Die Jahre 1992, 1993 und 1994 der allgemeinen IPv6 Geschichte können Sie in folgendem Dokument nachlesen: <ulink url="http://www.laynetworks.com/IPv6.htm#CH3">IPv6 or IPng (IP next generation)</ulink>.</para>
<para>Zu erledigen: Bessere Chronologie, mehr Inhalt</para><sect2>
<title>Anfang</title>
<para>Der erste IPv6 Netzwerk Code wurde dem Linux Kernel 2.1.8 im November 1996 durch Pedro Roque hinzugefügt. Er basierte auf dem BSD API:</para><screen>
<![CDATA[diff -u --recursive --new-file v2.1.7/linux/include/linux/in6.h
¬ linux/include/linux/in6.h
--- v2.1.7/linux/include/linux/in6.h Thu Jan 1 02:00:00 1970
+++ linux/include/linux/in6.h Sun Nov 3 11:04:42 1996
@@ -0,0 +1,99 @@
+/*
+ * Types and definitions for AF_INET6
+ * Linux INET6 implementation
+ * + * Authors:
+ * Pedro Roque <******>
+ *
+ * Source:
+ * IPv6 Program Interfaces for BSD Systems
+ * <draft-ietf-ipngwg-bsd-api-05.txt>
]]></screen><para>Diese Zeilen entstammen dem patch-2.1.8 (die E-Mail-Adresse wurde hier beim Copy & Paste absichtlich gelöscht).</para></sect2><sect2>
<title>Übergangszeit</title>
<para>Aufgrund fehlender Arbeitskraft konnte die IPv6-Kernel-Implementierung nicht mit den Drafts oder neu freigegebenen RFCs Schritt halten. Im Oktober 2000 wurde in Japan das <ulink url="http://www.linux-ipv6.org/">USAGI</ulink> Projekt gestartet. Das Ziel war, die fehlende bzw. bereits veraltete IPv6 Funktionalität in Linux zu implementieren. Dabei richtete man sich nach der aktuellen FreeBSD Implementierung von IPv6, die durch das <ulink url="http://www.kame.net/">KAME project</ulink> umgesetzt wurde. Von Zeit zu Zeit wurden im Vergleich zu den aktuellen Standard Linux-Kernel-Quellen ein Auszug erstellt. </para>
<para>Bis zum Start der Entwicklungs-Kernel Serie 2.5.x, der <ulink url="http://www.linux-ipv6.org/">USAGI</ulink> Patch war so groß, das er von den Linux-Netzwerkcode-Maintainers nicht komplett für die Einbindung in die Produktions-Kernel Serie 2.4.x eingebunden werden konnte.</para>
<para>Während der Entwicklung in der Serie 2.5.x hat <ulink url="http://www.linux-ipv6.org/">USAGI</ulink> versucht, so viel wie möglich ihrer Erweiterungen darin zu integrieren.</para></sect2><sect2>
<title>Heute</title>
<para>Viele der von <ulink url="http://www.linux-ipv6.org/">USAGI</ulink> und anderen lang entwickelten IPv6-bezogenen Patches sind bereits in der Vanilla Kernel Serie 2.6.x integriert.</para></sect2><sect2>
<title>Zukunft</title>
<para><ulink url="http://www.linux-ipv6.org/">USAGI</ulink> und andere arbeiten weiterhin an der Implementierung von neuen Features wie Mobility und anderen. Von Zeit zu Zeit werden neue Erweiterungs-Patches veröffentlicht, wie auch die Integration in die Vanilla Kernel Serie 2.6.x vorangetrieben.</para></sect2></sect1><sect1>
<title>Wie sehen IPv6 Adressen aus?</title>
<para>Wie gesagt, IPv6 Adressen sind 128 bit lang. Diese bit-Anzahl kann sehr hohe dezimale Zahlen mit bis zu 39 Ziffern ergeben:</para><screen>
<![CDATA[2^128-1: 340282366920938463463374607431768211455
]]></screen><para>Solche Zahlen sind nicht wirklich Adressen, die auswendig gelernt werden können. Die IPv6 Adressdarstellung ist bitweise orientiert (wie bei IPv4, aber das wird nicht oft bedacht). Eine bessere Schreibweise ist deshalb die hexadezimale Darstellung. Dabei werden 4 bits (auch ”nibble” genannt) durch die Zeichen 0-9 und a-f (10-15) dargestellt, wodurch die Länge auf 32 Zeichen reduziert wird.</para><screen>
<![CDATA[2^128-1: 0xffffffffffffffffffffffffffffffff
]]></screen><para>Diese Darstellung ist ebenfalls nicht sehr angenehm (mögliche Verwechslung oder Verlust einzelner hexadezimaler Ziffern), so dass die IPv6 Designer das hexadezimales Format mit einem Doppelpunkt als Trennzeichen nach jedem 16 bit Block erweiterten. Ferner wird das führende ”0x” (ein in Programmiersprachen verwendetes Identifizierungsmerkmal für hexadezimale Werte) entfernt:</para><screen>
<![CDATA[2^128-1: ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff
]]></screen><para>Eine gültige Adresse (s.u. Adress-Typen) ist z.B.:</para><screen>
<![CDATA[2001:0db8:0100:f101:0210:a4ff:fee3:9566
]]></screen><para>Der Vereinfachung halber können führende Nullen jedes 16 bit-Blocks weggelassen werden:</para><screen>
<![CDATA[2001:0db8:0100:f101:0210:a4ff:fee3:9566 ->
¬ 2001:0db8:100:f101:210:a4ff:fee3:9566
]]></screen><para>Eine Sequenz von 16 bit-Blöcken, die nur Nullen enthaltet, kann durch ein “::“ ersetzt werden. Diese Komprimierung kann aber nicht öfters als einmal durchgeführt werden</para><screen>
<![CDATA[2001:0db8:100:f101:0:0:0:1 -> 2001:0db8:100:f101::1
]]></screen><para>Die höchstmögliche Reduktion sieht man bei der IPv6 Localhost Adresse:</para><screen>
<![CDATA[0000:0000:0000:0000:0000:0000:0000:0001 -> ::1
]]></screen><para>Es gibt auch eine so genannte <emphasis>kompakte</emphasis> Darstellung (base 85 codiert) <ulink url="http://www.faqs.org/rfcs/rfc1924.html">RFC 1924 / A Compact Representation of IPv6 Addresses</ulink> (publiziert am 1. April 1996). Diese Notation wurde allerdings nie in der Praxis gesehen und ist wahrscheinlich ein Aprilscherz. Ein Beispiel:</para><screen>
<![CDATA[# ipv6calc --addr_to_base85 2001:0db8:0100:f101:0210:a4ff:fee3:9566
Itu&-ZQ82s>J%s99FJXT
]]></screen><blockquote>
<para>Info: <emphasis>ipv6calc</emphasis> ist ein IPv6 Adressen-Format-Umrechner und Konvertierungsprogramm und ist hier zu finden: <ulink url="http://www.deepspace6.net/projects/ipv6calc.html">ipv6calc homepage</ulink> (<ulink url="http://mirrors.bieringer.de/www.deepspace6.net/projects/ipv6calc.html">Mirror</ulink>)</para>
</blockquote></sect1><sect1>
<title>FAQ (Grundlagen)</title>
<sect2>
<title>Warum wird der Nachfolger von IPv4 nun IPv6 und nicht IPv5 genannt?</title>
<para>In jedem IP-Header werden die ersten 4 Bits für die Protokollversion reserviert. So sind theoretisch die Protokollnummern 0 bis 15 möglich:</para><itemizedlist>
<listitem><para>4: Wird schon für IPv4 verwendet</para></listitem><listitem><para>5: Ist für das Stream Protocol (STP, <ulink url="http://www.faqs.org/rfcs/rfc1819.html">RFC 1819 / Internet Stream Protocol Version 2</ulink>) reserviert (das aber nie den Weg in die Öffentlichkeit fand)</para></listitem></itemizedlist><para>So war die nächste freie Zahl 6. IPv6 war geboren!</para></sect2><sect2>
<title>IPv6 Adressen: Warum ist die Anzahl der Bits so groß?</title>
<para>Bei der Entwicklung von IPv4 dachte man, dass 32 Bits für die Welt ausreichend wären. Blickt man zurück, so waren bis heute 32 bits ausreichend. Vielleicht ist dies auch noch für ein paar Jahre so. Jedoch werden 32 bits nicht ausreichen, um in der Zukunft jedes Netzwerkgerät mit einer globalen Adresse ausstatten zu können. Denken Sie an Mobiltelefone, Autos (mit elektronischen Geräten an einem CAN Bus), Toaster, Kühlschränken, Lichtschalter usw.</para>
<para>Die IPv6 Designer haben 128 Bit gewählt, 4-mal mehr als im heutigen IPv4.</para>
<para>Aber die benutzbare Größe ist kleiner als es erscheinen mag, da in dem gegenwärtig definierten Adress-Schema 64 Bits für die Schnittstellen-Identifizierung verwendet werden. Die zweiten 64 Bit werden für das Routing verwendet. Die derzeitigen Aggregation-Levels (= Größe der zugeteilten IP-Blöcke) vorausgesetzt (/48, /32,...), ist eine Verknappung der Adressen weiterhin denkbar. Aber mit Sicherheit nicht in naher Zukunft. </para>
<para>Weitere Informationen finden Sie unter <ulink url="http://www.faqs.org/rfcs/rfc1715.html">RFC 1715 / The H Ratio for Address Assignment Efficiency</ulink> und <ulink url="http://www.faqs.org/rfcs/rfc3194.html">RFC 3194 / The Host-Density Ratio for Address Assignment Efficiency</ulink>.</para></sect2><sect2>
<title>IPv6 Adressen: Warum ist die Bit-Anzahl bei einem neuen Design so klein?</title>
<para>Es gibt (wahrscheinlich) eine Gruppe (bekannt ist nur Jim Fleming...) von Personen am Internet, die über IPv8 und IPv16 nachdenken. Für diese Designs gibt es aber keine hohe Akzeptanz und auch keine Kernel-Implementierungen. 128 bits sind die beste Wahl bezogen auf Header-Overhead und dem Datentransport. Denken Sie an die minimalste Maximum Transfer Unit (MTU) in IPv4 (575 octets) und in IPv6 (1280 octets), die Header-Länge in IPv4 (20 octets Minimum, kann bis zu 60 octets mit IPv4 Optionen ansteigen) und in IPv6 sind es 40 octets (fixer Wert). Dies ist 3.4 % der minimalen MTU in IPv4 und 3.1 % der minimalen MTU in IPv6. Dies bedeutet, dass der Overhead beim Header fast identisch ist. Mehr bits für die Adressierung würden größere Header und deshalb mehr Overhead erfordern. Bedenken Sie auch die maximale MTU von 1500 octets (in speziellen Fällen bei Jumbo-Paketen bis zu 9k octets) bei normalen Verbindungen (z.B. Ethernet). Letztlich wäre es kein korrektes Design, wenn 10 % oder 20 % der transportierten Daten in einem Schicht 3-Paket für Adressen und nicht für die ”Nutzlast” benötigt würden.</para></sect2></sect1></chapter><chapter id='chapter-addresstypes' >
<title><!-- anchor id="chapter-addresstypes" -->Adress-Typen</title>
<para>Wie bei IPv4 können IPv6-Adressen mittels Subnetzmasken (subnet masks) in einen Netz- und einen Host-Teil unterteilt werden.</para>
<para>Bei IPv4 hat sich gezeigt, dass es manchmal von Nutzen wäre, einem Interface mehr als eine IP-Adresse zuweisen zu können, je nach Bedarf und Zweck (aliases, multicast etc.). Um in Zukunft flexibler bleiben zu können, geht man bei IPv6 weiter und erlaubt pro Interface mehr als eine zugewiesene IP-Adresse. Derzeit sind durch die RFCs kein Limit gesetzt, wohl aber in der Implementierung des IPv6 Stacks (um DoS Attacken vorzubeugen).</para>
<para>Neben der großen Bit-Anzahl für Adressen definiert IPv6 basierend auf einigen vorangestellten Bits verschiedene Adress-Typen. Diese werden hoffentlich in der Zukunft niemals aufgehoben (zum Unterschied zu IPv4 heute und die Entwicklung der class A, B und C Netze).</para>
<para>Zur Unterstützung einer automatischen Konfiguration wird die Bitanzahl in einen Netzwerk-Teil (vordere 64 Bits) und einen Hostteil (hintere 64 Bits). </para><sect1>
<title>Adressen ohne speziellen Präfix</title>
<sect2>
<title>Localhost Adresse</title>
<para>Dies ist eine spezielle Adresse für das Loopback Interface, vergleichbar zur ”127.0.0.1” bei IPv4. Bei IPv6 lautet die localhost Adresse:</para><screen>
<![CDATA[0000:0000:0000:0000:0000:0000:0000:0001
]]></screen><para>bzw. komprimiert:</para><screen>
<![CDATA[::1
]]></screen><para>Pakete mit dieser Quell- bzw. Ziel-Adresse sollten niemals den sendenden Host verlassen.</para></sect2><sect2>
<title>Unspezifische Adresse</title>
<para>Dies ist eine spezielle Adresse vergleichbar mit ”any” oder ”0.0.0.0” bei IPv4. In IPv6 lautet sie:</para><screen>
<![CDATA[0000:0000:0000:0000:0000:0000:0000:0000
]]></screen><para>oder:</para><screen>
<![CDATA[::
]]></screen><para>Diese Adresse wird meistens in Routing-Tabellen und beim ”socket binding” (zu jeder IPv6 Adresse) angewendet bzw. gesehen.</para>
<para>Beachten: Die Unspezifizierte Adresse kann nicht als Ziel-Adresse verwendet werden.</para></sect2><sect2>
<title>IPv6 Adressen mit eingebetteter IPv4 Adresse</title>
<para>Es gibt zwei Adressen-Typen, die IPv4 Adressen enthalten können.</para><sect3>
<title>IPv4 Adressen in IPv6 Format</title>
<para>IPv4-only IPv6-kompatible Adressen kommen manchmal bei IPv6 kompatiblen Daemon zur Anwendung, die allerdings ausschließlich an IPv4 Adressen gebunden sind.</para>
<para>Diese Adressen sind mit einer speziellen Präfixlänge von 96 definiert (a.b.c.d. ist die IPv4 Adresse):</para><screen>
<![CDATA[0:0:0:0:0:ffff:a.b.c.d/96
]]></screen><para>oder in komprimiertem Format:</para><screen>
<![CDATA[::ffff:a.b.c.d/96
]]></screen><para>Die IPv4 Adresse 1.2.3.4. z.B. sieht wie folgt aus:</para><screen>
<![CDATA[::ffff:1.2.3.4
]]></screen></sect3><sect3>
<title>IPv4 kompatible IPv6 Adressen</title>
<para>Dieser Adress-Typ wurde für das automatische Tunneln (<ulink url="http://www.faqs.org/rfcs/rfc2893.html">RFC 2893 / Transition Mechanisms for IPv6 Hosts and Routers</ulink>) verwendet, welches aber durch das <link linkend="tunneling-6to4.">6to4 tunneling</link> ersetzt wurde.</para><screen>
<![CDATA[0:0:0:0:0:0:a.b.c.d/96
]]></screen><para>oder in komprimierter Form:</para><screen>
<![CDATA[::a.b.c.d/96
]]></screen></sect3></sect2></sect1><sect1>
<title>Netzteil der Adresse (Präfix)</title>
<para>Es wurden einige Adress-Typen definiert und zugleich blieb für zukünftige Anforderungen ausreichend Raum für weitere Definitionen. In <ulink url="http://www.faqs.org/rfcs/rfc4291.html">RFC 4291 / IP Version 6 Addressing Architecture</ulink> wird das aktuelle Adress-Schema definiert.
</para>
<para>Lassen Sie uns nun einen Blick auf die verschiedenen Präfixe (und somit auf die Adress-Arten) werfen::</para><sect2>
<title>Link-lokaler Adress-Typ</title>
<para>Es handelt sich um spezielle Adressen, die ausschließlich auf einem Link eines Interfaces gültig sind. Wird diese Adresse als Zieladresse verwendet, so kann das Paket niemals einen Router passieren. Die Adresse wird bei der Link-Kommunikation eingesetzt, z.B.:</para><itemizedlist>
<listitem><para>Ist noch jemand anderer auf diesem Link?</para></listitem><listitem><para>Ist jemand mit einer speziellen Adresse hier (z.B. Suche nach einem Router)?</para></listitem></itemizedlist><para>Die Adresse beginnt mit (wobei <emphasis>”x”</emphasis> für ein hexadezimales Zeichen steht, im Normalfall <emphasis>”0</emphasis>”)</para><screen>
<![CDATA[fe8x: <- zurzeit als einziger in Benutzung
fe9x:
feax:
febx:
]]></screen><para>Eine Adresse mit diesem Präfix gibt es an jedem IPv6 fähigen Interface nach einer stateless automatischen Konfiguration (dies ist der Regelfall).</para></sect2><sect2>
<title>Site-lokaler Adress-Typ</title>
<para>Diese Adressen sind vergleichbar zu den <ulink url="http://www.faqs.org/rfcs/rfc1918.html">RFC 1918 / Address Allocation for Private Internets</ulink> im heutigen IPv4. Eine Neuerung und Vorteil hierbei ist, vergleichbar zum 10.0.0.0/8 im IPv4, die Nutzbarkeit von 16 bits bzw. ein Maximum von 65536 Subnetzen.</para>
<para>Ein weiterer Vorteil: Da man bei IPv6 mehr als eine Adresse an ein Interface binden kann, ist auch die Zuweisung einer site-local Adresse zusätzlich zu einer globalen Adresse möglich.</para>
<para>Die Adresse beginnt mit:</para><screen>
<![CDATA[fecx: <- meistens genutzt.
fedx:
feex:
fefx:
]]></screen><para>(<emphasis>”x”</emphasis> ist ein hexadezimales Zeichen, normalerweise <emphasis>”0</emphasis>”) </para>
<para>Dieser Adresstyp ist nun abgekündigt <ulink url="http://www.faqs.org/rfcs/rfc3879.html">RFC 3879 / Deprecating Site Local Addresses</ulink> und sollte nicht mehr verwendet werden. Für Tests im Labor sind solche Adressen meineserachtens aber immer noch eine gute Wahl.</para></sect2><sect2>
<title>Unique Local IPv6 Unicast Adressen</title>
<para>Weil die schon früh definierten site-local Adressen nicht eindeutig sind, kann dies zu großen Problemen führen, wenn z.B. einst unabhängige Netzwerke später zusammengeschlossen werden (Überlappung von Subnetzen). Aufgrund dessen und anderer Gründe wurde ein neuer Adresstyp definiert, genant <ulink url="http://www.faqs.org/rfcs/rfc4193.html">RFC 4193 / Unique Local IPv6 Unicast Addresses</ulink>.
</para>
<para>Die Adresse beginnt mit:</para><screen>
<![CDATA[fcxx:
fdxx: <- zurzeit als einziger in Benutzung
]]></screen><para>Ein Teil des Präfix (40 Bits) werden pseudozufällig generiert. Es ist sehr unwahrscheinlich, daß zwei generierte Präfixe identisch sind.</para>
<para>Ein Beispiel für einen Präfix (generiert mit Hilfe des web-basierten Werkzeugs: <ulink url="http://www.goebel-consult.de/ipv6/createLULA">Goebel Consult / createLULA</ulink>):</para><screen>
<![CDATA[fd0f:8b72:ac90::/48
]]></screen></sect2><sect2>
<title>Globaler Adress-Typ ("Aggregatable global unicast")</title>
<para>Heute gibt es ist per Definition eine globale Adress-Art (Das erste Design, ''Provider based'' genannt, wurde bereits vor einigen Jahren wieder aufgegeben <ulink url="http://www.faqs.org/rfcs/rfc1884.html">RFC 1884 / IP Version 6 Addressing Architecture [obsolete]</ulink>. Einige Überbleibsel hiervon sind in älteren Linux Kernelquellen noch zu finden.</para>
<para>Die Adresse beginnt mit (x sind hexadezimale Zeichen)</para><screen>
<![CDATA[2xxx:
3xxx:
]]></screen><para>Hinweis: Der Zusatz ”aggregatable” im Namen wird in aktuellen Drafts abgelegt.
Es sind weitere Subarten definiert:</para><sect3>
<title>6bone Test-Adressen</title>
<para>Diese globalen Adressen waren die Ersten definierten und auch benutzen Adressen. Sie alle beginnen mit:</para><screen>
<![CDATA[3ffe:
]]></screen><para>Beispiel:</para><screen>
<![CDATA[3ffe:ffff:100:f102::1
]]></screen><para>Eine spezielle 6bone Test-Adresse, die niemals weltweit einmalig ist, beginnt mit</para><screen>
<![CDATA[3ffe:ffff:
]]></screen><para>und wird zumeist in alten Beispielen benutzt, um zu vermeiden, dass Anwender diese mit Copy & Paste in Ihre Konfigurationen übernehmen können. Auf diese Weise können Duplikate weltweit einmaliger Adressen aus Versehen bzw. Unachtsamkeit vermieden werden. Es würde für den Original-Host ernste Probleme bedeuten (z.B. Antwortpakete für niemals gesendete Anfragen bekommen...).
Aufgrund dessen, daß IPv6 nun produktiv ist, wird dieser Präfix nicht mehr länger delegiert und nach dem 6.6.2006 vom Routing ausgenommen (mehr unter <ulink url="http://www.faqs.org/rfcs/rfc3701.html">RFC 3701 / 6bone Phaseout</ulink> ).</para></sect3><sect3>
<title>6to4 Adressen</title>
<para>Diese Adressen werden für einen speziellen Tunnelmechanismus verwendet [<ulink url="http://www.faqs.org/rfcs/rfc3056.html">RFC 3056 / Connection of IPv6 Domains via IPv4 Clouds</ulink> und <ulink url="http://www.faqs.org/rfcs/rfc2893.html">RFC 2893 / Transition Mechanisms for IPv6 Hosts and Routers</ulink>]. Sie kodieren eine gegebene IPv4 Adresse, ein eventuelles Subnetz und beginnen mit </para><screen>
<![CDATA[2002:
]]></screen><para>z.B. wird 192.168.1.1/5 repräsentiert durch:</para><screen>
<![CDATA[2002:c0a8:0101:5::1
]]></screen><para>Ein kleines Shell-Kommando kann aus einer IPv4 eine 6to4 Adresse erstellen:</para><screen>
<![CDATA[ipv4="1.2.3.4"; sla="5"; printf "2002:%02x%02x:%02x%02x:%04x::1" `echo $ipv4
¬ | tr "." " "` $sla
]]></screen><para>Siehe auch <link linkend="tunneling-6to4.">tunneling using 6to4</link> und <link linkend="information-joinipv6-6to4-tunneling">information about 6to4 relay routers</link>.</para></sect3><sect3>
<title>Durch einen Provider zugewiesene Adressen für ein hierarchisches Routing</title>
<para>Diese Adressen werden an Internet Service Provider (ISP) delegiert und beginnen mit:</para><screen>
<![CDATA[2001:
]]></screen><para>Präfixe für große ISPs (mit eigenem Backbone) werden durch <link linkend="information-majorregionregistries">local registries</link> vergeben. Zurzeit wird ein Präfix mit der Länge 32 zugeteilt.</para>
<para>Grosse ISPs delegieren ihrerseits an kleinere ISPs ein Präfix mit der Länge 48.</para></sect3><sect3>
<title>Für Beispiele und Dokumentationen reservierte Adressen</title>
<para>Momentan sind zwei Adressbereiche für Beispiele und Dokumentationen <ulink url="http://www.faqs.org/rfcs/rfc3849.html">RFC 3849 / IPv6 Address Prefix Reserved for Documentation</ulink> reserviert:</para><screen>
<![CDATA[3ffe:ffff::/32
2001:0DB8::/32 EXAMPLENET-WF
]]></screen><para>Diese Adressbereiche sollten nicht geroutet werden und am Übergangsrouter zum Internet (basierend auf Absendeadressen) gefiltert werden.</para></sect3></sect2><sect2>
<title>Multicast-Addressen</title>
<para>Multicast-Adressen werden für entsprechende Dienste verwendet.</para>
<para>Sie beginnen immer mit (xx ist hierbei der Wert der Reichweite)</para><screen>
<![CDATA[ffxy:
]]></screen><para>Die Adressen werden in Reichweiten und Typen unterteilt:</para><sect3>
<title>Multicast-Bereiche</title>
<para>Die Multicast Reichweite ist ein Parameter, mit dem die maximale Distanz angegeben werden kann, die ein Multicast Paket sich von der versendenden Einheit entfernen kann.</para>
<para>Zurzeit sind folgende Regionen (reichweiten) definiert:</para><itemizedlist>
<listitem><para>ffx1: Node-lokal, Pakete verlassen niemals den Knoten</para></listitem><listitem><para>ffx2: Link-lokal, Pakete werden niemals von Routers weitergeleitet, der angegebene Link wird nie verlassen.</para></listitem><listitem><para>ffx5: Site-lokal, Pakete verlassen niemals den Standort (Site)</para></listitem><listitem><para>ffx8: organisationsweit, Pakete verlassen niemals eine Organisation (nicht einfach zu implementieren, dies muss durch das Routing Protokoll abgedeckt werden)</para></listitem><listitem><para>ffxe: Globale Reichweite</para></listitem><listitem><para>Sonstige sind reserviert</para></listitem></itemizedlist></sect3><sect3>
<title>Multicast-Typen</title>
<para>Es sind bereits viele Typen definiert bzw. reserviert (siehe <ulink url="http://www.faqs.org/rfcs/rfc4291.html">RFC 4291 / IP Version 6 Addressing Architecture</ulink> für weitere Details), einige Beispiele:</para><itemizedlist>
<listitem><para>All Nodes Adresse: ID = 1h, alle Hosts am lokalen Node (ff01:0:0:0:0:0:0:1) oder am angeschlossenen Link (ff02:0:0:0:0:0:0:1) werden adressiert.</para></listitem><listitem><para>All Routers Adresse: ID = 2h, alle Router am lokalen Node (ff01:0:0:0:0:0:0:2), am angeschlossenen Link (ff02:0:0:0:0:0:0:2) oder am lokalen Standort werden adressiert.</para></listitem></itemizedlist></sect3><sect3>
<title>Erforderliche node link-local Multicast Adresse</title>
<para>Diese spezielle Multicast Adresse wird als Zieladresse bei der Erkundung des Nahbereichs verwendet, da es ARP bei IPv6 im Gegensatz zu IPv4 nicht mehr gibt.</para>
<para>Ein Beispiel für diese Adresse könnte sein:</para><screen>
<![CDATA[ff02::1:ff00:1234
]]></screen><para>Das benutzte Präfix zeigt, dass es sich um eine link-lokale Multicast Adresse handelt. Dass Suffix wird aus der Zieladresse erstellt. In diesem Beispiel soll ein Paket zur Adresse “fe80::1234” gesendet werden, aber die Netzwerk-Schicht hat keine Kenntnis der aktuellen Schicht 2 MAC Adresse. Die oberen 104 bits werde mit “ff02:0:0:0:01:ff00::/104” ersetzt und die unteres 24 bits bleiben unverändert. Diese Adresse wird nun ”am Link” verwendet, um den entsprechenden Node zu finden, der wiederum seine Schicht 2 MAC Adresse als Antwort zurücksendet.</para></sect3></sect2><sect2>
<title>Anycast-Adressen</title>
<para>Anycast Adressen sind spezielle Adressen und werden verwendet, um besondere Bereiche wie den nächstgelegenen DNS-Server, den nächstliegenden DHCP Server und vergleichbare dynamische Gruppen abzudecken. Die Adressen werden dem Pool des Unicast Adressraums (global-aggregierbar oder Site-lokal zurzeit) entnommen. Der Anycast-Mechanismus (client view) wird von dynamischen Routing-Protokollen gehandhabt.</para>
<para>Hinweis: Anycast Adressen können nicht als Quelladresse verwendet werden, sondern ausschließlich als Zieladressen.</para><sect3>
<title>Subnet-Router Anycast-Adresse</title>
<para>Die Subnet-Router Anycast Adresse ist ein einfaches Beispiel für eine Anycast Adresse. Angenommen, der Knoten hat folgende global zugewiesene IPv6 Adresse:</para><screen>
<![CDATA[2001:0db8:100:f101:210:a4ff:fee3:9566/64 <- Node's address
]]></screen><para>Die Subnet-Router Anycast Adresse wird durch komplette Streichung des Suffixes (die letzten gültigen 64 bits) erstellt: </para><screen>
<![CDATA[2001:0db8:100:f101::/64 <- subnet-router anycast address
]]></screen></sect3></sect2></sect1><sect1>
<title>Adress-Typen (Host-Teil)</title>
<para>In Hinblick auf Auto-Konfigurations- und Mobilitätsfragen wurde entschieden, die niedrigeren 64 bits als Host-Bestandteil zu nutzen. Jedes einzelne Subnetz kann deshalb eine große Anzahl an Adressen enthalten.</para>
<para>Der Host-Teil kann aus unterschiedlichen Blickwinkeln betrachtet werden:</para><sect2>
<title>Automatisch erstellte Adressen (auch unter dem Namen stateless bekannt)</title>
<para>Bei der Auto-Konfiguration wird der Hostteil der Adresse durch die Konvertierung der MAC-Adresse eines Interfaces (falls vorhanden) zu einer einmaligen IPv6 Adresse (mittels EUI-64 Methode) generiert. Falls keine MAC-Adresse verfügbar ist (z.B. bei virtuellen Interfaces), wird anstelle dessen etwas anderes herangezogen (wie z.B. die IPv4 Adresse oder die MAC-Adresse eines physikalischen Interfaces).</para>
<para>Als Beispiel hat hier ein NIC folgende MAC-Adresse (48 bit):</para><screen>
<![CDATA[00:10:a4:01:23:45
]]></screen><para>Diese wird gemäß dem<ulink url="http://standards.ieee.org/regauth/oui/tutorials/EUI64.html">IEEE-Tutorial EUI-64</ulink> Design für EUI-48 Identifiers zum 64 bit Interface Identifier erweitert:</para><screen>
<![CDATA[0210:a4ff:fe01:2345
]]></screen><para>Mit einem gegebenen Präfix wird daraus die schon oben gezeigte IPv6-Adresse:</para><screen>
<![CDATA[2001:0db8:0100:f101:0210:a4ff:fe01:2345
]]></screen><sect3>
<title>Datenschutzproblem mit automatisch erstellten Adressen sowie eine Lösung</title>
<para>Der "automatisch generierte" Hostteil ist weltweit einmalig (mit Ausnahme, wenn der Hersteller einer NIC die gleiche MAC-Adresse bei mehr als einer NIC einsetzt). Die Client-Verfolgung am Host wird dadurch möglich, solange kein Proxy verwendet wird. </para>
<para>Dies ist ein bekanntes Problem und eine Lösung wurde dafür definiert: Datenschutz-Erweiterung, definiert in <ulink url="http://www.faqs.org/rfcs/rfc3041.html">RFC 3041 / Privacy Extensions for Stateless Address Autoconfiguration in IPv6</ulink> (es gibt bereits ein neueres Draft: <ulink url="http://www.ietf.org/ids.by.wg/ipv6.html">draft-ietf-ipv6-privacy-addrs-v2-*</ulink>). Es wird von Zeit zu Zeit mittels eines statischen und eines Zufallswertes ein neues Suffix erstellt. Hinweis: Dies ist nur für ausgehende Client-Verbindungen sinnvoll und bei bekannten Servern nicht wirklich sinnvoll.</para></sect3></sect2><sect2>
<title>Manuell festgelegte Adressen</title>
<para>Bei Servern ist es wahrscheinlich leichter, sich einfachere Adressen zu merken. Dies kann z.B. mit der Zuweisung einer zusätzlichen IPv6 Adresse an ein Interface geschehen.</para><screen>
<![CDATA[2001:0db8:100:f101::1
]]></screen><para>Für das manuelle Suffix, wie ”::1” im obigen Beispiel, muss das siebte höchstwertige Bit auf 0 gesetzt sein (das universale/local Bit des automatisch generierten Identifiers). Es sind auch noch andere (ansonsten nichtausgewählte) Bit-Kombinationen für Anycast-Adressen reserviert.</para></sect2></sect1><sect1>
<title>Präfixlängen für das Routing</title>
<para>Um eine maximale Reduktion an Routing-Tabellen zu erzielen, war in der frühen Design-Phase noch ein vollkommen hierarchischer Routing-Ansatz vorgesehen. Die Überlegungen hinter diesem Ansatz waren die gegenwärtigen IPv4 Routing-Einträge in den Haupt-Routern (mit über 400.000 Einträgen im Jahr 2013) sowie die Reduktion des Speicherbedarfs für die Routing-Tabellen bei Hardware-Routern (ASIC ”Application Specified Integrated Circuit”, speziell konstuierter Chip) sowie ein daraus resultierender Geschwindigkeitszuwachs (weniger Einträge ergeben hoffentlich schnellere Abfragen).</para>
<para>Heutiger Standpunkt ist, dass das Routing für Netzwerke mit nur einem Service Provider hauptsächlich mit einem hierarchischen Design realisiert wird. Eine solche Vorgehensweise ist nicht möglich, wenn mehr als eine ISP-Verbindung besteht. Diese Problematik wird unter dem Thema multi-homing diskutiert (Infos zu multi-homing: <ulink url="http://www.ietf.org/ids.by.wg/multi6.html">drafts-ietf-multi6-*</ulink>,<ulink url="http://arneill-py.sacramento.ca.us/ipv6mh/">IPv6 Multihoming Solutions</ulink>).</para><sect2>
<title>Präfixlängen ("netmasks" genannt)</title>
<para>Vergleichbar zu IPv4, handelt es sich hierbei um den routbaren Netzwerkpfad für das stattfindende Routing. Da die Standard-Notierung der Netzmaske von 128 bit nicht sehr fein aussieht, verwenden die Designer das aus IPv4 bekannte Classless Inter Domain Routing Schema (CIDR, <ulink url="http://www.faqs.org/rfcs/rfc1519.html">RFC 1519 / Classless Inter-Domain Routing</ulink>). Mit Hilfe des CIDR wird die Bitanzahl der IP Adresse festgelegt, welche für das Routing verwendet werden. Diese Methode wird auch als "Slash"-Notation genannt.</para>
<para>Ein Beispiel:</para><screen>
<![CDATA[2001:0db8:100:1:2:3:4:5/48
]]></screen><para>Diese Notation wird erweitert zu:</para><itemizedlist>
<listitem><para>Netzwerk: </para></listitem></itemizedlist><screen>
<![CDATA[2001:0db8:0100:0000:0000:0000:0000:0000
]]></screen><itemizedlist>
<listitem><para>Netzmaske: </para></listitem></itemizedlist><screen>
<![CDATA[ffff:ffff:ffff:0000:0000:0000:0000:0000
]]></screen></sect2><sect2>
<title>Zutreffende Routen</title>
<para>Im Normalfall (ohne QoS) ergibt eine Suche in der Routing-Tabelle eine Route mit der signifikantesten Adress-Bit-Anzahl, d.h. jene Route mit der größten Präfix-Länge wird zuerst herangezogen.</para>
<para>Wenn z.B. eine Routing-Tabelle folgende Einträge zeigt (Liste ist nicht komplett):</para><screen>
<![CDATA[2001:0db8:100::/48 :: U 1 0 0 sit1
2000::/3 ::192.88.99.1 UG 1 0 0 tun6to4
]]></screen><para>Die gezeigten Zieladressen der IPv6 Pakete werden über die entsprechenden Geräte geroutet</para><screen>
<![CDATA[2001:0db8:100:1:2:3:4:5/48 -> routed through device sit1
2001:0db8:200:1:2:3:4:5/48 -> routed through device tun6to4
]]></screen></sect2></sect1></chapter><chapter id='chapter-systemcheck' >
<title><!-- anchor id="chapter-systemcheck" -->IPv6 System-Check</title>
<para>Bevor Sie IPv6 auf einem Linux Host einsetzen können, müssen sie überprüfen, ob das System IPv6 fähig ist. Eventuell haben Sie Änderungen vorzunehmen, um IPv6 zu ermöglichen.</para><sect1 id='systemcheck-kernel' >
<title><!-- anchor id="systemcheck-kernel" -->IPv6 kompatibler Kernel</title>
<para>Neuere Linux Distributionen beinhalten bereits einen IPv6-fähigen Kernel. Die IPv6-Funktionalität wird im Allgemeinen als Modul kompiliert. Es ist aber durchaus möglich, dass das Modul nicht automatisch beim Start des Betriebssystems geladen wird.</para>
<para>Hinweis: Sie sollten die Kernel Serie 2.2.x nicht mehr verwenden, da die IPv6-Implementierung nicht mehr aktuell ist. Auch die in der Serie 2.4.x wird nicht mehr weiterentwickelt bzgl. der Definitionen in den neueren RFCs. Es wird empfohlen, einen aus der Serie 2.6.x zu verwenden.</para><sect2>
<title>Überprüfung der IPv6 Unterstützung im aktuellen Kernel</title>
<para>Um zu überprüfen, ob ihr aktueller Kernel IPv6 unterstützt, sollten sie einen Blick in ihr /proc-Dateisystem werfen. Folgende Einträge müssen existieren:</para><screen>
<![CDATA[/proc/net/if_inet6
]]></screen><para>Einen kleinen automatischen Test können Sie wie folgt durchführen:</para><screen>
<![CDATA[# test -f /proc/net/if_inet6 && echo "Running kernel is IPv6 ready"
]]></screen><para>Wenn dieser Test negativ verläuft, ist das IPv6 Modul aller Wahrscheinlichkeit noch nicht geladen.</para></sect2><sect2>
<title>IPv6 Module laden</title>
<para>Mit folgenden Befehl können Sie versuchen, das Modul zu laden:</para><screen>
<![CDATA[# modprobe ipv6
]]></screen><para>Wenn dieser Befehl positiv verläuft, dann sollten Sie das Modul mit folgendem Befehl auflisten können:</para><screen>
<![CDATA[# lsmod |grep -w 'ipv6' && echo "IPv6 module successfully loaded"
]]></screen><para>Der obige Test sollte nun erfolgreich verlaufen.</para>
<para>Hinweis: Ein Entfernen des Moduls im laufenden System wird derzeit nicht unterstützt und kann unter gewissen Bedingungen zu einem Absturz des Kernels führen.</para><sect3>
<title>Automatisches Laden des Moduls</title>
<para>Es ist möglich das IPv6 Modul bei Bedarf automatisch zu laden. Sie müssen nur folgende Zeile in die Konfigurationsdatei des kernel modul loaders eintragen (normalerweise: /etc/modules.conf oder /etc/conf.modules):</para><screen>
<![CDATA[alias net-pf-10 ipv6 # automatically load IPv6 module on demand
]]></screen><para>Mit der folgenden Zeile ist es auch möglich, das automatische Laden des IPv6 Moduls auszuschalten.</para><screen>
<![CDATA[alias net-pf-10 off # disable automatically load of IPv6 module on demand
]]></screen><para>Anmerkung: In Kernel Series 2.6.x wurde der Modul-Lade-Mechanismus geändert. Die neue Konfigurationsdatei wird anstelle /etc/modules.conf nun /etc/modprobe.conf genannt.</para></sect3></sect2><sect2>
<title>Kernel-Kompilierung mit IPv6 Funktionalität</title>
<para>Wenn beide oben gezeigten Methoden ohne Erfolg blieben und ihr Kernel somit keine IPv6 Unterstützung bietet, dann haben Sie folgende Optionen:</para><itemizedlist>
<listitem><para>Aktualisieren Sie Ihre Distribution mit einer Version, die von Haus aus IPv6 unterstützt (empfohlen für Anfänger),</para></listitem><listitem><para>Sie können einen Standard-Kernel kompilieren (einfach, wenn Sie die benötigten Optionen kennen)</para></listitem><listitem><para>Kompilieren Sie die Kernel-Quellen ihrer Distribution (manchmal nicht ganz so einfach)</para></listitem><listitem><para>Kompilieren Sie einen Kernel mit den USAGI-Erweiterungen</para></listitem></itemizedlist><para>Falls Sie sich dazu entscheiden, einen neuen IPv6 kompatiblen Kernel zu kompilieren, sollten Sie auf jeden Fall bereits Erfahrung mit der Kernel-Kompilierung haben sowie das <ulink url="http://www.tldp.org/HOWTO/Kernel-HOWTO.html">Linux Kernel HOWTO</ulink> lesen.</para>
<para>Ein Vergleich zwischen dem Standard-Kernel und dem Kernel mit USAGI-Erweiterungen ist verfügbar unter <ulink url="http://www.bieringer.de/linux/IPv6/status/IPv6+Linux-status-kernel.html">IPv6+Linux-Status-Kernel</ulink>.</para><sect3>
<title>Kompilieren eines Standard-Kernels</title>
<para>Detailliertere Ausführungen zur Kompilierung eines IPv6 fähigen Kernels finden Sie unter <ulink url="http://www.bieringer.de/linux/IPv6/IPv6-HOWTO/IPv6-HOWTO-2.html#kernel">IPv6-HOWTO-2#kernel</ulink>.</para>
<para>Hinweis: Sie sollten wann immer möglich die Kernel Serie 2.6.x oder höher einsetzen, da die IPv6 Unterstützung der Serie 2.4.x nur einige Backports erhält und die IPv6-Unterstützung von Serie 2.2.x hoffnungslos veraltet ist und nicht mehr weiterentwickelt wird.</para></sect3><sect3>
<title>Kompilieren eines Kernels mit USAGI-Erweiterungen</title>
<para>Wie für den Standard-Kernel gilt auch hier, dass das Kompilieren des Kernels nur fortgeschrittenen Benutzern empfohlen wird, die mit IPv6 und dem Kompilieren des Kernels bereits vertraut sind.</para>
<para>Siehe auch <ulink url="http://www.linux-ipv6.org/faq.html">USAGI project / FAQ</ulink> und <ulink url="http://www.deepspace6.net/docs/best_ipv6_support.html">Obtaining the best IPv6 support with Linux (Article)</ulink> (<ulink url="http://mirrors.bieringer.de/www.deepspace6.net/docs/best_ipv6_support.html">Spiegel</ulink>).</para></sect3></sect2><sect2>
<title>IPv6 kompatible Netzwerkgeräte</title>
<para>Nicht alle Netzwerkgeräte sind bereits (bzw. überhaupt) dazu in der Lage, IPv6 Pakete übertragen zu können. Den aktuellen Status können Sie unter <ulink url="http://www.bieringer.de/linux/IPv6/status/IPv6+Linux-status-kernel.html#transport">IPv6+Linux-status-kernel.html#transport</ulink>.</para>
<para>Ein entscheidender Punkt ist die Tatsache, dass ein IPv6 Paket wegen der Struktur der Netzwerkschicht in der Kernel-Implementierung nicht wirklich aufgrund der IP-Header-Nummer (6 anstelle 4) wiedererkannt wird. Es wird aufgrund der Protokollnummer der Schicht 2 Transport-Protokolls wiedererkannt. Folglich können IPv6 Pakete von keinem Transport-Protokoll verwendet werden, welche diese Protokoll-Nummer nicht nutzen. Hinweis: Das Paket wird nach wie vor über den Link transportiert, aber auf der Empfänger-Seite kann das Paket nicht verarbeitet werden (Sie können dies z.B. mit tcpdump sehen).</para><sect3>
<title>Gegenwärtig bekannte Verbindungsarten, die niemals IPv6 fähig sein werden</title>
<itemizedlist>
<listitem><para>Serial Line IP (<ulink url="http://www.faqs.org/rfcs/rfc1055.html">RFC 1055 / SLIP</ulink>), auch SLIPv4 genannt; das Gerät heißt: s1X </para></listitem><listitem><para>Parallel Line IP (PLIP), gleich dem SLIP, Gerätename: plipX</para></listitem><listitem><para>ISDN mit <emphasis>rawip</emphasis> Encapsulation; Gerätename: isdnX</para></listitem></itemizedlist></sect3><sect3>
<title>Bekannte Verbindungsarten, die gegenwärtig IPv6 nicht unterstützen</title>
<itemizedlist>
<listitem><para>ISDN mit <emphasis>syncppp</emphasis> Encapsulation; Gerätename: ipppX (Designfrage des ipppd; in der Kernel Serie 2.5.x wird ipppX in einer allgemeinen PPP Schicht inkludiert)</para></listitem></itemizedlist></sect3></sect2></sect1><sect1>
<title>IPv6 kompatible Tools zur Netzwerkkonfiguration</title>
<para>Ohne entsprechende Tools zur Konfiguration von IPv6 würden Sie mit einem IPv6 fähigen Kernel nicht weit kommen. Es gibt verschiedene Pakete womit IPv6 konfiguriert werden kann.</para><sect2>
<title>net-tools Paket</title>
<para>Das Paket net-tool beinhaltet einige Tools wie ifconfig und route. Mit den Tools kann IPv6 auf einem Interface konfiguriert werden. Sehen Sie sich die Ausgabe des Befehls <emphasis>ifconfig -?</emphasis> Bzw. <emphasis>route -?</emphasis> an. Finden Sie in der Ausgabe die Worte IPv6, inet6 oder Ähnliches, dann ist das Tool IPv6-kompatibel.</para>
<para>Automatische Überprüfung:</para><screen>
<![CDATA[# /sbin/ifconfig -? 2>& 1|grep -qw 'inet6' && echo "utility 'ifconfig' is
¬ IPv6-ready"
]]></screen><para>Folgenden Check gibt es für route:</para><screen>
<![CDATA[# /sbin/route -? 2>& 1|grep -qw 'inet6' && echo "utility 'route' is IPv6-ready"
]]></screen></sect2><sect2>
<title>iproute Paket</title>
<para>Alexey N.Kuznetsov (gegenwärtig ein Betreuer des Linux Network Codes) erstellte eine Tool-Sammlung, womit das Netzwerk mittels dem netlink Device konfiguriert wird. Diese Tool-Sammlung stellt mehr Funktionalität als das net-tools Paket zur Verfügung, ist aber nicht sehr umfangreich dokumentiert und nichts für schwache Nerven.</para><screen>
<![CDATA[# /sbin/ip 2>&1 |grep -qw 'inet6' && echo "utility 'ip' is IPv6-ready"
]]></screen><para>Wird das Programm /sbin/ip nicht gefunden, dann wird die Installation des iproute Paketes empfohlen.</para><itemizedlist>
<listitem><para>Sie können dies (falls beinhaltet) von der benutzten Linux-Distribution installieren</para></listitem><listitem><para>Sie können nach einem passenden RPM Paket unter <ulink url="http://rpmfind.net/linux/rpm2html/search.php?query=iproute">RPMfind/iproute</ulink> suchen (manchmal ist auch das kompilieren eines SRPMS Paketes zu empfohlen)</para></listitem></itemizedlist></sect2></sect1><sect1>
<title>IPv6 Test/Debug-Programme</title>
<para>Nachdem Sie ihr System auf IPv6 vorbereitet haben, wollen Sie nun IPv6 für die Netzwerkkommunikation einsetzen. Zuerst sollten Sie lernen, IPv6 Pakete mit einem Sniffer Programm zu untersuchen. Dies ist zu empfehlen, denn in Hinblick auf Fehlersuche und Troubleshooting kann das Durchführen einer schnellen Diagnose von Nutzen sein. </para><sect2 id='program-ping6.' >
<title><!-- anchor id="program-ping6." -->IPv6 ping</title>
<para>Das Programm ist normalerweise im Paket <emphasis>iputils</emphasis> beinhaltet. Durch senden von ICMPv6 echo-request Paketen und warten auf ICMPv6 echo-reply Paketen können einfache Transport-Tests durchgeführt werden.</para>
<para>Anwendung</para><screen>
<![CDATA[# ping6 <hostwithipv6address>
# ping6 <ipv6address>
# ping6 [-I <device>] <link-local-ipv6address>
]]></screen><para>Einige Implementierungen unterstützen auch %<device> Definition zusätzlich zu -I <device>, z.B.</para><screen>
<![CDATA[# ping6 <link-local-ipv6address>%<device>
]]></screen><para>Beispiel</para><screen>
<![CDATA[# ping6 -c 1 ::1
PING ::1(::1) from ::1 : 56 data bytes
64 bytes from ::1: icmp_seq=0 hops=64 time=292 usec
--- ::1 ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max/mdev = 0.292/0.292/0.292/0.000 ms
]]></screen><para>Hinweis: ping6 benötigt direkten Zugriff auf den Socket und hierfür Root-Rechte. Wenn Nicht-Root-Benutzer ping6 nicht benutzen können, kann dies zwei Ursachen haben:</para><orderedlist>
<listitem><para>ping6 ist nicht im Pfad des Benutzers eingetragen; ping6 ist allgemein in /usr/sbin zu finden -> Lösung: Den Pfad ergänzen (nicht empfohlen)</para></listitem><listitem><para>ping6 lässt sich im Allgemeines wegen fehlender Root-Rechte nicht korrekt ausführen -> Lösung: chmod u+s /usr/sbin/ping6</para></listitem></orderedlist><sect3>
<title>Das Interface für einen IPv6 ping bestimmen</title>
<para>Wenn link-lokale Adressen für ein IPv6 ping verwendet werden, dann hat der Kernel keine Kenntnis darüber, durch welches (physikalische oder virtuelle) Gerät das Paket gesendet werden muss - jedes Gerät hat eine link-lokale Adresse. Ein Versuch resultiert in folgender Fehlermeldung:</para><screen>
<![CDATA[# ping6 fe80::212:34ff:fe12:3456
connect: Invalid argument
]]></screen><para>In diesem Fall müssen Sie das Interface zusätzlich spezifizieren:</para><screen>
<![CDATA[# ping6 -I eth0 -c 1 fe80::2e0:18ff:fe90:9205
PING fe80::212:23ff:fe12:3456(fe80::212:23ff:fe12:3456) from
¬ fe80::212:34ff:fe12:3478 eth0: 56 data bytes
64 bytes from fe80::212:23ff:fe12:3456: icmp_seq=0 hops=64 time=445 usec
--- fe80::2e0:18ff:fe90:9205 ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss round-trip
¬ min/avg/max/mdev = 0.445/0.445/0.445/0.000 ms
]]></screen><para>Beispiel für %<device> Notation:</para><screen>
<![CDATA[# ping6 -c 1 fe80::2e0:18ff:fe90:9205%eth0
]]></screen></sect3><sect3>
<title>Ping6 zu Multicast-Adressen</title>
<para>Ein interessanter Mechanismus zum Aufspüren eines IPv6 aktiven Hosts am Link ist mit ping6 an eine link-lokale all-node Multicast Adresse zu pingen.</para><screen>
<![CDATA[# ping6 -I eth0 ff02::1
PING ff02::1(ff02::1) from fe80:::2ab:cdff:feef:0123 eth0: 56 data bytes
64 bytes from ::1: icmp_seq=1 ttl=64 time=0.104 ms
64 bytes from fe80::212:34ff:fe12:3450: icmp_seq=1 ttl=64 time=0.549 ms (DUP!)
]]></screen><para>Beispiel für %<device> Notation:</para><screen>
<![CDATA[# ping6 ff02::1%eth0
]]></screen><para>Bei IPv6 kann dieses Verhalten zurzeit, im Gegensatz zu IPv4, wo Antworten auf ein Ping auf die Broadcast Adresse unterdrückt werden können, nicht unterbunden werden. Ausnahme hierbei ist der Einsatz der lokalen IPv6 Firewall-Funktionalität.</para></sect3></sect2><sect2 id='program-traceroute6.' >
<title><!-- anchor id="program-traceroute6." -->IPv6 traceroute6</title>
<sect3>
<title>IPv6 traceroute6 (alt)</title>
<para>Dieses Programm ist normal im Paket iputils enthalten. Es ist ein Programm vergleichbar dem IPv4 traceroute. Unten sehen Sie ein Beispiel:</para><screen>
<![CDATA[# traceroute6 www.6bone.net
traceroute to 6bone.net (3ffe:b00:c18:1::10) from 2001:0db8:0000:f101::2, 30
¬ hops max, 16 byte packets
1 localipv6gateway (2001:0db8:0000:f101::1) 1.354 ms 1.566 ms 0.407 ms
2 swi6T1-T0.ipv6.switch.ch (3ffe:2000:0:400::1) 90.431 ms 91.956 ms 92.377 ms
3 3ffe:2000:0:1::132 (3ffe:2000:0:1::132) 118.945 ms 107.982 ms 114.557 ms
4 3ffe:c00:8023:2b::2 (3ffe:c00:8023:2b::2) 968.468 ms 993.392 ms 973.441 ms
5 3ffe:2e00:e:c::3 (3ffe:2e00:e:c::3) 507.784 ms 505.549 ms 508.928 ms
6 www.6bone.net (3ffe:b00:c18:1::10) 1265.85 ms * 1304.74 ms
]]></screen><para>Anmerkung: Im Unterschied zu modernen IPv4 traceroute Versionen, welche den Einsatz von ICMPv4-echo-request Paketen wie auch UDP Paketen (default) ermöglichen, können mit IPv6-traceroute nur UDP Pakete versendet werden. Wie Sie vielleicht bereits wissen, werden von Firewalls bzw. von ACLs auf Routern ICMP echo-request Pakete mehr akzeptiert als UDP Pakete. </para>
<para>Falls ein Interface spezifiziert werden muß, kann dies durch -i <device> oder in der Form <address>%<device> erfolgen.</para></sect3><sect3>
<title>traceroute ab Version 2)</title>
<para>traceroute bekam IPv6-Unterstützung ab Version 2 mit den gleichen Möglichkeiten wie für IPv4. Hier ein Beispiel für einen ICMP (ping) traceroute (benötigt root-Rechte) </para><screen>
<![CDATA[# traceroute -I -n ipv6.google.com
traceroute to ipv6.google.com (2a00:1450:4016:804::200e), 30 hops max, 80 byte packets
1 2001:a61:*** 0.410 ms 0.510 ms 0.655 ms
2 2001:a60::89:705:1 26.428 ms 34.361 ms 41.777 ms
3 2001:a60::89:0:1:2 19.131 ms 19.163 ms 19.248 ms
4 2001:a60:0:106::2 20.464 ms 20.467 ms 20.457 ms
5 2001:4860::9:4000:cf86 21.836 ms * 21.852 ms
6 2001:4860:0:1::19 21.690 ms 21.585 ms 22.919 ms
7 2a00:1450:4016:804::200e 23.176 ms 19.310 ms 20.065 ms
]]></screen><para>Falls ein Interface spezifiziert werden muß, kann dies durch -i <device> erfolgen.</para></sect3></sect2><sect2 id='program-tracepath6.' >
<title><!-- anchor id="program-tracepath6." -->IPv6 tracepath6</title>
<para>Dieses Programm ist normalerweise im Paket <emphasis>iputils</emphasis> enthalten. Das Programm ist dem traceroute6 ähnlich, es gibt den Weg zu einem angegebenen Ziel wieder und misst hierbei den MTU-Wert. Unten sehen Sie ein Beispiel:</para><screen>
<![CDATA[# tracepath6 www.6bone.net
1?: [LOCALHOST] pmtu 1480
1: 3ffe:401::2c0:33ff:fe02:14 150.705ms
2: 3ffe:b00:c18::5 267.864ms
3: 3ffe:b00:c18::5 asymm 2 266.145ms pmtu 1280
3: 3ffe:3900:5::2 asymm 4 346.632ms
4: 3ffe:28ff:ffff:4::3 asymm 5 365.965ms
5: 3ffe:1cff:0:ee::2 asymm 4 534.704ms
6: 3ffe:3800::1:1 asymm 4 578.126ms !N
Resume: pmtu 1280
]]></screen></sect2><sect2 id='program-tcpdump' >
<title><!-- anchor id="program-tcpdump" -->IPv6 tcpdump</title>
<para>In Linux ist tcpdump ein Haupttool zum aufzeichnen von Paketen. Weiter unten sehen Sie einige Beispiele. Normalerweise ist die Ipv6-Unterstützung in der aktuellen Version 3.6 gegeben.</para>
<para>Bei tcpdump werden zur Geräuschminimierung bei der Paket-Filterung Ausdrücke eingesetzt:</para><itemizedlist>
<listitem><para>icmp6: ICMPv6 Datenverkehr wird gefiltert</para></listitem><listitem><para>ip6: IPv6 Datenverkehr (inkl.ICMPv6) wird gefiltert</para></listitem><listitem><para>proto ipv6: getunnelter IPv6-in-IPv4 Datenverkehr wird gefiltert</para></listitem><listitem><para>not port ssh: zum unterdrücken der Anzeige von SSH Paketen während der Ausführung von tcpdump bei einer remote SSH-Sitzung</para></listitem></itemizedlist><para>Ebenfalls sind einige Kommandozeilen-Optionen sehr hilfreich, um detailliertere Informationen über die Pakete erlangen und protokollieren zu können. Für ICMPv6 Pakete sind hauptsächlich interessant:</para><itemizedlist>
<listitem><para>“-s 512”: Bei der Aufzeichnung der Pakete wird die zu Aufzeichnungslänge auf 512 bytes vergrößert</para></listitem><listitem><para>“-vv”: wirklich sehr ausführliche Ausgabe</para></listitem><listitem><para>“-n”: Adressen werden nicht in Namen aufgelöst. Dies ist hilfreich, wenn die Reverse-DNS-Auflösung nicht sauber arbeiten sollte</para></listitem></itemizedlist><sect3>
<title>IPv6 ping zur Adresse 2001:0db8:100:f101::1 über einen lokalen Link</title>
<screen>
<![CDATA[# tcpdump -t -n -i eth0 -s 512 -vv ip6 or proto ipv6
tcpdump: listening on eth0
2001:0db8:100:f101:2e0:18ff:fe90:9205 > 2001:0db8:100:f101::1: icmp6: echo
¬ request (len 64, hlim 64)
2001:0db8:100:f101::1 > 2001:0db8:100:f101:2e0:18ff:fe90:9205: icmp6: echo
¬ reply (len 64, hlim 64)
]]></screen></sect3><sect3>
<title>IPv6 ping zur Adresse 2001:0db8:100::1 über einen IPv6-in-IPv4 Tunnel geroutet</title>
<para>1.2.3.4. und 5.6.7.8. sind Tunnel-Endpunkte (alle Adressen sind Beispiele)</para><screen>
<![CDATA[# tcpdump -t -n -i ppp0 -s 512 -vv ip6 or proto ipv6
tcpdump: listening on ppp0
1.2.3.4 > 5.6.7.8: 2002:ffff:f5f8::1 > 2001:0db8:100::1: icmp6: echo request
¬ (len 64, hlim 64) (DF) (ttl 64, id 0, len 124)
5.6.7.8 > 1.2.3.4: 2001:0db8:100::1 > 2002:ffff:f5f8::1: icmp6: echo reply (len
¬ 64, hlim 61) (ttl 23, id 29887, len 124)
1.2.3.4 > 5.6.7.8: 2002:ffff:f5f8::1 > 2001:0db8:100::1: icmp6: echo request
¬ (len 64, hlim 64) (DF) (ttl 64, id 0, len 124)
5.6.7.8 > 1.2.3.4: 2001:0db8:100::1 > 2002:ffff:f5f8::1: icmp6: echo reply (len
¬ 64, hlim 61) (ttl 23, id 29919, len 124)
]]></screen></sect3></sect2></sect1><sect1>
<title>IPv6 kompatible Programme</title>
<para>Aktuelle Distributionen beinhalten bereits die gängigsten IPv6 kompatiblen Client- und Server-Programme. Weitere Infos gibt es unter <ulink url="http://www.bieringer.de/linux/IPv6/status/IPv6+Linux-status-distributions.html">IPv6+Linux-Status-Distribution</ulink>. Falls ein Programm hier noch nicht gelistet sein sollte, können Sie unter <ulink url="http://www.deepspace6.net/docs/ipv6_status_page_apps.html">Current Status of IPv6 Support for Networking Applications</ulink> nachlesen, ob das Programm bereits auf IPv6 portiert wurde und unter Linux bereits läuft. Für verbreitete Programme gibt es einige Hinweise hier weiter unten.</para></sect1><sect1>
<title>IPv6 kompatible Client-Programme (Auswahl)</title>
<para>Um die folgend abgebildeten Tests durchzuführen, benötigen Sie ein funktionierendes IPv6 System. Bei einigen Beispielen werden Adressen angezeigt, die nur bei einer verfügbaren 6bone Verbindung erreichbar sind.</para>
<para>Note: wenn Namen anstatt dedizierter IPv4/IPv6 Adressen benutzt werden, dann kann dieser zu einer Liste von IPv4 und IPv6 Adressen aufgelöst werden. Einige Kommandozeilenwerkzeuge unterstützen explizite Benutzung des gewünschten Protokolls. Üblicherweis haben solche Werkzeuge Optionen wie ”-4” für IPv4 und ”-6” für IPv6.</para><sect2>
<title>DNS-Überprüfung der IPv6 Adress-Auflösung</title>
<para>Jeder DNS-Server (Domain Name System) sollte aufgrund der Sicherheitsupdates der letzten Jahre bereits mit neuerer Software bestückt sein, die den Übergangs-IPv6-Adress-Standardtyp AAAA unterstützt (der neueste Standardtyp - A6 genannt - wird nur von BIND9 und höheren Versionen unterstützt und ist daher noch nicht allzu verbreitet. Ebenfalls nicht unterstützt wird die root Domain IP6.ARPA). Ein einfacher Test zum überprüfen der IPv6 Adress-Auflösung ist:</para><screen>
<![CDATA[# host -t AAAA www.join.uni-muenster.de
]]></screen><para>Die Ausgabe des Tests sollte etwa wie folgt sein: </para><screen>
<![CDATA[www.join.uni-muenster.de. is an alias for tolot.join.uni-muenster.de.
tolot.join.uni-muenster.de. has AAAA address
¬ 2001:638:500:101:2e0:81ff:fe24:37c6
]]></screen></sect2><sect2>
<title>IPv6 kompatible Telnet Client-Programme</title>
<para>IPv6 kompatible Clients sind verfügbar. Ein einfacher Test sieht wie folgt aus:</para><screen>
<![CDATA[$ telnet 3ffe:400:100::1 80
Trying 3ffe:400:100::1...
Connected to 3ffe:400:100::1.
Escape character is '^]'.
HEAD / HTTP/1.0
HTTP/1.1 200 OK
Date: Sun, 16 Dec 2001 16:07:21
GMT Server: Apache/2.0.28 (Unix)
Last-Modified: Wed, 01 Aug 2001 21:34:42 GMT
ETag: "3f02-a4d-b1b3e080"
Accept-Ranges: bytes
Content-Length: 2637
Connection: close
Content-Type: text/html; charset=ISO-8859-1
Connection closed by foreign host.
]]></screen><para>Wird ein Text wie ”cannot resolve hostname” ausgegeben, dann unterstützt der Telnet Client keine IPv6 Adressen.</para></sect2><sect2>
<title>IPv6 kompatible ssh Client-Programme</title>
<sect3>
<title>openssh</title>
<para>Aktuelle openssh-Versionen sind IPv6 kompatibel. Abhängig von der Konfiguration vor der Kompilierung gibt es zwei unterschiedliche Verhaltensweisen:</para><itemizedlist>
<listitem><para>--without-ipv4-default: Der Client versucht zuerst eine IPv6-Verbindung. Misslingt dies, wird eine IPv4-Verbindung aufgebaut</para></listitem><listitem><para>--with-ipv4-default: standardmäßig wird eine IPv4-Verbindung aufgebaut. Eine IPv6-Verbindung muss, wie unten im Beispiel zu sehen ist, erzwungen werden:</para></listitem></itemizedlist><screen>
<![CDATA[$ ssh -6 ::1
user@::1's password: ******
[user@ipv6host user]$
]]></screen><para>Falls ihr ssh Client-Programm die Option ”-6” nicht kennt, dann ist das Programm nicht IPv6 fähig. Dies ist bei den meisten ssh Paketen der Version 1 der Fall.</para></sect3><sect3>
<title>ssh.com</title>
<para>SSH.com's SSH Client und Server sind ebenfalls IPv6 kompatibel und darüber hinaus handelt es sich um freie Programme für die Linux- und FreeBSD-Plattform, unabhängig davon, ob sie zu kommerziellem oder zu persönlichen Zweck verwendet werden.</para></sect3></sect2><sect2>
<title>IPv6 kompatible Web-Browser</title>
<para>Einen aktuellen Statusüberblick zum Thema IPv6 kompatible Web-Browser ist unter <ulink url="http://www.deepspace6.net/docs/ipv6_status_page_apps.html#http">Current Status of IPv6 Support for Networking Applications - HTTP</ulink> verfügbar.</para>
<para>Die meisten Browser haben zurzeit noch ungelöste Probleme</para><orderedlist>
<listitem><para>Ist ein IPv4 Proxy in den Einstellungen eingetragen, dann werden IPv6 Anfragen zum Proxy gesendet. Der Proxy kann keine IPv6 Anfragen verstehen und somit scheitert die Anfrage. Lösung: Proxy Software aktualisieren (siehe weiter unten).</para></listitem><listitem><para>Automatik-Einstellungen des Proxy (*.pac) können aufgrund ihrer Beschaffenheit nicht derart erweitert werden, dass sie IPv6 Anfragen anders handhaben (z.B. kein Proxy verwenden) können (Sie sind in Javaskript geschrieben und ziemlich hard coded in den Quellen verankert; z.B. Mozilla Quellcode).</para></listitem></orderedlist><para>Ältere Browser-Versionen verstehen ebenfalls keine URL mit IPv6 Adressen wie z.B. <ulink url="http://[2a01:238:4281:8600:812a:5915:8d24:58f3]/">http://[2a01:238:4281:8600:812a:5915:8d24:58f3]/</ulink>, IPv6-Addresse von <ulink url="http://www.ipv6.bieringer.de/">http://www.ipv6.bieringer.de/</ulink> (die angegebene URL funktioniert nur mit einem IPv6 kompatiblen Browser!).</para>
<para>Ein kleiner Test ist diese URL mit einem gegebenen Browser und ohne Proxy zu verwenden.</para><sect3>
<title>URLs zum testen</title>
<para>Ein guter Ausgangspunkt zum Betrachten von Webseiten mit IPv6 ist <ulink url="http://www.kame.net/">http://www.kame.net/</ulink>. Ist die Schildkröte animiert, dann ist Verbindung mittels IPv6 Verbindung zustande gekommen, andererseits bleibt die Schildkröte statisch.</para>
<para>Andere Test-Server sind z.B.</para><itemizedlist>
<listitem><para><ulink url="http://ip.bieringer.de/">ip.bieringer.de</ulink></para></listitem><listitem><para><ulink url="http://ipv6-test.com/">IPv6 Test</ulink></para></listitem><listitem><para><ulink url="http://test-ipv6.com/">test-ipv6.com</ulink></para></listitem></itemizedlist></sect3></sect2></sect1><sect1>
<title>IPv6 kompatible Server</title>
<para>In diesem Teil des HOWTOs wird stärker auf Client-spezifische Belange eingegangen. Folglich sei zu IPv6 kompatiblen Servern wie sshd, httpd, telnetd usw. auf diese Stelle verwiesen: <link linkend="chapter-hints-daemons">Hints for IPv6-enabled daemons</link>.</para></sect1><sect1 id='faq-ipv6-ready-system-check' >
<title><!-- anchor id="faq-ipv6-ready-system-check" -->FAQ (IPv6 Systemcheck)</title>
<sect2>
<title>Anwendung diverser Tools</title>
<sect3>
<title>Q: ping6 zu einer link-lokalen Adresse funktioniert nicht</title>
<para>Fehlermeldung: "<emphasis>connect: Invalid argument</emphasis>"</para>
<para>Der Kernel hat keine Kenntnis darüber, welchen physikalischen oder virtuellen Link Sie zum versenden von ICMPv6 Paketen verwenden möchten. Aus diesem Grund wird die Fehlermeldung ausgegeben.</para>
<para>Lösung: Spezifizieren Sie den Link, z.B.: ”ping6 -I eth0 fe80::2e0:18ff:fe90:9205”. Siehe auch <link linkend="program-ping6.">program ping6 usage</link>.</para></sect3><sect3>
<title>Q: ping6 oder traceroute6 funktioniert nicht als normaler Benutzer</title>
<para>Fehlermeldung: ”<emphasis>icmp socket: Operation not permitted</emphasis>”</para>
<para>Diese Tools erzeugen spezielle ICMPv6 Pakete und versenden diese unter Verwendung von raw sockets im Kernel. Raw sockets können aber nur vom Benutzer ”root” verwendet werden. Normale Benutzer bekommen aus diesem Grund diese Fehlermeldung.
</para>
<para>Lösung: Wenn wirklich alle Benutzer auf diese Tools zugreifen sollen, können Sie dies mit setzen des ”suid” bits mittels ”chmod u+s / path/to/program” erreichen (siehe auch <link linkend="program-ping6.">program ping6 usage</link>). Falls nicht alle Benutzer das Programm benötigen, können Sie die Gruppenzugehörigkeit des Programms ändern, z.B. Gruppe ”wheel”. Fügen Sie alle Benutzer zu dieser Gruppe hinzu und entfernen Sie das execution bit für andere Benutzer mittels ”chmod o-rwx /path/to/program”. Alternativ können Sie auch ”sudo” dazu verwenden, um Ihren Sicherheitsbestimmungen Rechnung zu tragen.</para></sect3></sect2></sect1></chapter><chapter id='chapter-configuration-interface' >
<title><!-- anchor id="chapter-configuration-interface" -->Interface-Konfiguration</title>
<sect1>
<title>Unterschiedliche Netzwerk-Geräte</title>
<para>Ein Knoten besitzt mehrere Netzwerk-Devices, die in Klassen zusammengefasst werden können:</para><itemizedlist>
<listitem><para>Physikalische Devices wie eth0, tr0</para></listitem><listitem><para>Virtuelle Devices wie ppp0, tun0, tap0, sit0, isdn0, ippp0</para></listitem></itemizedlist><sect2>
<title>Physikalische Devices</title>
<para>Physikalische Interfaces wie Ethernet oder Token-Ring bedürfen keiner speziellen Handhabung.</para></sect2><sect2>
<title>Virtuelle Devices</title>
<para>Virtuelle Interfaces hingegen benötigen immer eine spezielle Konfiguration.</para><sect3>
<title>IPv6-in-IPv4 Tunnel Interfaces</title>
<para>Diese Interfaces werden sitx genannt. Der Name sit ist eine Abkürzung für Simple Internet Transition. Das Gerät hat die Fähigkeit IPv6 Pakete in IPv4 Pakete zu verkapseln und diese dann über einen Tunnel zum entfernten Endpunkt zu transportieren.</para>
<para>sit0 hat eine spezielle Bedeutung: dieses Interface kann nicht für fest zugeordnete Tunnel verwendet werden.</para></sect3><sect3>
<title>PPP Interfaces</title>
<para>PPP Interfaces beziehen ihre IPv6 Funktionalität von einem IPv6 kompatiblen PPP Daemon.</para></sect3><sect3>
<title>ISDN HDLC Interfaces</title>
<para>Für HDLC mit IP encapsulation ist die IPv6 Funktionalität bereits im Kernel integriert.</para></sect3><sect3>
<title>ISDN PPP Interfaces </title>
<para>ISDN PPP Interfaces (ippp) werden durch den Kernel nicht mit IPv6 Funktionalität unterstützt. Es gibt auch keine Pläne hierfür, da im Kernel 2.5.+ dieser Interface-Typ durch eine allgemeinere ppp Interface Schicht ersetzt werden soll.</para></sect3><sect3>
<title>SLIP + PLIP</title>
<para>Wie bereits erwähnt, unterstützen diese Interfaces keinen IPv6 Transport (senden ist ok, das abfertigen ankommender Pakete funktioniert jedoch nicht).</para></sect3><sect3>
<title>Ether-tap Device</title>
<para>Ether-tap Devices sind IPv6 kompatibel und als stateless konfiguriert. Für den Gebrauch muss das Modul ”ethertap” geladen werden.</para></sect3><sect3>
<title>tun Device</title>
<para>Nicht von mir getestet...</para></sect3><sect3>
<title>ATM</title>
<para>01/2002: ATM wird vom Standard-Kernel nicht, jedoch aber durch die USAGI-Erweiterungen unterstützt.</para></sect3><sect3>
<title>Sonstige</title>
<para>Wurde ein Interface vergessen...?</para></sect3></sect2></sect1><sect1>
<title>Interfaces ein/aus-schalten</title>
<para>Es gibt zwei Methoden, ein Interface ein- oder auszuschalten.</para><sect2>
<title>Verwendung von "ip"</title>
<para>Gebrauch: </para><screen>
<![CDATA[# ip link set dev <interface> up
# ip link set dev <interface> down
]]></screen><para>Beispiel:</para><screen>
<![CDATA[
# ip link set dev eth0 up
# ip link set dev eth0 down
]]></screen></sect2><sect2>
<title>Verwendung von "ifconfig"</title>
<para>Gebrauch: </para><screen>
<![CDATA[# /sbin/ifconfig <interface> up
# /sbin/ifconfig <interface> down
]]></screen><para>Beispiel:</para><screen>
<![CDATA[# /sbin/ifconfig eth0 up
# /sbin/ifconfig eth0 down
]]></screen></sect2></sect1></chapter><chapter id='chapter-configuration-address' >
<title><!-- anchor id="chapter-configuration-address" -->IPv6 Adressen konfigurieren</title>
<para>Es gibt verschiedene Methoden zum konfigurieren einer IPv6 Adresse eines Interfaces. Sie können "ifconfig" oder "ip" dazu einsetzen.</para><sect1>
<title>Bestehende IPv6 Adressen anzeigen</title>
<para>Zuerst sollten sie überprüfen, ob und welche IPv6 Adressen bereits konfiguriert sind (etwa durch automatischer stateless Konfiguration). </para>
<para>Achtung: Adressen beginnend mit ”fec0” sind obsolet, hier aber noch der Vollständigheit wegen gezeigt!</para><sect2>
<title>Verwendung von "ip"</title>
<para>Anwendung:</para><screen>
<![CDATA[# /sbin/ip -6 addr show dev <interface>
]]></screen><para>Beispiel für einen statisch konfigurierten Host:</para><screen>
<![CDATA[# /sbin/ip -6 addr show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_ fast qlen 100
inet6 fe80::210:a4ff:fee3:9566/10 scope link
inet6 2001:0db8:0:f101::1/64 scope global
inet6 fec0:0:0:f101::1/64 scope site
]]></screen><para>Just note that addresses beginning with ”fec0” are deprecated!</para>
<para>Beispiel für einen automatisch konfigurierten Host.</para>
<para>Hier sehen Sie einige automatisch konfigurierte IP Adressen und deren Lebensdauer.</para><screen>
<![CDATA[# /sbin/ip -6 addr show dev eth0
3: eth0: <BROADCAST,MULTICAST,PROMISC,UP> mtu 1500 qdisc pfifo_fast qlen
¬ 100
inet6 2002:d950:f5f8:f101:2e0:18ff:fe90:9205/64 scope global dynamic
valid_lft 16sec preferred_lft 6sec
inet6 3ffe:400:100:f101:2e0:18ff:fe90:9205/64 scope global dynamic
valid_lft 2591997sec preferred_lft 604797sec inet6 fe80::2e0:18ff:fe90:9205/10
¬ scope link
]]></screen></sect2><sect2>
<title>Verwendung von "ifconfig"</title>
<para>Anwendung:</para><screen>
<![CDATA[# /sbin/ifconfig <interface>
]]></screen><para>Hier sehen Sie verschiedene IP Adressen mit unterschiedlichen Gültigkeitsbereichen (die Ausgabe wurde mit grep gefiltert)</para><screen>
<![CDATA[# /sbin/ifconfig eth0 |grep "inet6 addr:"
inet6 addr: fe80::210:a4ff:fee3:9566/10 Scope:Link
inet6 addr: 2001:0db8:0:f101::1/64 Scope:Global
inet6 addr: fec0:0:0:f101::1/64 Scope:Site
]]></screen></sect2></sect1><sect1>
<title>Hinzufügen einer IPv6 Adresse</title>
<para>Die Vorgehensweise beim hinzufügen einer IPv6 Adresse ist vergleichbar mit dem "IP ALIAS"-Mechanismus bei IPv4 adressierten Interfaces. </para><sect2>
<title>Verwendung von "ip"</title>
<para>Anwendung: </para><screen>
<![CDATA[# /sbin/ip -6 addr add <ipv6address>/<prefixlength> dev <interface>
]]></screen><para>Beispiel:</para><screen>
<![CDATA[# /sbin/ip -6 addr add 2001:0db8:0:f101::1/64 dev eth0
]]></screen></sect2><sect2>
<title>Verwendung von "ifconfig"</title>
<para>Anwendung: </para><screen>
<![CDATA[# /sbin/ifconfig <interface> inet6 add <ipv6address>/<prefixlength>
]]></screen><para>Beispiel:</para><screen>
<![CDATA[# /sbin/ifconfig eth0 inet6 add 2001:0db8:0:f101::1/64
]]></screen></sect2></sect1><sect1>
<title>IPv6 Adressen entfernen</title>
<para>Diese Funktion wird selten benötigt. Vorsicht ist beim entfernen nicht existenter IPv6 Adressen geboten, da ältere Kernel dieses Fehlverhalten manchmal mit einem Crash quittieren.</para><sect2>
<title>Verwendung von "ip"</title>
<para>Anwendung: </para><screen>
<![CDATA[# /sbin/ip -6 addr del <ipv6address>/<prefixlength> dev <interface>
]]></screen><para>Beispiel:</para><screen>
<![CDATA[# /sbin/ip -6 addr del 2001:0db8:0:f101::1/64 dev eth0
]]></screen></sect2><sect2>
<title>Verwendung von "ifconfig"</title>
<para>Anwendung:</para><screen>
<![CDATA[# /sbin/ifconfig <interface> inet6 del <ipv6address>/<prefixlength>
]]></screen><para>Beispiel:</para><screen>
<![CDATA[# /sbin/ifconfig eth0 inet6 del 2001:0db8:0:f101::1/64
]]></screen></sect2></sect1><sect1>
<title>Automatische IPv6-Adress-Konfiguration</title>
<para>Im Fall, dass ein Endgerät ein Router Advertisement empfängt und der Host kein Router ist, konfiguriert sich das Endgerät selbst eine IPv6-Adresse entsprechend dem Präfix aus dem Router Advertisement (siehe auch <xref linkend="hints-daemons-radvd">).</para></sect1><sect1>
<title>Aktivieren der Privacy Extension</title>
<para>Privacy Extension wie beschrieben in <ulink url="http://www.faqs.org/rfcs/rfc4941.html">RFC 4941 / Privacy Extensions for Stateless Address Autoconfiguration in IPv6</ulink> (Nachfolger von <ulink url="http://www.faqs.org/rfcs/rfc3041.html">RFC 3041</ulink>) ersetzt die statische Interface ID (mostly basierend auf der weltweit eindeutigen MAC-Adresse), die bei der Autokonfiguration benutzt wird, durch eine pseudo-random und von Zeit zu Zeit neu generierte.</para><sect2>
<title>Aktivieren von Privacy Extension mit Hilfe von sysctl</title>
<bridgehead renderas="sect2">Temporäre Aktivierung</bridgehead>
<para>Einschalten der Privacy Extension für z.B. Interface ”eth0” und zudem Präferieren dieser Adresse:</para><screen>
<![CDATA[# sysctl -w net.ipv6.conf.eth0.use_tempaddr=2
]]></screen><para>Zur Aktivierung ist der Restart des Interfaces notwendig</para><screen>
<![CDATA[# ip link set dev eth0 down
# ip link set dev eth0 up
]]></screen><para>Nach Empfang eines Router Advertisement sollte das Interface eine entsprechende Adresse sich selbst konfiguriert haben</para><screen>
<![CDATA[# ip -6 addr show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
inet6 2001:db8:0:1:8992:3c03:d6e2:ed72/64 scope global secondary dynamic <- pseudo-random IID
valid_lft 604711sec preferred_lft 86311sec
inet6 2001:db8:0:1::224:21ff:fe01:2345/64 scope global <- IID based on MAC
valid_lft 604711sec preferred_lft 86311sec
...
]]></screen><bridgehead renderas="sect2">Permanente Aktivierung</bridgehead>
<para>Für eine permanente Aktivierung muss entweder ein spezieller Initscript-Wert pro Interface gesetzt sein oder ein entsprechender Wert in /etc/sysctl.conf definiert werden:</para><screen>
<![CDATA[net.ipv6.conf.eth0.use_tempaddr=2
]]></screen><para>Achtung: das Interface muss zu diesem Zeitpunkt bereits existieren. Wenn das nicht der Fall ist (z.B. nach einem Reboot) musses für alle Interfaces konfiguriert werden:</para><screen>
<![CDATA[net.ipv6.conf.all.use_tempaddr=2
net.ipv6.conf.default.use_tempaddr=2
]]></screen><para>Die Änderungen in /etc/sysctl.conf können im laufenden Betrieb geändert werden, aber zur wirklichen Aktivierung wird mindestens wird ein Interface-Restart (down/up) oder ein Reboot benötigt.</para><screen>
<![CDATA[# sysctl -p
]]></screen></sect2><sect2>
<title>Aktivieren von Privacy Extension mit Hilfe des NetworkManager</title>
<para>Moderne (Client-) Systeme nutzen NetworkManager zur Interface-Konfiguration. Ein Kommandozeilen-Werkzeug ist eingebaut welches auch Parameter ändern kann, die in der GUI nicht verfügbar (oder sichtbar) sind.</para>
<para>Beispiele basieren auf Version 0.9.9.1-5.git20140319.fc21</para>
<para>Prüfen existierender Interfaces mit:</para><screen>
<![CDATA[# nmcli connection
NAME UUID TYPE DEVICE
ens4v1 d0fc2b2e-5fa0-4675-96b5-b723ca5c46db 802-3-ethernet ens4v1
]]></screen><para>Menge von IPv6-Adressen mit Privacy Extension:</para><screen>
<![CDATA[# ip -o addr show dev ens4v1 | grep temporary | wc -l
0
]]></screen><para>Aktuelle Einstellung der IPv6 Privacy Extension für ein Interface:</para><screen>
<![CDATA[# nmcli connection show ens4v1 |grep ip6-privacy
ipv6.ip6-privacy: -1 (unknown)
]]></screen><para>Aktivieren der IPv6 Privacy Extension und Restart des Interfaces;</para><screen>
<![CDATA[# nmcli connection modify ens4v1 ipv6.ip6-privacy 2
# nmcli connection down ens4v1; nmcli connection up ens4v1
]]></screen><para>Neuer Wert der IPv6 Privacy Extension prüfen:</para><screen>
<![CDATA[# nmcli connection show ens4v1 |grep ip6-privacy
ipv6.ip6-privacy: 2 (active, prefer temporary IP)
]]></screen><para>Nun sollten auch IPv6 Privacy Extension Adressen automatisch konfiguriert sein</para><screen>
<![CDATA[# ip -o addr show dev ens4v1 | grep temporary | wc -l
2
]]></screen></sect2><sect2>
<title>Test zur Benutzung von Privacy Extension IPv6-Adressen</title>
<para>Ob die IPv6-Adresss mit einer durch die Privacy Extension generierte Interface ID für ausgehende Verbindungen wirklich benutzt wird, kann z.B. mit Hilfe eines Web-Browers durch Aufruf von <ulink url="http://ip.bieringer.de/">http://ip.bieringer.de/</ulink> durchgeführt werden. Wenn EUI64_SCOPE als Ausgabe ”iid-privacy” zeigt, dann funktioniert alles richtig.</para></sect2></sect1></chapter><chapter id='chapter-configuration-route' >
<title><!-- anchor id="chapter-configuration-route" -->Konfiguration normaler IPv6-Routen</title>
<para>Wenn Sie Ihren lokalen Link verlassen und Pakete in das weltweite IPv6-Internet versenden wollen, dann benötigen Sie Routing. Wenn sich bereits ein IPv6 fähiger Router an Ihrem Link befindet, dann reicht eventuell das Hinzufügen von IPv6 Routen.</para>
<para>Achtung: Adressen beginnend mit ”fec0” sind obsolet, hier aber noch der Vollständigheit wegen gezeigt!</para><sect1>
<title>Bestehende IPv6-Routen anzeigen</title>
<para>Zuerst sollten sie überprüfen, ob und welche IPv6 Adressen bereits konfiguriert sind (etwa durch automatischer Konfiguration).</para><sect2>
<title>Verwendung von "ip"</title>
<para>Anwendung:</para><screen>
<![CDATA[# /sbin/ip -6 route show [dev <device>]
]]></screen><para>Beispiel:</para><screen>
<![CDATA[# /sbin/ip -6 route show dev eth0
2001:0db8:0:f101::/64 proto kernel metric 256 mtu 1500 advmss 1440
fe80::/10 proto kernel metric 256 mtu 1500 advmss 1440
ff00::/8 proto kernel metric 256 mtu 1500 advmss 1440
default proto kernel metric 256 mtu 1500 advmss 1440
]]></screen></sect2><sect2>
<title>Verwendung von "route"</title>
<para>Anwendung: </para><screen>
<![CDATA[# /sbin/route -A inet6
]]></screen><para>Sie sehen hier mehrere IPv6 Routen mit unterschiedlichen Adressen eines einzelnen Interfaces (bei der Ausgabe wurde das Interface eth0 herausgefiltert).</para><screen>
<![CDATA[# /sbin/route -A inet6 |grep -w "eth0"
2001:0db8:0:f101 ::/64 :: UA 256 0 0 eth0 <- Interface route for global
¬ address
fe80::/10 :: UA 256 0 0 eth0 <- Interface route for link-local
¬ address
ff00::/8 :: UA 256 0 0 eth0 <- Interface route for all multicast
¬ addresses
::/0 :: UDA 256 0 0 eth0 <- Automatic default route
]]></screen></sect2></sect1><sect1>
<title>Eine IPv6-Route über ein Gateway hinzufügen</title>
<para>Eine Route wird meistens benötigt, um mit IPv6 die Außenwelt über einen IPv6 fähigen Router und über Ihren Link zu erreichen.</para><sect2>
<title>Verwendung von "ip"</title>
<para>Anwendung:</para><screen>
<![CDATA[# /sbin/ip -6 route add <ipv6network>/<prefixlength> via <ipv6address>
¬ [dev <device>]
]]></screen><para>Beispiel:</para><screen>
<![CDATA[# /sbin/ip -6 route add default via 2001:0db8:0:f101::1
]]></screen></sect2><sect2>
<title>Verwendung von "route"</title>
<para>Anwendung: </para><screen>
<![CDATA[# /sbin/route -A inet6 add <ipv6network>/<prefixlength> gw
¬ <ipv6address> [dev <device>]
]]></screen><para>Die optionale Angabe eines Devices wird dann benötigt, wenn die IPv6 Adresse des Gateways eine lokale Link-Adresse ist.</para>
<para>Im folgenden Beispiel wird eine Route für alle Adressen (default) über das Gateway 2001:0db8:0:f101::1 hinzugefügt.</para><screen>
<![CDATA[# /sbin/route -A inet6 add default gw 2001:0db8:0:f101::1
]]></screen></sect2></sect1><sect1>
<title>Eine IPv6-Route über ein Gateway entfernen</title>
<para>Das manuelle entfernen einer Route wird nicht oft benötigt, meistens wird dies automatisch durch Netzwerk-Konfigurationsscripts beim herunterfahren (des Betriebssystems oder eines Interfaces) bewirkt.</para><sect2>
<title>Verwendung von "ip"</title>
<para>Anwendung:</para><screen>
<![CDATA[# /sbin/ip -6 route del <ipv6network>/<prefixlength> via <ipv6address>
¬ [dev <device>]
]]></screen><para>Beispiel:</para><screen>
<![CDATA[# /sbin/ip -6 route del default via 2001:0db8:0:f101::1
]]></screen></sect2><sect2>
<title>Verwendung von "route"</title>
<para>Anwendung: </para><screen>
<![CDATA[# /sbin/route -A inet6 del <ipv6network>/<prefixlength> gw <ipv6address> [dev
¬ <device>]
]]></screen><para>Beispiel zum entfernen der im obigen Beispiel hinzugefügten Route:</para><screen>
<![CDATA[# /sbin/route -A inet6 del default gw 2001:0db8:0:f101::1
]]></screen></sect2></sect1><sect1>
<title>Eine IPv6-Route über ein Interface hinzufügen</title>
<para>Diese Funktion wird manchmal im Fall dedizierter Punkt-zu-Punkt Verbindungen verwendet, in der Regel aber eher selten benötigt.</para><sect2>
<title>Verwendung von "ip"</title>
<para>Anwendung:</para><screen>
<![CDATA[# /sbin/ip -6 route add <ipv6network>/<prefixlength> dev <device>
¬ metric 1
]]></screen><para>Beispiel:</para><screen>
<![CDATA[# /sbin/ip -6 route add default dev eth0 metric 1
]]></screen><para>Der Metrik-Wert ”1” wird verwendet, um mit dem Metrik Wert von route kompatibel zu sein; der Standard-Metrik-Wert von ”ip” ist ”1024”.</para></sect2><sect2>
<title>Verwendung von "route"</title>
<para>Anwendung:</para><screen>
<![CDATA[# /sbin/route -A inet6 add <network>/<prefixlength> dev <device>
]]></screen><para>Beispiel:</para><screen>
<![CDATA[# /sbin/route -A inet6 add default dev eth0
]]></screen></sect2></sect1><sect1>
<title>Eine IPv6-Route über ein Interface entfernen</title>
<para>Dies wird manuell nicht so oft benötigt, jedoch aber beim herunterfahren von Konfigurationsscripts benutzt.</para><sect2>
<title>Verwendung von "ip"</title>
<para>Anwendung:</para><screen>
<![CDATA[# /sbin/ip -6 route del <ipv6network>/<prefixlength> dev <device>
]]></screen><para>Beispiel:</para><screen>
<![CDATA[# /sbin/ip -6 route del default dev eth0
]]></screen></sect2><sect2>
<title>Verwendung von "route"</title>
<para>Anwendung:</para><screen>
<![CDATA[# /sbin/route -A inet6 del <network>/<prefixlength> dev <device>
]]></screen><para>Beispiel:</para><screen>
<![CDATA[# /sbin/route -A inet6 del default dev eth0
]]></screen></sect2></sect1><sect1>
<title>FAQ für IPv6-Routen</title>
<sect2>
<title>Unterstützung einer IPv6 Default-Route</title>
<para>Ein Schwerpunkt bei IPv6 ist das hierarchische Routing. Aus diesem Grund werden in Routern nur wenige Routing-Einträge benötigt.</para>
<para>Einige Punkte sind im aktuellen Kernel zu beachten:</para><sect3>
<title>Clients (kein Routing eines Paketes!)</title>
<para>Ein client kann eine Default Route (z.B. ”::/0” ) einrichten, diese aber auch durch automatische Konfiguration, z.B. mit radvd, erlernen:</para><screen>
<![CDATA[# ip -6 route show | grep ^default
default via fe80::212:34ff:fe12:3450 dev eth0 proto kernel metric 1024 expires
¬ 29sec mtu 1500 advmss 1440
]]></screen></sect3><sect3>
<title>Router & Paketweiterleitung</title>
<para>Ältere Linux Kernel ( zumindest <= 2.4.17) unterstützen keine Default Routen. Man kann dies einrichten, aber die Abfrage dieser Route misslingt im Fall, dass ein Paket weitergeleitet werden soll ( normaler Zwecke eines Routers).</para>
<para>Falls ein entsprechender Kernel noch verwendet wird, kann ”default routing” eingerichtet werden, wenn hierbei das einzig globale Adress-Präfix ”2000::/3” verwendet wird.</para>
<para>Anmerkung: Walten Sie mit Vorsicht bei der Anwendung von default routing auf exponierten Routern, wenn keine Adressfilterung eingesetzt wird. Andernfalls kann Multicast- oder lokaler Site-Datenverkehr den Router ungewollt verlassen.</para></sect3></sect2></sect1></chapter><chapter id='chapter-Neighbor-Discovery' >
<title><!-- anchor id="chapter-Neighbor-Discovery" -->Neighbor Discovery</title>
<para>Die Neighbor Discovery (Ermittlung der Netzwerkumgebung) ist der IPv6 Nachfolger für das ARP (Address Resolution Protocol) bei IPv4. Sie können Informationen über die aktuelle Netzwerkumgebung gewinnen, Einträge erstellen und entfernen.</para>
<para>Der Kernel merkt sich erfolgreich gelernte ”Nachbarn” (wie ARP in IPv4). Sie können die gelernten Einträge mit ”ip” einsehen.</para><sect1>
<title>Netzwerkumgebung mit ”ip” anzeigen</title>
<para>Mit dem folgenden Befehl können Sie die gelernten oder konfigurierten IPv6 Nachbarn anzeigen:</para><screen>
<![CDATA[# ip -6 neigh show [dev <device>]
]]></screen><para>Das folgende Beispiel zeigt einen Nachbar, einen erreichbaren Router:</para><screen>
<![CDATA[# ip -6 neigh show
fe80::201:23ff:fe45:6789 dev eth0 lladdr 00:01:23:45:67:89 router nud reachable
]]></screen></sect1><sect1>
<title>Tabelle der Netzwerkumgebung mit ”ip” editieren</title>
<sect2>
<title>Eintrag manuell hinzufügen</title>
<para>Mit folgendem Befehl können Sie einen Eintrag manuell hinzufügen:</para><screen>
<![CDATA[# ip -6 neigh add <IPv6 address> lladdr <link-layer address> dev <device>
]]></screen><para>Beispiel:</para><screen>
<![CDATA[# ip -6 neigh add fec0::1 lladdr 02:01:02:03:04:05 dev eth0
]]></screen></sect2><sect2>
<title>Eintrag manuell entfernen</title>
<para>Sie können einen Eintrag auch löschen:</para><screen>
<![CDATA[# ip -6 neigh del <IPv6 address> lladdr <link-layer address> dev <device>
]]></screen><para>Beispiel:</para><screen>
<![CDATA[# ip -6 neigh del fec0::1 lladdr 02:01:02:03:04:05 dev eth0
]]></screen></sect2><sect2>
<title>Erweiterte Einstellungen</title>
<para>Das Tool ”ip” ist weniger ausführlich dokumentiert, dennoch ist es sehr mächtig. Sehen Sie online mit ”help” für weitere Details:</para><screen>
<![CDATA[# ip -6 neigh help
Usage: ip neigh { add | del | change | replace } { ADDR [ lladdr LLADDR ]
[ nud { permanent | noarp | stale | reachable } ]
| proxy ADDR } [ dev DEV ]
ip neigh {show|flush} [ to PREFIX ] [ dev DEV ] [ nud STATE ]
]]></screen><para>Es sieht aus, als seien manche Optionen ausschließlich für IPv4 gedacht... Es wird um Ihre Mithilfe gebeten, wenn Sie Informationen zu Optionen und der erweiterten Anwendung beisteuern können.</para></sect2></sect1></chapter><chapter id='chapter-configuring-ipv6-in-ipv4-tunnels' >
<title><!-- anchor id="chapter-configuring-ipv6-in-ipv4-tunnels" -->Konfiguration eines IPv6-in-IPv4 Tunnels</title>
<para>Wenn zum Verlassen des lokalen Netzwerks keine native IPv6-Anbindung vorhanden ist, wird zum Erreichen des weltweiten IPv6 Internet ein IPv6-in-IPv4 Tunnel benötigt.</para>
<para>Es gibt unterschiedliche Tunnel-Mechanismen sowie einige Möglichkeiten zum Einrichten eines Tunnels.</para><sect1>
<title>Tunnelarten</title>
<para>Es steht Ihnen mehr als eine Möglichkeit zur Verfügung, IPv6 Pakete über ausschließliche IPv4 Links zu tunneln.</para><sect2>
<title>Statische Punkt-zu-Punkt Tunnel</title>
<para>Ein Punkt-zu-Punkt Tunnel ist ein dedizierter Tunnel zu einem Endpunkt, der Kenntnis über das lokale IPv6 Netzwerk (für das Routing zurück...) und die IPv4 Adresse des Tunnel-Endpunktes verfügt. Definition des Punkt-zu-Punkt Tunnels siehe: <ulink url="http://www.faqs.org/rfcs/rfc4213.html">RFC 4213 / Basic Transition Mechanisms for IPv6 Hosts and Routers</ulink>. Anforderungen:</para><itemizedlist>
<listitem><para>Die IPv4 Adresse des lokalen Tunnel-Endpunktes muss statisch sein, global eindeutig und vom entfernten Tunnel-Endpunkt aus erreichbar sein.
</para><itemizedlist>
<listitem><para>Wenn keine statische IPv4 Addresse verfügbar ist, muß der Tunnel-Provider die Authentifizerung der dynamischen IPv4 Addresse unterstützen, wie z.B. <ulink url="http://www.sixxs.net/">SixXS / AICCU</ulink> oder <ulink url="http://gogo6.com/">gogo6</ulink>.</para></listitem></itemizedlist></listitem><listitem><para>Sie müssen ein globales IPv6 Präfix zugewiesen bekommen haben.
</para><itemizedlist>
<listitem><para>Es ist auch möglich, daß zusätzliche IPv6 Netzwerke über diesen Tunnel geroutet werden.</para></listitem></itemizedlist></listitem><listitem><para>Ein entfernter Tunnel-Endpunkt muss dazu in der Lage sein, ihr IPv6 Präfix bis zu Ihrem lokalen Tunnel-Endpunkt zu routen (wobei meistens manuelle Konfiguration notwendig wird).</para></listitem></itemizedlist><para>Statische Tunnelprovider:</para><itemizedlist>
<listitem><para><ulink url="http://he.com/">Hurricane Electric</ulink></para></listitem><listitem><para><ulink url="http://www.sixxs.net/">SixXS</ulink></para></listitem></itemizedlist></sect2><sect2>
<title>Automatische Tunnel</title>
<para>Automatisches Tunneln tritt dann ein, wenn ein Knoten direkt einen anderen Knoten (dessen IPv4-Adresse er zuerst kennen lernen muss) über die IPv4-mapped IPv6-Adresse anspricht - dieser Mechanismus sollte nicht mehr unterstützt werden, weil er sehr unsicher ist.</para></sect2><sect2 id='tunneling-6to4.' >
<title><!-- anchor id="tunneling-6to4." -->6to4 Tunnel</title>
<para>6to4 Tunnel (<ulink url="http://www.faqs.org/rfcs/rfc3056.html">RFC 3056 / Connection of IPv6 Domains via IPv4 Clouds</ulink>) verwenden einen einfachen Mechanismus zum erstellen eines automatischen Tunnels. Jeder Knoten mit einer weltweit einmaligen IPv4 Adresse kann zu einem 6to4 Tunnel-Endpunkt gemacht werden (solange keine IPv4-Firewall den Verkehr unterbindet). Ein 6to4 Tunnel ist zumeist kein one-to-one Tunnel. In diesem Fall wird das Untertunneln in einen Upstream- und einen Downstream-Tunnel unterteilt. Ferner zeigt eine spezielle IPv6 Adresse an, dass der Knoten einen 6to4 Tunnel für die Verbindung zum weltweiten IPv6 Netzwerk verwendet.</para><sect3>
<title>Erstellen eines 6to4 Präfixes</title>
<para>Die 6to4 Adresse wird wie folgt definiert (Schema ist dem <ulink url="http://www.faqs.org/rfcs/rfc3056.html">RFC 3056 / Connection of IPv6 Domains via IPv4 Clouds</ulink> entnommen):</para><screen>
<![CDATA[| 3+13 | 32 | 16 | 64 bits |
+---+------+-----------+--------+--------------------------------+
| FP+TLA | V4ADDR | SLA ID | Interface ID |
| 0x2002 | | | |
+---+------+-----------+--------+--------------------------------+
]]></screen><para>FP und TLA zusammen haben den Wert 0x2002. V4ADDR ist die weltweit einmalige IPv4 Adresse des Knoten (in hexadezimaler Notation). Mit dem SLA wird das Subnetz identifiziert (65536 lokale Subnetze sind möglich) und benutzbar, um die lokale Netzwerstruktur abzubilden.</para>
<para>Für Gateways wird dieser Präfix normalerweise mit dem SLA ”0000” definiert und dem 6to4 Tunnel-Interface das Suffix ”::1” (kann aber auch ein beliebiger mit local-scope sein) zugewiesen. Zu bemerken ist, dass Microsoft Windows als Suffix auch immer die V4ADDR einsetzt.</para></sect3><sect3>
<title>6to4 Tunnel zum Upstream</title>
<para>Der Knoten muss die Kenntnis darüber haben, an welchen entfernten Tunnel-Endpunkt die in IPv4 Paketen eingeschlossenen IPv6 Pakete gesendet werden sollen. In den ”Anfängen” der 6to4 Tunnel-Anwendung wurden dedizierte Upstream akzeptierende Router definiert. Liste der Router siehe: <ulink url="http://www.kfu.com/~nsayer/6to4/">NSayer's 6to4 information</ulink>.</para>
<para>Heute können Upstream Router automatisch mittels der anycast Adresse 192.88.99.1 gefunden werden. Routing Protokolle sind für die Verarbeitung im Hintergrund zuständig, siehe <ulink url="http://www.faqs.org/rfcs/rfc3068.html">RFC 3068 / An Anycast Prefix for 6to4 Relay Routers</ulink> für weitere Details.</para></sect3><sect3>
<title>6to4 Tunnel zum Downstream</title>
<para>Der Downstream (6bone -> Ihr 6to4 fähiger Node) ist nicht wirklich fix, er kann von jenem Host variieren, an dem ursprünglich die Pakete gesendet wurden. Es gibt zwei Möglichkeiten:</para><itemizedlist>
<listitem><para>Der entfernte Host benutzt 6to4 und sendet die Pakete direkt an den lokalen Knoten zurück (siehe unten).</para></listitem><listitem><para>Der entfernte Host sendet die Pakete zurück an das weltweite IPv6 Netzwerk, und abhängig vom dynamischen Routing, erstellt dann ein Relay-Router eines ISPs, der 2002::/16 via BGP kundgibt, automatisch zum lokalen Knoten einen Tunnel.</para></listitem></itemizedlist></sect3><sect3>
<title>Möglicher 6to4 Verkehr</title>
<itemizedlist>
<listitem><para>Vom 6to4 zum 6to4: der Tunnel entsteht normalerweise direkt zwischen den beiden 6to4 fähigen Hosts.</para></listitem><listitem><para>Vom 6to4 zum non-6to4: Der Datenstrom wird mittels Upstream-Tunnel versendet.</para></listitem><listitem><para>Vom non-6to4 zum 6to4: Der Datenstrom wird mittels Downstream-Tunnel versendet.</para></listitem></itemizedlist><para>Achtung, durch das mögliche asymmetrische Routing können Probleme mit defekten 6to4-Relays schwer zu diagnostizieren sein.</para></sect3></sect2><sect2>
<title>UDP gekapselte IPv6 Tunnels</title>
<para>UDP gekapseltes IPv6 Tunneling wird üblicherweise benutzt, wenn am internen Endpunkt keine globale IPv4 Addresse verfügbar ist, aber via Network Adress Translation (NAT) noch entsprechende Endpunkte im Internet mit Hilfe unten beschriebener UDP Ports erreichbar sind.</para><sect3>
<title>Teredo Tunnel</title>
<para><ulink url="http://www.faqs.org/rfcs/rfc4380.html">RFC 4380 / Teredo: Tunneling IPv6 over UDP through Network Address Translations</ulink>beschreibt das Tunneln von IPv6 Pakete über IPv4 UDP Pakete (Bubbles), siehe auch <ulink url="http://de.wikipedia.org/wiki/Teredo">Wikipedia / Teredo</ulink>. Üblicherweise benutzt es 3544/udp. Der Client für Linux heißt <ulink url="http://www.remlab.net/miredo/">miredo</ulink> und ist benutzbar ohne große Konfiguration. Über diese Tunnelmethode kann nur ein einzelner Client an das globale IPv6-Netzwerk angeschlossen werden.</para></sect3><sect3>
<title>AYIYA Tunnel</title>
<para>Tunnel provider <ulink url="http://www.sixxs.net/">SixXS</ulink> bietet auch einen IPv6-in-UDP-in-IPv4 (5072/udp) Tunnel an, zur Nutzung muss der Modus AYIYA aktiviert werden.</para></sect3><sect3>
<title>gogo6 Tunnel</title>
<para>Tunnel provider <ulink url="http://gogo6.com/">gogo6</ulink> bietet auch einen IPv6-in-UDP-in-IPv4 (3653/udp) Tunnel an, zur Nutzung muss der Modus v6udpv4 aktiviert werden.</para></sect3></sect2></sect1><sect1>
<title>Bestehende Tunnel anzeigen</title>
<sect2>
<title>Verwendung von "ip"</title>
<para>Anwendung:</para><screen>
<![CDATA[# /sbin/ip -6 tunnel show [<device>]
]]></screen><para>Beispiel:</para><screen>
<![CDATA[# /sbin/ip -6 tunnel show
sit0: ipv6/ip remote any local any ttl 64 nopmtudisc
sit1: ipv6/ip remote 195.226.187.50 local any ttl 64
]]></screen></sect2><sect2>
<title>Verwendung von "route"</title>
<para>Anwendung:</para><screen>
<![CDATA[# /sbin/route -A inet6
]]></screen><para>Beispiel (Ausgabe wurde derart gefiltert, dass nur Tunnels über das virtuelle Interface sit0 angezeigt werden):</para><screen>
<![CDATA[# /sbin/route -A inet6 | grep "\Wsit0\W*$"
::/96 :: U 256 2 0 sit0
2002::/16 :: UA 256 0 0 sit0