-
Notifications
You must be signed in to change notification settings - Fork 9
/
Linux+IPv6-HOWTO.pt_BR.sgml
5007 lines (4960 loc) · 395 KB
/
Linux+IPv6-HOWTO.pt_BR.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="en">
<bookinfo>
<title>Linux IPv6 HOWTO (pt_BR)</title>
<author><firstname>Peter</firstname><surname>Bieringer</surname><affiliation><address>pb at bieringer dot de</address></affiliation></author>
<revhistory>
<revision> <revnumber>0.66wip</revnumber> <date>2020-04-04</date> <authorinitials>PB</authorinitials></revision>
<revision> <revnumber>0.65</revnumber> <date>2009-12-13</date> <authorinitials>PB</authorinitials></revision>
<revision> <revnumber>0.64</revnumber> <date>2009-06-11</date> <authorinitials>PB</authorinitials></revision>
<revision> <revnumber>0.60</revnumber> <date>2007-05-31</date> <authorinitials>PB</authorinitials></revision>
<revision> <revnumber>0.51</revnumber> <date>2006-11-08</date> <authorinitials>PB</authorinitials></revision>
</revhistory> <abstract>
<para>A meta deste HOWTO de IPv6 em Linux é responder as questões básicas e avançadas sobre a versão 6 do protocolo IP em um sistema com Linux. Este HOWTO dará ao leitor informação suficiente para instalar, configurar e usar aplicações IPv6 em máquinas com o Linux. Versões intermediárias deste HOWTO estão disponíveis nos endereços <ulink url="http://mirrors.bieringer.de/Linux+IPv6-HOWTO/">mirrors.bieringer.de</ulink> ou <ulink url="http://mirrors.deepspace6.net/Linux+IPv6-HOWTO/">mirrors.deepspace6.net</ulink>. Veja também <link linkend="revision-history">revision history</link> para saber das mudanças.</para>
</abstract></bookinfo><chapter id='chapter-general' >
<title><!-- anchor id="chapter-general" -->Geral</title>
<para>As informações sobre as traduções disponíveis estão na seção<link linkend="general-translations">Translations</link>.</para><sect1 id='general-copright' >
<title><!-- anchor id="general-copright" -->Copyright, licença e outros</title>
<sect2>
<title>Copyright</title>
<para>Escrito e com Copyright (C) 2001-2020 por Peter Bieringer</para></sect2><sect2>
<title>Licença</title>
<para>Este Linux IPv6 HOWTO está publicado sob a licença GNU GPL versão 2:
</para>
<para>Linux IPv6 HOWTO, um guia para configurar e usar o IPv6 em sistemas Linux.
</para>
<para>Copyright © 2001-2020 Peter Bieringer
</para>
<para>Este documento é um software livre; voce pode redistribui-lo e/ou modifica-lo sob os termos da licença GNU GPL, tal como está publicado pela Free Software Foundation; seja pela versão 2 da Licença, ou (em sua opinião) qualquer versão posterior.</para>
<para>Este programa é distribuído na esperança de que seja útil, mas SEM QUALQUER GARANTIA; nem mesmo qualquer garantia de COMERCIALIZAÇÃO ou ADEQUAÇÃO PARA UM PROPÓSITO PARTICULAR. Veja a GNU GPL para mais detalhes.</para>
<para>Se voce quiser uma cópia da licença GNU GPL, solicite através de carta para o endereço Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA.</para></sect2><sect2>
<title>Sobre o autor</title>
<sect3>
<title>História do autor com a Internet e IPv6</title>
<itemizedlist>
<listitem><para>1993: Eu entrei em contato com a internet utilizando um cliente de email e news baseado em console há bastante tempo (procure por "e91abier" no grupo <ulink url="http://groups.google.com/">groups.google.com</ulink>, sou eu).</para></listitem><listitem><para>1996: Foi solicitado que eu produzisse um curso de IPv6, incluindo um workshop com o Sistema Operacional Linux.</para></listitem><listitem><para>1997: Comecei escrevendo um guia sobre como instalar, configurar e utilizar o IPv6 em Linux, chamado<ulink url="http://www.bieringer.de/linux/IPv6/">IPv6 & Linux - HowTo</ulink> (veja <ulink url="http://www.bieringer.de/linux/IPv6/IPv6-HOWTO/IPv6-HOWTO-0.html#history">IPv6 & Linux - HowTo/History</ulink> para mais informações).</para></listitem><listitem><para>2001: Comecei a escrever este novo Linux IPv6 HOWTO.</para></listitem></itemizedlist></sect3><sect3>
<title>Contato</title>
<para>O autor pode ser contactado através do endereço de email <pb at bieringer dot de> e também através de sua<ulink url="http://www.bieringer.de/pb/">homepage</ulink>.</para>
<para>Atualmente ele mora em Munique [parte nordeste de Schwabing] / Bavaria / Alemanha (sul) / Europa (centro) / Terra (superfície).</para></sect3></sect2></sect1><sect1 id='general-category' >
<title><!-- anchor id="general-category" -->Categoria</title>
<para>Este HOWTO deve ser listado na categoria "Networking/Protocols".</para></sect1><sect1>
<title>Versão, Histórico e To-Do</title>
<sect2>
<title>Versão</title>
<para>A versão atual deste documento é mostrada no começo do documento.</para>
<para>Para outras versões ou traduções disponíveis, veja o site<ulink url="http://www.bieringer.de/linux/IPv6/">http://www.bieringer.de/linux/IPv6/</ulink>.</para></sect2><sect2>
<title>Histórico</title>
<sect3>
<title>Relevantes</title>
<para>2001-11-30: Começo do estilo do novo HOWTO.</para>
<para>2002-01-02: Maioria do conteúdo feito, primeira publicação do capítulo 1(versão 0.10).</para>
<para>2002-01-14: Mais conteúdo, algumas revisões, e publicação do documento completo (version 0.14).</para>
<para>2002-08-16: Tradução para o Polones em progresso</para>
<para>2002-10-31: Tradução para o Chines disponível (veja <link linkend="general-translations">Translations</link> para mais informações)</para>
<para>2002-11-10: Tradução para o Alemão em progresso</para>
<para>2003-02-10: Tradução para o Alemão disponível</para>
<para>2003-04-09: Tradução para o Frances em progresso</para>
<para>2003-05-09: Tradução para o Frances disponível</para>
<para>2003-10-16: Tradução para o Italiano em progresso</para>
<para>2004-03-12: Tradução para o Italiano disponível</para>
<para>2004-06-18: Tradução para o Grego em progresso</para>
<para>2005-07-25: Tradução para o Turco disponível</para>
<para>2007-03-28: Tradução para o Portugues-Brazil em progresso</para>
<para>2008-07-30: Tradução para o Espanhol disponível (mas ainda em progresso) - (lost, URL no longer valid)</para></sect3><sect3>
<title>História completa</title>
<para>Veja <link linkend="revision-history">revision history</link> no final deste documento</para></sect3></sect2><sect2>
<title>To-Do</title>
<itemizedlist>
<listitem><para>Completar conteúdo que ainda falta</para></listitem><listitem><para>Finalizar a checagem gramatical</para></listitem></itemizedlist></sect2></sect1><sect1 id='general-translations' >
<title><!-- anchor id="general-translations" -->Traduções</title>
<para>As traduções devem sempre conter a URL, número da versão c copyright do documento original (e o seu também). Por favor não traduza o changelog original, pois isto não terá muita importancia. Também não traduza a seção sobre traduções disponíveis, pois elas podem estar desatualizadas. Ao invés disso, adicione uma URL para a seção em Ingles deste HOWTO.</para>
<para>Aparentemente a frequencia de mudança deste documento ocorre menos de uma vez por mes. Desde a versão 0.2.7 parece que a maioria do conteúdo que eu fiz foi escrito. As traduções devem sempre ter a versão em ingles como original..</para><sect2>
<title>Linguagens</title>
<para>Nota: uma olhada nesta URL pode ajudar<ulink url="http://www.bieringer.de/linux/IPv6/">http://www.bieringer.de/linux/IPv6/</ulink>.</para><sect3>
<title>Chines</title>
<para>A tradução para o Chines, feito por Burma Chen <expns at yahoo dot com> (informada a mim em 2002-10-31) e pode ser encontrada no TLDP:<ulink url="http://www.ibiblio.org/pub/Linux/docs/HOWTO/translations/zh/Linux-IPv6-HOWTO.txt.gz">http://www.ibiblio.org/pub/Linux/docs/HOWTO/translations/zh/Linux-IPv6-HOWTO.txt.gz (g'zipped txt)</ulink>. É uma foto da tradução, eu não sei se está atualizada.</para></sect3><sect3>
<title>Polones</title>
<para>Desde 2002-08-16 a tradução para o Polones foi iniciada e ainda está em progresso por Lukasz Jokiel <Lukasz dot Jokiel at klonex dot com dot pl>. Versão usada: CVS-version 1.29 do arquivo LyX, a qual foi a origem para a versão 0.2.7. O status é de ainda em progresso (2004-08-30).</para></sect3><sect3>
<title>German</title>
<para>Em 2002-11-10 a versão Alemã foi iniciada por Georg Käfer <gkaefer at gmx dot at> iniciou a tradução para o alemão, e a primeira publicação foi feita em 2003-02-10. Ela está originalmenmte disponível na Deep Space 6<ulink url="http://mirrors.deepspace6.net/Linux+IPv6-HOWTO-de/">http://mirrors.deepspace6.net/Linux+IPv6-HOWTO-de/</ulink> (e também em <ulink url="http://mirrors.bieringer.de/Linux+IPv6-HOWTO-de/">http://mirrors.bieringer.de/Linux+IPv6-HOWTO-de/</ulink>). Esta versão se manterá atualizada tanto quanto for possível.</para></sect3><sect3>
<title>Frances</title>
<para>Em 2003-04-09 foi iniciada a tradução da versão em Frances, por Michel Boucey <mboucey at free dot fr> e a primeira publicação foi em 2003-05-09. Ela está originalmente disponível na Deep Space 6<ulink url="http://mirrors.deepspace6.net/Linux+IPv6-HOWTO-fr/">http://mirrors.deepspace6.net/Linux+IPv6-HOWTO-fr/</ulink> (e também em <ulink url="http://mirrors.bieringer.de/Linux+IPv6-HOWTO-fr/">http://mirrors.bieringer.de/Linux+IPv6-HOWTO-fr/</ulink>).</para></sect3><sect3>
<title>Espanhol</title>
<para>Um membro do projeto MontevideoLibre, localizado no Uruguai (América do Sul) iniciou a tradução para espanhol no formato wiki: (lost, URL no longer valid)</para></sect3><sect3>
<title>Italiano</title>
<para>Em 2003-10-16 a tradução para uma versão em Italiano foi iniciada Michele Ferritto <m dot ferritto at virgilio dot it> para o<ulink url="http://ildp.pluto.linux.it/">ILDP</ulink> (Italian Linux Documentation Project) e a sua primeira publicação foi em 2004-03-12. Ela está originalmente disponível no ILDP em <ulink url="http://www.pluto.it/ildp/howto/ipv6.html">http://www.pluto.it/ildp/howto/ipv6.html</ulink>.</para></sect3><sect3>
<title>Japones</title>
<para>Em 2003-05-14 Shino Taketani <shino_1305 at hotmail dot com> me enviou uma nota dizendo que planejava traduzir o HOWTO para o japones.</para></sect3><sect3>
<title>Grego</title>
<para>Em 2004-06-18 Nikolaos Tsarmpopoulos <ntsarb at uth dot gr> me enviou uma nota dizendo que planejava traduzir o HOWTO para o Grego.</para></sect3><sect3>
<title>Turco</title>
<para>Em 2005-07-18 Necdet Yucel <nyucel at comu dot edu dot tr> me enviou uma nota dizendo que a tradução em Turco estava disponível. E uma fotografia da tradução (versão 0.61) pode ser encontrada na URL<ulink url="http://docs.comu.edu.tr/howto/ipv6-howto.html">http://docs.comu.edu.tr/howto/ipv6-howto.html</ulink>.</para></sect3><sect3>
<title>Portuguese-Brazil</title>
<para>Em 2011-05-06 Gustavo Mendes de Carvalho <gmcarvalho at gmail dot com> iniciou a tradução deste HowTo para Portugues-Brazil. A primeira tentativa realizada em 2007 por Claudemir da Luz <claudemir dot daluz at virtuallink dot com dot br> nunca foi finalizada.</para></sect3></sect2></sect1><sect1>
<title>Técnico</title>
<sect2 id='general-original-source' >
<title><!-- anchor id="general-original-source" -->Fonte original deste HOWTO</title>
<para>Este HOWTO foi escrito usando LyX versão 2.2.2 em um sistema Linux Fedora 25 com o template SGML/XML (DocBook). Ele está disponível em <ulink url="https://github.com/tLDP/Linux-IPv6/">github / tLDP / Linux-IPv6</ulink> para contribuições.</para><sect3>
<title>Divisor de linha de código</title>
<para>Eu utilizei um utilitário divisor de linha de código (Code line wrapping - "lyxcodelinewrapper.pl") feito por mim mesmo, e ele está disponível para seu próprio uso em<ulink url="https://github.com/tLDP/Linux-IPv6/">github / tLDP / Linux-IPv6</ulink></para></sect3><sect3>
<title>Geração de SGML</title>
<para>O SGML/XML é gerado usando a função de exportar do LyX</para></sect3></sect2><sect2>
<title>Referencias On-line para a versão em HTML deste HOWTO</title>
<sect3>
<title>Página principal</title>
<para>Como boa prática, uma referencia à página principal deste HOWTO é recomendada.</para></sect3><sect3>
<title>Páginas dedicadas</title>
<para>Como as páginas em HTML são geradas a partir dos arquivos SGML, os nomes dos arquivos em HTML podem ser bastante diferentes (randomicos). Entretanto, algumas páginas são etiquetadas em LyX, resultando em nomes estáticos. Estas etiquetas são úteis para referencias e não deveriam ser alteradas no futuro. Se voce acredita que eu esqueci qualquer etiqueta, por favor me avise, e eu colocarei.</para></sect3></sect2></sect1><sect1>
<title>Prefácio</title>
<para>Algumas coisas antes:</para><sect2>
<title>Quantas versões deste HOWTO existem por aí ?</title>
<para>Incluindo esta, existem 3 (tres) documentos HOWTO disponíveis. Minhas desculpas se forem demais ;-)</para><sect3>
<title>Linux IPv6 FAQ/HOWTO (desatualizada)</title>
<para>O primeiro documento HOWTO relacionado a IPv6 foi escrito pelo Eric Osborne e era chamado<ulink url="http://www.linuxhq.com/IPv6/">Linux IPv6 FAQ/HOWTO</ulink> (por favor use-o somente para fins históricos). Sua última versão foi a 3.2.1, lançada em 14 de Julho de 1997.</para>
<para>Por favor ajude: Se alguém souber a data de nascimento deste HOWTO, por favor me envie um e-mail (estas informações são necessárias para o "histórico").</para></sect3><sect3>
<title>IPv6 & Linux - HowTo (mantida)</title>
<para>Esta segunda versão existe e se chama<ulink url="http://www.bieringer.de/linux/IPv6/">IPv6 & Linux - HowTo</ulink> escrita por mim (Peter Bieringer) em HTML puro. Ele nasceu em Abril de 1997 e sua primeira versão em ingles foi publicada em Junho de 1997. Eu vou continuar a manter esta versão, mas isto deve acontecer devagar e não será por completo, em favor da atualização da versão do Linux IPv6 HOWTO que voce está lendo agora.</para></sect3><sect3>
<title>Linux IPv6 HOWTO (este documento)</title>
<para>Já que este<ulink url="http://www.bieringer.de/linux/IPv6/">IPv6 & Linux - HowTo</ulink> foi escrito em HTML puro, ele não é compatível com o <ulink url="http://www.tldp.org/">The Linux Documentation Project (TLDP)</ulink>. Eu recebi então um pedido no final de Novembro de 2001 para reescrever este HowTo <ulink url="http://www.bieringer.de/linux/IPv6/">IPv6 & Linux - HowTo</ulink> em SGML. Entretanto, por causa da descontinuidade do HOWTO (<ulink url="http://www.bieringer.de/linux/IPv6/IPv6-HOWTO/IPv6-HOWTO-0.html#history">Future of IPv6 & Linux - HowTo</ulink>), e como o IPv6 estava ficando mais e mais padronizado, eu decidi escrever um novo documento cobrindo os pontos básicos e um pouco avançados que permaneceram importantes ao longo destes anos. Algum conteúdo mais dinamico e avançado ainda pode ser encontrado neste segundo HOWTO (<ulink url="http://www.bieringer.de/linux/IPv6/">IPv6 & Linux - HowTo</ulink>).</para></sect3></sect2></sect1><sect1>
<title>Termos usados, glossário e atalhos</title>
<sect2>
<title>Rede</title>
<variablelist>
<varlistentry><term>Base 10</term><listitem><para>Sistema numérico muito bem conhecido e representa qualquer valor com os dígitos 0 a 9.</para></listitem></varlistentry><varlistentry><term>Base 16</term><listitem><para>Geralmente usado em linguagens de programação, também conhecido como sistema numérico hexadecimal, representa qualquer valor com os dígitos 0 a 9 e caracteres A a F (case insensitive).</para></listitem></varlistentry><varlistentry><term>Base 85</term><listitem><para>Representação de um valor com 85 dígitos/caracteres diferentes, ele pode levar a strings menores, mas nunca vi ser usado em campo.</para></listitem></varlistentry><varlistentry><term>Bit</term><listitem><para>A menor unidade de armazenamento, representa on/verdade/1 e off/falso/0.</para></listitem></varlistentry><varlistentry><term>Byte</term><listitem><para>Geralmente uma coleção de 8 bits (mas não é necessariamente uma verdade - veja outros sistemas computacionais)</para></listitem></varlistentry><varlistentry><term>Device</term><listitem><para>Aqui, o hardware para a conexão de rede, veja também NIC</para></listitem></varlistentry><varlistentry><term>Dual homed host</term><listitem><para>Um sistema dual homed é um nó com duas redes (física ou virtual) com interfaces em dois links diferentes, mas sem encaminhar qualquer pacote entre eles (não é um router).</para></listitem></varlistentry><varlistentry><term>Host</term><listitem><para>Geralmente um sistema single homed com somente uma interface de rede ativa, exemplo Ethernet ou (não e) PPP.</para></listitem></varlistentry><varlistentry><term>Interface</term><listitem><para>Quase sempre o mesmo que "device", veja também NIC</para></listitem></varlistentry><varlistentry><term>IP Header</term><listitem><para>Cabeçalho de um pacote IP (cada pacote de rede tem um cabeçalho e seu tipo depende do nível de rede)</para></listitem></varlistentry><varlistentry><term>Link</term><listitem><para>Um link é o nível 2 de rede, ou meio de transporte de pacotes. exemplos são Ethernet, Token Ring, PPP, SLIP, ATM, ISDN, Frame Relay,...</para></listitem></varlistentry><varlistentry><term>Node</term><listitem><para>Um nó é um host ou um router.</para></listitem></varlistentry><varlistentry><term>Octet</term><listitem><para>É uma coleção de 8 bits, hoje bem similar a "byte".</para></listitem></varlistentry><varlistentry><term>Port</term><listitem><para>Informação utilizada pelo TCP/UDP dispatcher (camada 4) para transportar informações para as camadas superiores</para></listitem></varlistentry><varlistentry><term>Protocolo</term><listitem><para>Cada camada de rede que contém a maioria dos campos e informações para tornar a vida mais fácil ao enviar a informação transportada para as camadas superiores, veja camada 2 (MAC) e 3 (IP)</para></listitem></varlistentry><varlistentry><term>Router</term><listitem><para>Um router é um nó com 2 ou mais redes interfaces de rede (física ou virtual), capaz de encaminhar os pacotes entre as suas interfaces.</para></listitem></varlistentry><varlistentry><term>Socket</term><listitem><para>Um socket IP é definido pelo endereço de origem e destino, e suas portas</para></listitem></varlistentry><varlistentry><term>Stack</term><listitem><para>Relacionado às várias camadas de rede</para></listitem></varlistentry><varlistentry><term>Subnetmask</term><listitem><para>Redes IP usam bits de máscara para separar redes locais de redes remotas</para></listitem></varlistentry><varlistentry><term>Tunnel</term><listitem><para>Um túnel é tipicamente uma conexão ponto-a-ponto sobre a qual pacotes são trocados, e que carregam dados de outro protocolo. Exemplo túnel IPv6-in-IPv4.</para></listitem></varlistentry></variablelist><sect3 id='Glossar' >
<title><!-- anchor id="Glossar" -->Atalhos</title>
<variablelist>
<varlistentry><term>ACL</term><listitem><para>Access Control List - Lista de controle de acesso</para></listitem></varlistentry><varlistentry><term>API</term><listitem><para>Application Programming Interface - Interface de programação de aplicação</para></listitem></varlistentry><varlistentry><term>ASIC</term><listitem><para>Application Specified Integrated Circuit</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 - Provedor de serviços Internet</para></listitem></varlistentry><varlistentry><term>KAME</term><listitem><para>Projeto - um esforço conjunto de seis companhias no Japão para fornecer grátis uma pilha IPv6 e IPsec (para ambos IPv4 e IPv6) para as variantes BSD existentes no mundo <ulink url="http://www.kame.net/">www.kame.net</ulink></para></listitem></varlistentry><varlistentry><term>LIR</term><listitem><para>Local Internet Registry - No Brasil, o registro.br</para></listitem></varlistentry><varlistentry><term>NIC</term><listitem><para>Network Interface Card</para></listitem></varlistentry><varlistentry><term>RFC</term><listitem><para>Request For Comments - conjunto de notas técnicas organizacionais sobre a Internet</para></listitem></varlistentry><varlistentry><term>USAGI</term><listitem><para>UniverSAl playGround for Ipv6 Project - trabalho para entregar uma pilha IPv6 de qualidade para os sistemas Linux.</para></listitem></varlistentry></variablelist></sect3></sect2><sect2>
<title>Informações úteis</title>
<sect3>
<title>Sinal de divisão de linha longa de código</title>
<para>O caractere especial "¬" é usado para sinalizar que esta linha de código foi dividida para se obter uma melhor visualização em arquivos PFG e PS.</para></sect3><sect3>
<title>Marcadores</title>
<para>Nos exemplos genéricos voce encontrará as seguintes marcações:</para><screen>
<![CDATA[<myipaddress>
]]></screen><para>Para o uso real em seu sistema de linha de comando ou em scripts, isto deve ser substituído pelo conteúdo correto (removendo os sinais < e >). Desta forma o resultado seria</para><screen>
<![CDATA[1.2.3.4
]]></screen></sect3><sect3>
<title>Comandos no shell</title>
<para>Comandos executados no shell por usuários normais (não root) começam com $</para><screen>
<![CDATA[$ whoami
]]></screen><para>Comandos executados pelo usuário root começam com #</para><screen>
<![CDATA[# whoami
]]></screen></sect3></sect2></sect1><sect1>
<title>Necessidades para usar este HOWTO</title>
<sect2>
<title>Prerequisitos pessoais</title>
<sect3>
<title>Experiencia com ferramentas Unix</title>
<para>Voce deve estar familiarizado com a maioria das ferramentas Unix, como grep, awk, find, etc. , e saber sobre a maioria das opções mais usadas de cada um deles.</para></sect3><sect3>
<title>Experiencia com teoria de rede</title>
<para>Voce deve estar famliarizado com camadas, protocolos, endereços, cabos, conectores, etc. Se voce é novo nesta área, este é um bom local para voce iniciar seus estudos <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>Experiencia com configuração IPv4</title>
<para>Voce deve definitivamente ter alguma experiencia em configuração de redes IPv4, caso contrário será difícil para voce entender o que realmente está acontecendo.</para></sect3><sect3>
<title>Experiencia com Domain Name System (DNS)</title>
<para>Permitirá a voce entender o que é um Domain Name System (DNS), que serviço ele fornece e como usa-lo.</para></sect3><sect3>
<title>Experiencia com estratégias de debug de rede</title>
<para>Voce deve pelo menos entender como usar o tcpdump e o que ele pode te mostrar. Caso contrário a depuração de problemas de rede será muito difícil para voce.</para></sect3></sect2><sect2>
<title>Hardware compatível com o sistema Linux</title>
<para>É claro que voce vai precisar usar algum hardware (pode ser uma maquina virtual), e não somente ler este HOWTO para dormir. ;-7)</para></sect2></sect1></chapter><chapter id='chapter-basics' >
<title><!-- anchor id="chapter-basics" -->Básico</title>
<sect1>
<title>O que é IPv6?</title>
<para>O IPv6 é um novo protocolo de camada 3 que tem a função de substituir o IPv4 (também conhecido apenas por IP). O IPv4 foi projetado a muito tempo atrás(<ulink url="http://www.faqs.org/rfcs/rfc760.html">RFC 760 / Internet Protocol</ulink> de Janeiro de 1980) e desde o começo tem havido muitos pedidos de atender mais capacidades e funcionalidades. A última RFC é <ulink url="http://www.faqs.org/rfcs/rfc2460.html">RFC 2460 / Internet Protocol Version 6 Specification</ulink>.As grandes mudanças no IPv6 foram o novo formato do cabeçalho, incluindo o tamanho da capacidade de endereços, de 32 para 128 bits. Já que a camada 3 é a responsável por transporte de pacotes fim a fim usando o roteamento baseado em endereços, ele deveria incluir os endereços IPv6 de origem e destino tal como o IPv4.</para>
<para>Para mais informações sobre a história do IPv6, de uma olhada nas RFC's mais antigas do IPv6 listadas aqui<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" -->História do IPv6 no Linux</title>
<para>Os anos de 1992, 1993 e 1994 do IPv6 no Linux (linhas gerais) são cobertos pelo seguinte documento:<ulink url="http://www.laynetworks.com/IPv6.htm#CH3">IPv6 or IPng (IP next generation)</ulink>.</para>
<para>To-do: melhorar a linha do tempo, adicionar conteúdo...</para><sect2>
<title>O começo</title>
<para>O primeiro trecho de código de rede relacionado com o IPv6 foi adicionado ao kernel 2.1.8 do Linux em novembro de 1996 por Pedro Roque. Ele foi baseado na API do BSD:</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>As linhas mostradas foram copiadas do patch-2.1.8 (o email foi limpo para evitar spam).</para></sect2><sect2>
<title>Enquanto isso</title>
<para>Por conta do buraco da manpower, a implementação do IPv6 no kernel foi incapaz de seguir os rascunhos propostos pelos novos RFC's publicados. Em outubro de 2000, um projeto foi iniciado no Japão, chamado<ulink url="http://www.linux-ipv6.org/">USAGI</ulink>, cujo objetivo foi implantar todo o restante, ou desatualizado, suporte ao IPv6 para o Linux. Ele utiliza a implementação IPv6 atual para o FreeBSD feita pelo <ulink url="http://www.kame.net/">KAME project</ulink>. De tempos em tempos, eles criavam fotos da versão vanilla do código do kernel do Linux.</para>
<para>Até a implementação do desenvolvimento na série 2.5 do kernel ter sido iniciado, os patches do<ulink url="http://www.linux-ipv6.org/">USAGI</ulink> eram tão grandes, que os mantenedores de rede do Linux eram incapazes de inclui-lo completamente no código final do kernel do Linux série 2.4.x.</para>
<para>Durante o desenvolvimento da serie 2.5, o tentou inserir todas as suas extensões usadas nesta série.</para></sect2><sect2>
<title>Atualmente</title>
<para>Muito do desenvolvimento feito para o IPv6 e patches do<ulink url="http://www.linux-ipv6.org/">USAGI</ulink> e outros estão integrados na série vanilla do kernel 2.6.x.</para></sect2><sect2>
<title>O futuro</title>
<para>O <ulink url="http://www.linux-ipv6.org/">USAGI</ulink> e outros ainda mantém o trabalho na implementação de novas características e funcionalidades, como a mobilidade e outros. De tempos em tempos, novos patches com extensões são lançados e também integrados à série vanilla do kernel.</para></sect2></sect1><sect1>
<title>Como o endereço IPv6 se parece?</title>
<para>Como já mencionado antes, os endereços IPv6 possuem 128 bits de tamanho. Este número de bits gera um número decimal extremamente grande, com 39 dígitos de tamanho:</para><screen>
<![CDATA[2^128-1: 340282366920938463463374607431768211455
]]></screen><para>Tais números não são endereços fáceis de serem memorizados. Os endereços IPv6 também tem um esquema orientado a bits (assim como o IPv4, mas não tão facilmente reconhecido). Assim a melhor notação de números tão grandes é em formato hexadecimal. Em hexadecimal, 4 bits (também conhecidos como "nibble") são representados por um dígito ou caractere, de 0-9 e A-F. Desta forma, o tamanho do endereço é reduzido para 32 caracteres.</para><screen>
<![CDATA[2^128-1: 0xffffffffffffffffffffffffffffffff
]]></screen><para>Esta representação ainda não é muito conveniente (com a possível mistura ou perda de um único dígito hexadecimal), então os desenvolvedores do IPv6 escolheram um formato hexadecimal com um ":" separando cada bloco de 16 bits. Com isso, o sinal inicial 0x (um prefixo para valores hexadecimais em linguagens de programação) foi removido:</para><screen>
<![CDATA[2^128-1: ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff
]]></screen><para>Um endereço utilizável seria:</para><screen>
<![CDATA[2001:0db8:0100:f101:0210:a4ff:fee3:9566
]]></screen><para>Para simplificar, os zeros iniciais de cada bloco de 16 bits pode ser omitido:</para><screen>
<![CDATA[2001:0db8:0100:f101:0210:a4ff:fee3:9566 ->
¬ 2001:db8:100:f101:210:a4ff:fee3:9566
]]></screen><para>Um bloco de 16 bits contendo somente zeros também pode ser omitida, sendo representada por "::", mas não mais de uma única vez no endereço. Caso contrário poderia haver duplicação de endereços.</para><screen>
<![CDATA[2001:0db8:100:f101:0:0:0:1 -> 2001:db8:100:f101::1
]]></screen><para>A maior redução possível é vista do endereço IPv6 de localhost:</para><screen>
<![CDATA[0000:0000:0000:0000:0000:0000:0000:0001 -> ::1
]]></screen><para>Há também um outro representação em modo compacto (Código base 85) baseado na<ulink url="http://www.faqs.org/rfcs/rfc1924.html">RFC 1924 / A Compact Representation of IPv6 Addresses</ulink>(publicada em 1º Abril 1996), nunca vista em campo. Provavelmente é uma pegadinha ou mentirinha da data. Mas aqui está um exemplo:</para><screen>
<![CDATA[# ipv6calc --addr_to_base85 2001:0db8:0100:f101:0210:a4ff:fee3:9566
9R}vSQZ1W=9A_Q74Lz&R
]]></screen><blockquote>
<para>Info: ipv6calc é uma calculadora de formato de endereços IPv6 que também faz conversões, e pode ser encontrada aqui: <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 (Básico)</title>
<sect2>
<title>Porque o nome do sucessor do IPv4 é IPv6 e não IPv5 ?</title>
<para>No cabeçalho IP, os primeiros 4 bits são reservados para a versão do protocolo. Então em teoria qualquer número entre 0 e 15 seria possível.</para><itemizedlist>
<listitem><para>4: já em uso pelo IPv4</para></listitem><listitem><para>5: está reservado para o Stream Protocol (STP,<ulink url="http://www.faqs.org/rfcs/rfc1819.html">RFC 1819 / Internet Stream Protocol Version 2</ulink>) (o qual nunca foi realmente feito para o público)</para></listitem></itemizedlist><para>O próximo número disponível era 6. Portando, assim nasceu o IPv6!</para></sect2><sect2>
<title>Endereços IPv6: porque um número tão grande de bits ?</title>
<para>Durante o desenvolvimento do IPv4, as pessoas pensaram que 32 bits seriam suficientes para o mundo. Olhando de volta, realmente 32 bits foram suficientes por bastante tempo. entretanto 32 bits não foram suficientes para prover endereços globais para todos os dispositivos de rede no futuro (ou será já no presente ?). Pense em telefones celulares, tablets, computadores virtuais, carros, GPS's, geladeiras, TV's, etc.</para>
<para>Assim, os desenvolvedores escolheram 128 bits, 4 vezes maior (no campo do tamanho do endereço) do que o IPv4.</para>
<para>Mas o tamanho utilizável é menor do que parece. Isto se deve por causa do esquema utilizado na definição do endereçamento: 64 bits são usados para identificar a interface. Os outros 64 bits são usados para o roteamento. Assumindo os níveis de agregação (/48, /32, ...), é possível que os endereços também se esgotem, mas esperamos que não em futuro próximo.</para>
<para>Para mais informações veja também<ulink url="http://www.faqs.org/rfcs/rfc1715.html">RFC 1715 / The H Ratio for Address Assignment Efficiency</ulink> e <ulink url="http://www.faqs.org/rfcs/rfc3194.html">RFC 3194 / The Host-Density Ratio for Address Assignment Efficiency</ulink>.</para></sect2><sect2>
<title>Endereços IPv6: porque um número tão pequeno de bits em um nova versão ?</title>
<para>Enquanto existam (possivelmente) algumas pessoas (só sei do Jim Fleming...) na internet que estejam pensando sobre o IPv8 ou IPv16, estes projetos estão muito longe de serem aceitos e implementados. Enquanto isso, 128 bits foi a melhor escolha levando em consideração o overhead do cabeçalho e o transporte de dados. Considere o MTU mínimo no IPv4 (576 octetos) e no IPv6 (1280 octetos), o tamanho do cabeçalho em iIPv4 é de 20 octetos (mínimo, e pode aumentar até 60 octetos com outras opções usadas) e no IPv6 é de 40 octetos (fixo). Isto representa 3,4% de overhead no IPv4 (com o tamanho mínimo) e 3,1 % do menor MTU em IPv6. O overhead é praticamente igual. Mais bits para endereço necessitariam cabeçalhos maiores e consequentemente mais overhead. Além disso, considere o tamanho máximo de uma MTU em links normais (como em Ethernet hoje): são 1500 octetos (em alguns casos especiais 9.000 octetos usando jumbo frames). Assim, não seria um projeto apropriado se 10% a 20% dos dados transportados para a camada 3 fosse usado para endereçamento e não para dados propriamente ditos.</para></sect2></sect1></chapter><chapter id='chapter-addresstypes' >
<title><!-- anchor id="chapter-addresstypes" -->Tipos de endereço</title>
<para>Como no IPv4, os endereços em IPv6 também podem ser divididos em duas partes - host e rede - com a utilização de máscaras de rede.</para>
<para>O IPv4 tem mostrado que algumas vezes é bom, se mais de um endereço IP puder ser configurado em uma interface, cada um deles com um propósito bem diferente (aliases, multicast). Então para continuar extensível, o IPv6 também suporta esta característica e permite que mais de 1 endereço seja configurado na mesma interface. Atualmente não existe qualquer limitação definida pela RFC, a não ser na implementação da pilha IPv6 (para evitar ataques DoS).</para>
<para>Ao usar este grande número de bits para endereço, o IPv6 define tipos de endereços baseado nos bits iniciais, os quais são, espera-se, não sejam quebrados no futuro, como acontece hoje com o IPv4 e as suas classes A, B e C.</para>
<para>Estes números de bits são separados para endereçar redes (os primeiros 64 bits) e para endereços de host (os últimos 64 bits), para facilitar a auto-configuração.</para><sect1>
<title>Endereços sem um prefixo especial</title>
<sect2>
<title>Endereço localhost</title>
<para>Este é um endereço especial para a interface de loopback, similar ao 127.0.0.1 no IPv4. Em IPv6, este endereço de localhost é:</para><screen>
<![CDATA[0000:0000:0000:0000:0000:0000:0000:0001
]]></screen><para>ou em sua forma comprimida:</para><screen>
<![CDATA[::1
]]></screen><para>Os pacotes com este endereço como origem ou destino nunca devem sair ou entrar em um host.</para></sect2><sect2>
<title>Endereços não especificados</title>
<para>Este é um endereço especial, como "any" ou "0.0.0.0". Em IPv6 é representado assim:</para><screen>
<![CDATA[0000:0000:0000:0000:0000:0000:0000:0000
]]></screen><para>ou:</para><screen>
<![CDATA[::
]]></screen><para>Este endereço é geralmente usado para especificação de portas (qualquer IPv6) ou tabelas de roteamento.</para>
<para>Nota: este endereço nunca pode ser usado como um endereço de destino.</para></sect2><sect2>
<title>Endereços IPv6 vinculados a endereços IPv4</title>
<para>Existem dois endereços que contém endereços IPv4.</para><sect3>
<title>IPv4-mapeado para IPv6</title>
<para>Um endereço IPv4-único para compatibilidade IPv6 é às vezes usado ou mostrado para sockets criados por um daemon IPv6, mas que só recebe conexões de endereços IPv4.</para>
<para>Estes endereços são definidos dentro de um prefixo especial, com o tamanho /96 (a.b.c.d é o endereço IPv4):</para><screen>
<![CDATA[0:0:0:0:0:ffff:a.b.c.d/96
]]></screen><para>ou em seu formato comprimido</para><screen>
<![CDATA[::ffff:a.b.c.d/96
]]></screen><para>por exemplo, o endereço IP 1.2.3.4 seria assim:</para><screen>
<![CDATA[::ffff:1.2.3.4
]]></screen></sect3><sect3>
<title>por exemplo, o endereço IP 1.2.3.4 seria assim:</title>
<para>Usado para tunelamento automático(<ulink url="http://www.faqs.org/rfcs/rfc2893.html">RFC 2893 / Transition Mechanisms for IPv6 Hosts and Routers</ulink>), o qual é substituído pelo <link linkend="tunneling-6to4.">6to4 tunneling</link>.</para><screen>
<![CDATA[0:0:0:0:0:0:a.b.c.d/96
]]></screen><para>ou em seu formato comprimido</para><screen>
<![CDATA[::a.b.c.d/96
]]></screen></sect3></sect2></sect1><sect1>
<title>Parte da rede, também conhecido como prefixo</title>
<para>Os designers definiram alguns tipos de endereços e deixaram muito disto para futuras definições quando novas necessidades surgirem. A <ulink url="http://www.faqs.org/rfcs/rfc4291.html">RFC 4291 / IP Version 6 Addressing Architecture</ulink> define o esquema utilizado no endereçamento atual.</para>
<para>Vamos agora dar uma olhada nos diferentes tipos de prefixos (e também em tipos de endereços):</para><sect2>
<title>Endereço tipo "link local"</title>
<para>Estes são endereços epeciais que são válidos somente no link de uma interface. Usando este endereço como destino, os pacotes nunca serão encaminhados a um router. Isto é usado para links de comunicação, tais como:</para><itemizedlist>
<listitem><para>Há alguém está aqui neste link ?</para></listitem><listitem><para>Há alguém aqui com endereços especiais (ex. procurando por um router) ?</para></listitem></itemizedlist><para>Eles começam com (onde "x" é qualquer caractere hexadecimal, normalmente "0")</para><screen>
<![CDATA[fe8x: <- atualmente é o único em uso
fe9x:
feax:
febx:
]]></screen><para>Um endereço com este prefixo é encontrado em cada interface com IPv6 habilitado após a auto-configuração stateless (a qual é normalmente sempre o caso).</para></sect2><sect2>
<title>Endereço tipo "site local"</title>
<para>Estes endereços são similares aos da<ulink url="http://www.faqs.org/rfcs/rfc1918.html">RFC 1918 / Address Allocation for Private Internets</ulink> em uso atualmente em IPv4, com a vantagem adicional de que qualquer pessoa que usar este tipo de endereço tem a capacidade de usar até 16 bits para a definição máxima de 65535 subredes. Comparável com o 10.0.0.0/8 do IPv4.</para>
<para>Outra vantagem: como é possível colocar mais de 1 endereço em uma interface com IPv6, voce pode configurar um endereço de "site local" junto com um endereço global.</para>
<para>Ele começa com:</para><screen>
<![CDATA[fecx: <- mais usado, mais comum
fedx:
feex:
fefx:
]]></screen><para>(onde o "x" é qualquer caractere hexadecimal, geralmente um "0")</para>
<para>Este tipo de endereço não deveria mais ser usado, <ulink url="http://www.faqs.org/rfcs/rfc3879.html">RFC 3879 / Deprecating Site Local Addresses</ulink>, mas para um teste em laboratório, estes endereços ainda continuam sendo uma boa escolha (IMHO - em minha humilde opinião).</para></sect2><sect2>
<title>Endereços locais Unicast IPv6</title>
<para>Por causa da definição original de endereços de site local não serem únicos, pode haver algum problema se duas redes já configuradas forem se conectar em um futuro próximo (overlap de subredes). Este e outros problemas foram os motivos para um novo tipo de endereço definido na<ulink url="http://www.faqs.org/rfcs/rfc4193.html">RFC 4193 / Unique Local IPv6 Unicast Addresses</ulink>.
</para>
<para>Ele começa com:</para><screen>
<![CDATA[fcxx:
fdxx: <- atualmente o único em uso
]]></screen><para>Uma parte do prefixo (40 bits) é gerada usando um algoritmo pseudo-randomico e é improvável que dois resultados gerados por este algoritmo sejam iguais.</para>
<para>Exemplo de um prefixo gerado por este algoritmo (veja em: <ulink url="http://www.goebel-consult.de/ipv6/createLULA">Goebel Consult / createLULA</ulink>):</para><screen>
<![CDATA[fd0f:8b72:ac90::/48
]]></screen></sect2><sect2>
<title>Endereço tipo Global "(Aggregatable) global unicast"</title>
<para>Atualmente, existe um tipo de endereço definido globalmente (o primeiro design, chamado "provider based") que foi jogado fora a alguns anos atrás<ulink url="http://www.faqs.org/rfcs/rfc1884.html">RFC 1884 / IP Version 6 Addressing Architecture [obsolete]</ulink>, e voce consegue encontrar em algumas versões do kernel do Linux.</para>
<para>Ele começa com (os caracteres "x" são hexadecimais)</para><screen>
<![CDATA[2xxx:
3xxx:
]]></screen><para>Nota: o prefixo "aggregatable" foi descartado nos atuais drafts. Há ainda alguns outros subtipos definidos. Veja abaixo:</para><sect3>
<title>Endereço de teste 6bone</title>
<para>Estes foram os primeiros endereços globais que foram definidos e usados. Eles começam com </para><screen>
<![CDATA[3ffe:
]]></screen><para>Exemplo:</para><screen>
<![CDATA[3ffe:ffff:100:f102::1
]]></screen><para>Um endereço de teste especial para o 6bone que nunca seria globalmente único começa com</para><screen>
<![CDATA[3ffe:ffff:
]]></screen><para>e a maioria deles é mostrado em exemplos antigos. A razão para isso é, se endereços reais são mostrados, seria possível alguém copiar e colar estes endereços de arquivos de configuração antigos, o que inadvertidamente causaria um erro de duplicação de endereço de um endereço global único. Isto poderia causar sérios problemas para o host original (como nunca receber as respostas de requisições feitas). </para>
<para>Como o IPv6 agora já está em produção, este prefixo não é mais delegado e ele foi removido do processo de roteamento (veja<ulink url="http://www.faqs.org/rfcs/rfc3701.html">RFC 3701 / 6bone Phaseout</ulink> para mais detalhes).</para></sect3><sect3>
<title>Endereços 6to4</title>
<para>Estes endereços, feitos para um mecanismo de túnel especial [<ulink url="http://www.faqs.org/rfcs/rfc3056.html">RFC 3056 / Connection of IPv6 Domains via IPv4 Clouds</ulink> e <ulink url="http://www.faqs.org/rfcs/rfc2893.html">RFC 2893 / Transition Mechanisms for IPv6 Hosts and Routers</ulink>],utilizam um endereço IPv4 já fornecido e a sua possível subnet, e começam com</para><screen>
<![CDATA[2002:
]]></screen><para>Por exemplo, este endereço 192.168.1.1/5 ficaria:</para><screen>
<![CDATA[2002:c0a8:0101:5::1
]]></screen><para>Um pequeno comando em shell poderia ajudar voce a gerar este endereço, baseado em um endereço IPv4 fornecido:</para><screen>
<![CDATA[ipv4="1.2.3.4"; sla="5"; printf "2002:%02x%02x:%02x%02x:%04x::1" `echo $ipv4
¬ | tr "." " "` $sla
]]></screen><para>Veja também <link linkend="tunneling-6to4.">tunneling using 6to4</link> e <link linkend="information-joinipv6-6to4-tunneling">information about 6to4 relay routers</link>.</para></sect3><sect3>
<title>Designado pelo provedor para roteamento hierárquico</title>
<para>Este endereço é delegado pelo ISP e começa com</para><screen>
<![CDATA[2001:
]]></screen><para>Prefixos de ISP's maiores (ou AS's) são delegados pelos <link linkend="information-majorregionregistries">local registries</link> e tem atualmente um tamanho de prefixo /32.</para>
<para>Qualquer outro ISP/empresa pode solicitar um prefixo de tamanho /48, mas isto depende da política de distribuição de endereços dos registros locais de cada país ou região.</para></sect3><sect3>
<title>Endereços reservados para exemplos e documentação</title>
<para>Atualmente, dois blocos de endereço estão reservados para exemplos e documentação. Veja a<ulink url="http://www.faqs.org/rfcs/rfc3849.html">RFC 3849 / IPv6 Address Prefix Reserved for Documentation</ulink>:</para><screen>
<![CDATA[3fff:ffff::/32
2001:0DB8::/32 EXAMPLENET-WF
]]></screen><para>Estes endereços devem ser filtrados baseados no endereço de origem e NÃO devem ser roteados em roteadores de borda em direção à internet, se possível.</para></sect3></sect2><sect2>
<title>Endereços Multicast</title>
<para>Endereços Multicast são usados por serviços específicos.</para>
<para>Eles sempre começam com (xx é o valor de escopo)</para><screen>
<![CDATA[ffxy:
]]></screen><para>Existem divisões entre escopo e tipo:</para><sect3>
<title>Escopo Multicast</title>
<para>O escopo Multicast é um parametro usado para especificar a distancia máxima que um pacote multicast pode "viajar" a partir de sua origem.</para>
<para>Atualmente, os seguintes escopos (ou regiões) estão definidos:</para><itemizedlist>
<listitem><para>ffx1: nó local, os pacotes nunca deixam o nó.</para></listitem><listitem><para>ffx2: link-local, os pacotes nunca são encaminhados pelos routers, assim eles nunca deixam o link especificado.</para></listitem><listitem><para>ffx5: site-local, os pacotes nunca deixam o site.</para></listitem><listitem><para>ffx8: organization-local, os pacotes nunca deixam a organização (não é tão fácil de implementar, mas deve ser coberto pelo protocolo de roteamento).</para></listitem><listitem><para>ffxe: escopo global.</para></listitem><listitem><para>outros são reservados</para></listitem></itemizedlist></sect3><sect3>
<title>Tipos Multicast</title>
<para>Já existem muitos tipos definidos/reservados (veja<ulink url="http://www.faqs.org/rfcs/rfc4291.html">RFC 4291 / IP Version 6 Addressing Architecture</ulink> para mais detalhes). Alguns exemplos são:</para><itemizedlist>
<listitem><para>Endereço All Nodes: ID = 1h, endereça todos os host no nó local (ff01:0:0:0:0:0:0:1) ou no link conectado (ff02:0:0:0:0:0:0:1).</para></listitem><listitem><para>Endereço All Routers: ID = 2h, endereça tosos os routers no nó local (ff01:0:0:0:0:0:0:2), no link conectado (ff02:0:0:0:0:0:0:2), ou no site local (ff05:0:0:0:0:0:0:2)</para></listitem></itemizedlist></sect3><sect3>
<title>Endereço multicast solicitado nó link-local</title>
<para>Um endereço de multicast especial que é usado como endereço de destino para a descoberta da vizinhança , uma vez que no IPv6 não há ARP, como existe no IPv4.</para>
<para>Um exemplo deste endereço se parece com</para><screen>
<![CDATA[ff02::1:ff00:1234
]]></screen><para>Os prefixos usados mostram que este é um endereço multicast link-local. O sufixo é gerado a partir do endereço de destino. Neste exemplo, um pacote deveria ser enviado ao endereço "fe80::1234", mas a parte de rede não conhece o MAC atual deste destino. Ele então substitui os 104 bits mais altos com "ff02:0:0:0:0:1:ff00::/104" e deixa os menores 24 bits intocados. Este endereço então é agora usado no link para achar o nó correspondente que tem que enviar uma resposta contendo o endereço MAC usado na camada 2.</para></sect3></sect2><sect2>
<title>Endereços Anycast</title>
<para>Endereços Anycast são endereços especiais e eles são usados para muitas coisas, como o servidor DNS ou DHCP mais próximo, e outras coisas. Estes endereços são obtidos do espaço de endereçamento Unicast (aggregatable global ou site-local). O mecanismo anycast (do ponto de vista do cliente) será tratado pelos protocolos de roteamento dinamico.</para>
<para>Nota: Endereços anycast não podem ser usados como endereços de origem, pois eles se aplicam somente a endereços de destino.</para><sect3>
<title>Endereços Anycast Subnet-router</title>
<para>Um exemplo simples para um endereço unicast é o anycast subnet-router. Assumindo que um nó tem os seguintes endereços globais IPv6 configurados:</para><screen>
<![CDATA[2001:db8:100:f101:210:a4ff:fee3:9566/64 <- Node's address
]]></screen><para>O endereço unicast subnet-router será criado removendo o sufixo (os 64 bits menos significantes) completamente:</para><screen>
<![CDATA[2001:db8:100:f101::/64 <- subnet-router anycast address
]]></screen></sect3></sect2></sect1><sect1>
<title>Tipos de endereço (parte de host)</title>
<para>Para a auto-configuração e questões de mobilidade, foi decidido usar os 64 bits de menor significado como a parte de host do endereço na maioria dos tipos de endereços atuais. Desta forma, cada subnet pode suportar uma grande quantidade de endereços.</para>
<para>A parte de host pode ser verificada de maneira distinta:</para><sect2>
<title>Computado automaticamente (também conhecido como stateless)</title>
<para>Com a auto-configuração, a parte host do endereço é feita através da conversão do endereço MAC da interface (se disponível), através do método EUI-64, para um único endereço IPv6. Se nenhum MAC estiver disponível para este dispositivo (isto acontece bastante em dispositivos virtuais), outra coisa (como o endereço IPv4 ou o MAC da interface física) é usada no lugar.</para>
<para>Exemplo: uma placa de rede tem o seguinte endereço MAC (48 bit):</para><screen>
<![CDATA[00:10:a4:01:23:45
]]></screen><para>Isto poderia ser expandido de acordo com o tutorial do IEEE -<ulink url="http://standards.ieee.org/regauth/oui/tutorials/EUI64.html">IEEE-Tutorial EUI-64</ulink> resultando no endereço abaixo:</para><screen>
<![CDATA[0210:a4ff:fe01:2345
]]></screen><para>Com um prefixo já fornecido, o resultado é o endereço IPv6 mostrado abaixo:</para><screen>
<![CDATA[2001:0db8:0100:f101:0210:a4ff:fe01:2345
]]></screen><sect3>
<title>Problema de privacidade com os endereços automaticamente computados e uma solução</title>
<para>Por causa da parte host do endereço "automaticamente computado" ser único, (exceto quando um fabricante de placas de rede usa o mesmo MAC em mais de um NIC), o rastreamento de um cliente é possível quando não há um proxy de qualquer tipo.</para>
<para>Este é um problema já conhecido, e a sua solução foi definida através da extensão de privacidade, definida na<ulink url="http://www.faqs.org/rfcs/rfc3041.html">RFC 3041 / Privacy Extensions for Stateless Address Autoconfiguration in IPv6</ulink> (já existe também um novo draft disponível: <ulink url="http://www.ietf.org/ids.by.wg/ipv6.html">draft-ietf-ipv6-privacy-addrs-v2-*</ulink>). Usando um valor estático e um valor randomico, um novo sufixo é gerado de tempos em tempos.</para>
<para>Nota: isto é somente interessante em conexões finais de clientes, e não é realmente útil para servidores já conhecidos.</para></sect3></sect2><sect2>
<title>Definido manualmente</title>
<para>Para servidores, provavelmente é mais fácil se lembrar de endereços mais simples, mas isto também pode ser resolvido. Em IPv6, é possível configurar um endereço adicional para uma interface. Veja o exemplo:</para><screen>
<![CDATA[2001:0db8:100:f101::1
]]></screen><para>Para sufixos manuais como o ::1 mostrado acima, é necessário que o sétimo bit mais significativo seja definido como 0 (o bit universal/local do identificador gerado automaticamente). Existe também uma outra combinação de bits (não utilizada) que é reservada para endereços unicast.</para></sect2></sect1><sect1>
<title>Tamanho de prefixos para roteamento</title>
<para>Na fase inicial de projeto e design do IPv6, foi planejada a utilização hierárquica de roteamento para reduzir o tamanho das tabelas de roteamento ao menor valor possível. As razões por trás desta abordagem foram o grande número de rotas nos grandes roteadores de borda (cerca de 300.000 em janeiro de 2011), reduzindo a necessidade de memória nos routers e a capacidade de se utilizar chips ASIC (Application Specified Integrated Circuit) para manipular esta tabela, aumentando a velocidade (uma tabela menor aumenta a velocidade).
</para>
<para>A visão de hoje é que o roteamento será mais hierárquico para redes com somente 1 ISP. Em redes com mais de 1 conexão, isto não é possível, e está sujeita a sistemas multi-homed (informações de 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>Tamanho de prefixo (também conhecido como "netmasks")</title>
<para>Semelhante ao IPv4, a rede roteável entra em cena. Por causa da notação do padrão de máscara de rede (128 bits) não parecer bom, os designers utilizaram o mesmo método utilizado no IPv4, chamado Classless Inter Domain Routing (CIDR,<ulink url="http://www.faqs.org/rfcs/rfc1519.html">RFC 1519 / Classless Inter-Domain Routing</ulink>)o qual especifica o número de bits do endereço IP que será usado para o roteamento. E ele também é chamado notação "slash".</para>
<para>Exemplo:</para><screen>
<![CDATA[2001:0db8:100:1:2:3:4:5/48
]]></screen><para>Esta notação pode ser expandida:</para><itemizedlist>
<listitem><para>Rede:</para></listitem></itemizedlist><screen>
<![CDATA[2001:0db8:0100:0000:0000:0000:0000:0000
]]></screen><itemizedlist>
<listitem><para>Máscara de rede:</para></listitem></itemizedlist><screen>
<![CDATA[ffff:ffff:ffff:0000:0000:0000:0000:0000
]]></screen></sect2><sect2>
<title>Encontrando uma rota</title>
<para>Em circunstancias normais, (sem QoS), a procura em uma tabela de roteamento resulta na rota mais adequada com o número mais significante de bits do endereço. Em outras palavras, a rota com o maior prefixo tem a preferencia.</para>
<para>Por exemplo, se uma tabela de rotas mostra as seguintes entradas (a lista é parcial):</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>Os endereços de destino mostrados dos pacotes IPv6 serão roteados através das interfaces mostradas</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" -->Verificação do sistema para IPv6</title>
<para>Antes de voce começar a utilizar o IPv6 em uma máquina com Linux, é necessário testar para saber se seu sistema tem o suporte ao protocolo. Talvez voce tenha que fazer algum ajuste para prepara-lo antes de começar a usar.</para><sect1 id='systemcheck-kernel' >
<title><!-- anchor id="systemcheck-kernel" -->Kernel com IPv6</title>
<para>As distribuições mais novas de Linux já tem o kernel com suporte ao IPv6, e este suporte geralmente acontece com a compilação em módulos, mas é possível que estes módulos sejam carregados no momento do boot.</para>
<para>Nota: voce não deve usar o kernel da série 2.2, porque ele já não é mais atualizado. A série 2.4 também já não tem todas as atualizações de acordo com as últimas RFC's, então recomendamos utilizar um kernel da série 2.6.</para><sect2>
<title>Verificação do suporte a IPv6 no kernel utilizado</title>
<para>Para verificar se o seu kernel já está com o suporte a IPv6 habilitado, de uma olhada nos arquivos do diretório /proc. A seguinte entrada deve existir:</para><screen>
<![CDATA[/proc/net/if_inet6
]]></screen><para>Para quem gosta de scripts, é possível usar estes comandos:</para><screen>
<![CDATA[# test -f /proc/net/if_inet6 && echo "Running kernel is IPv6 ready"
]]></screen><para>Se este teste falhar, provavelmente seu sistema não está com os módulos de IPv6 carregados.</para></sect2><sect2>
<title>Tentando carregar os módulos para o IPv6</title>
<para>Voce pode tentar carregar os módulos do IPv6 com o comando</para><screen>
<![CDATA[# modprobe ipv6
]]></screen><para>Se a carga ocorreu sem problemas, verifique o status com estes comandos:</para><screen>
<![CDATA[# lsmod |grep -w 'ipv6' && echo "IPv6 module successfully loaded"
]]></screen><para>Depois disso, rode os comandos novamente do item 4.1.1 para ter certeza de que está tudo certo.</para>
<para>Note: a remoção do módulo (rmmod) não é suportada, e recomendo não utilizar, pois pode haver alguma instabilidade no sistema.</para><sect3>
<title>Carga automática do módulo</title>
<para>É possível automatizar a carga do módulo IPv6 conforme seja necessário. Para isto, basta adicionar a seguinte entrada no arquivo de configuração (/etc/modules.conf ou /etc/conf.modules):</para><screen>
<![CDATA[alias net-pf-10 ipv6 # automatically load IPv6 module on demand
]]></screen><para>Também é possível desabilitar a carga do módulo automaticamente usando a seguinte entrada:</para><screen>
<![CDATA[alias net-pf-10 off # disable automatically load of IPv6 module on demand
]]></screen><para>Nota: no kernel da série 2.6, o mecanismo carregador de módulos mudou, e o novo arquivo de configuração é o /etc/modprobe.conf.</para></sect3></sect2><sect2>
<title>Compilando o kernel 2.6 para suportar o IPv6</title>
<para>Se os dois resultados acima foram negativos, e o seu kernel não tem suporte para o IPv6, então voce tem algumas coisas a fazer:</para><itemizedlist>
<listitem><para>Atualizar a sua distribuição para uma que suporte o IPv6 (recomendado para os novatos)</para></listitem><listitem><para>Compilar um novo kernel (fácil, se voce souber quais opções são necessárias)</para></listitem><listitem><para>Recompilar os fontes do kernel dado pela sua distribuição (nem sempre tão fácil)</para></listitem><listitem><para>Compilar um kernel com as extensões USAGI</para></listitem></itemizedlist><para>Se voce decidir compilar um kernel, voce precisa ter alguma experiencia nisso e também ler o<ulink url="http://www.tldp.org/HOWTO/Kernel-HOWTO.html">Linux Kernel HOWTO</ulink>.</para>
<para>Uma comparação entre o kernel vanilla e as extensões USAGI está disponível aqui<ulink url="http://www.bieringer.de/linux/IPv6/status/IPv6+Linux-status-kernel.html">IPv6+Linux-Status-Kernel</ulink>.</para><sect3>
<title>Compilando um kernel vanilla</title>
<para>Mais detalhes e dicas sobre a compilação de um kernel com suporte a IPv6 pode ser encontrado em<ulink url="http://www.bieringer.de/linux/IPv6/IPv6-HOWTO/IPv6-HOWTO-2.html#kernel">IPv6-HOWTO-2#kernel</ulink>.</para>
<para>Nota: voce deve usar, sempre que possível, um kernel da séria 2.6, uma vez que o suporte ao IPv6 na série 2.4 já não teve as últimas atualizações definidas nas RFC's, e a série 2.2 não tem mais o suporte atualizado ou mesmo mantido por alguém.</para></sect3><sect3>
<title>Compilando um kernel com as extensões USAGI</title>
<para>Para a família vanilla de kernel, recomendado somente para usuários avançados, os quais já estão familiarizados com o IPv6 e com compilação de kernel. Veja também<ulink url="http://www.linux-ipv6.org/faq.html">USAGI project / FAQ</ulink> e <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">Mirror</ulink>).</para></sect3></sect2><sect2>
<title>Dispositivos de rede com suporte a IPv6</title>
<para>Nem todos os dispositivos de rede tem suporte (ou terão) para transportar pacotes IPv6. Um status atualizado pode ser encontrado em<ulink url="http://www.bieringer.de/linux/IPv6/status/IPv6+Linux-status-kernel.html#transport">IPv6+Linux-status-kernel.html#transport</ulink>.</para>
<para>O maior problema disso é causado na implementação da camada de rede, já que o pacote IPv6 não é reconhecido pelo cabeçalho IP (6 ao invés de 4). Ele é reconhecido pelo protocolo da camada 2 (transporte). Da mesma maneira, qualquer protocolo da camada 2 que não usa numeração de protocolo não conseguirá encaminhar os pacotes IPv6.</para>
<para>Nota: mesmo assim o pacote ainda é transportado pelo link, mas no lado receptor, o encaminhamento não ocorrerá (voce pode verificar isso com a utilização do tcpdump).</para><sect3>
<title>Estes links nunca suportarão IPv6</title>
<itemizedlist>
<listitem><para>Serial Line IP (SLIP, <ulink url="http://www.faqs.org/rfcs/rfc1055.html">RFC 1055 / SLIP</ulink>), deveria ser chamado de SLIPv4, nome do dispositivo: slX</para></listitem><listitem><para>Parallel Line IP (PLIP), que nem o SLIP, nome do dispositivo: plipX</para></listitem><listitem><para>ISDN com encapsulamento rawip, nome do dispositivo: isdnX</para></listitem></itemizedlist></sect3><sect3>
<title>Este link atualmente não suporta IPv6</title>
<itemizedlist>
<listitem><para>ISDN com encapsulamento syncppp, nome do dispositivo: ipppX (problema de projeto do ipppd, que deveria ter sido resolvido com um PPP mais generalista na série de kernel 2.5)</para></listitem></itemizedlist></sect3></sect2></sect1><sect1>
<title>Ferramentas de configuração de rede que suportam IPv6</title>
<para>Voce não irá muito longe, se voce estiver rodando um kernel com suporte a IPv6, mas não tiver ferramentas que o ajudem a configurar o IPv6. Existem vários pacotes para ajudá-lo neste trabalho.</para><sect2>
<title>Pacote net-tools</title>
<para>O pacote net-tools inclui algumas ferramentas como ifconfig e route, que ajudam a configurar uma interface em IPv6. Veja a saída dos comandos ifconfig -? ou route -?, se eles mostrarem algo parecido com IPv6 ou inet6, então a ferramenta tem suporte a IPv6.</para>
<para>Novamente, para quem gosta de scripts:</para><screen>
<![CDATA[# /sbin/ifconfig -? 2>& 1|grep -qw 'inet6' && echo "utility 'ifconfig' is
¬ IPv6-ready"
]]></screen><para>Verificando o route:</para><screen>
<![CDATA[# /sbin/route -? 2>& 1|grep -qw 'inet6' && echo "utility 'route' is IPv6-ready"
]]></screen></sect2><sect2>
<title>Pacote iproute</title>
<para>Alexey N. Kuznetsov (atual mantenedor do código de rede no Linux) criou um grupo de ferramentas que configuram redes através do dispositivo netlink. O uso destas ferramentas dá mais funcionalidades do que as do pacote net-tools, mas elas não estão muito bem documentadas e não são para os fracos de coração.</para><screen>
<![CDATA[# /sbin/ip 2>&1 |grep -qw 'inet6' && echo "utility 'ip' is IPv6-ready"
]]></screen><para>Se o programa /sbin/ip não for encontrado em seu sistema, então eu recomendo que voce instale o pacote iproute.</para><itemizedlist>
<listitem><para>Voce pode pega-lo através de sua distribuição (se houver)</para></listitem><listitem><para>Voce pode procurar o pacote RPM em<ulink url="http://rpmfind.net/linux/rpm2html/search.php?query=iproute">RPMfind/iproute</ulink> (em alguns casos é recomendada a reconstrução do SRPMS)</para></listitem></itemizedlist></sect2></sect1><sect1>
<title>Programas de teste e debug IPv6</title>
<para>Após a preparação do seu sistema para o IPv6, está na hora de usar este protocolo para a sua comunicação com outros sistemas. Primeiro voce deve aprender como analisar os pacotes através de um sniffer. Isto é altamente recomendável para que qualquer debug ou troubleshooting seja feito de maneira rápida.</para><sect2 id='program-ping6.' >
<title><!-- anchor id="program-ping6." -->Ping IPv6</title>
<para>Este programa está incluído no pacote iputils. Seu objetivo é enviar e testar o transporte de pacotes ICMPv6 echo-request packets e aguardar pelos pacotes ICMPv6 echo-reply.</para>
<para>Uso</para><screen>
<![CDATA[# ping6 <hostwithipv6address>
# ping6 <ipv6address>
# ping6 [-I <device>] <link-local-ipv6address>
]]></screen><para>Exemplo</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>Dica: o comando ping6 precisa de acesso direto ao socket e por isso precisa de permissão de root. Então se usuários comuns (não-root) tentarem usar o ping6 e não obtiverem sucesso, podem ser um dos dois problemas:</para><orderedlist>
<listitem><para>ping6 não está na variável PATH deste usuário (provavelmente porque o ping6 é geralmente localizado em /usr/sbin, e adicionar este diretório ao path do usuário comum não é muito recomendado)</para></listitem><listitem><para>ping6 não executa corretamente, geralmente porque faltam permissões de root. A sugestão neste caso é executar o comando chmod u+s /usr/sbin/ping6 para permitir o uso do programa.</para></listitem></orderedlist><sect3>
<title>Especificando a interface para o ping em IPv6</title>
<para>Ao usar um endereço link-local para pingar alguém em IPv6 o kernel pode não reconhecer ou saber através de qual interface (física ou virtual) o pacote deve ser enviado. Por causa disso, a seguinte mensagem de erro deve aparecer:</para><screen>
<![CDATA[# ping6 fe80::212:34ff:fe12:3456
connect: Invalid argument
]]></screen><para>Neste caso, voce precisa especificar qual interface deve ser usada para enviar o pacote, como mostrado abaixo:</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></sect3><sect3>
<title>Ping6 para endereços multicast</title>
<para>Um mecanismo interessante para detectar hosts com endereço IPv6 é pingar o endereço all-node multicast:</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>Diferente do IPv4, onde as respostas ao ping para endereços de broadcast podem ser desabilitadas, em IPv6 este comportamento não pode ser desabilitado, exceto pela utilização de um firewall IPv6 local.</para></sect3></sect2><sect2 id='program-traceroute6.' >
<title><!-- anchor id="program-traceroute6." -->Traceroute6 IPv6</title>
<para>Este programa geralmente está incluso no pacote iputils. É um programa conhecido, similar ao do IPv4. Veja o exemplo:</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>Nota: diferente das versões mais atuais co traceroute do IPv4, que usa pacotes ICMPv4 echo-request e pacotes UDP (default), o traceroute do IPv6 só é capaz de enviar pacotes UDP. Como voce já deve saber, pacotes ICMP echo-request são mais aceitos pelos firewalls e listas de acesso (ACL) de routers do que pacotes UDP.</para></sect2><sect2 id='program-tracepath6.' >
<title><!-- anchor id="program-tracepath6." -->Tracepath6 IPv6</title>
<para>Este programa costuma estar incluído no pacote iputils. É um programa similar ao traceroute6 e ele traça o caminho para um endereço dado, descobrindo o MTU ao longo deste caminho. Veja o exemplo abaixo:</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" -->Tcpdump IPv6</title>
<para>No Linux, o tcpdump é a maior ferramenta para a captura de pacotes. Abaixo estão alguns exemplos. O suporte ao IPv6 já está adicionado nas versões 3.6 ou superiores deste programa. </para>
<para>O tcpdump usa diversas expressões e argumentos para realizar a filtragem de pacotes para minimizar o volume de informações apresentado:</para><itemizedlist>
<listitem><para>icmp6: filtra o tráfego ICMPv6 nativo</para></listitem><listitem><para>ip6: filtra o tráfego nativo IPv6 (incluindo ICMPv6)</para></listitem><listitem><para>proto ipv6: filtra o tráfego IPv6 tunelado em IPv4 (IPv6-in-IPv4)</para></listitem><listitem><para>not port ssh: para evitar mostrar os pacotes se voce estiver usando uma conexão SSH</para></listitem></itemizedlist><para>Além disso, algumas opções são muito úteis para obter mais informações de cada pacote, bem interessantes para pacotes ICMPv6:</para><itemizedlist>
<listitem><para>"-s 512": aumenta o tamanho do pacote capturado para 512 bytes. Se for usada a opção "-s 0" o pacote é capturado por inteiro</para></listitem><listitem><para>"-s 512": aumenta o tamanho do pacote capturado para 512 bytes. Se for usada a opção "-s 0" o pacote é capturado por inteiro</para></listitem><listitem><para>"-n": não resolve os endereços para nomes, muito útil quando o DNS reverso não está funcionando corretamente</para></listitem></itemizedlist><sect3>
<title>Ping IPv6 para 2001:0db8:100:f101::1 nativo sobre um link local</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>Ping IPv6 para 2001:0db8:100::1 roteado através de um túnel IPv6-in-IPv4</title>
<para>Os endereços IPv4 1.2.3.4 e 5.6.7.8 são os tunnel endpoints (todos os endereços são exemplos)</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>Programas com suporte a IPv6</title>
<para>As distribuições Linux atuais já contém a maioria dos serviços Cliente e Servidor em IPv6. Veja aqui em<ulink url="http://www.bieringer.de/linux/IPv6/status/IPv6+Linux-status-distributions.html">IPv6+Linux-Status-Distribution</ulink>. Se ainda não estiver incluído, voce pode verificar em <ulink url="http://www.bieringer.de/linux/IPv6/status/IPv6+Linux-status-apps.html">IPv6 & Linux - Current Status - Applications</ulink> se o programa já está portado para o IPv6 e pronto para o Linux. Para os programas mais comuns existem dicas disponíveis em<ulink url="http://www.bieringer.de/linux/IPv6/IPv6-HOWTO/IPv6-HOWTO-3.html">IPv6 & Linux - HowTo - Part 3</ulink> e <ulink url="http://www.bieringer.de/linux/IPv6/IPv6-HOWTO/IPv6-HOWTO-4.html">IPv6 & Linux - HowTo - Part 4</ulink>.</para></sect1><sect1>
<title>Programas cliente com suporte a IPv6</title>
<para>Para executar os testes abaixo, é necessário que seu sistema seja um host IPv6 e os exemplos mostrados podem ser feitos se voce tiver acesso ao 6bone.</para><sect2>
<title>Verificando a resolução DNS para endereços IPv6</title>
<para>Por causa dos updates de segurança aplicados nos últimos anos, o Servidor DNS que roda a versão mais atual já tem a capacidade de entender os endereços IPv6 tipo AAAA (o named A6 mais novo ainda não é usado porque só no BIND9 o suporte aos root domais ARPA IP6 está em uso). Um teste bem simples para ver o sistema resolver endereços IPv6 é:</para><screen>
<![CDATA[# host -t AAAA www.join.uni-muenster.de
]]></screen><para>e a resposta deve ser alguma coisa parecida com isso:</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>Cliente de Telnet com suporte a IPv6</title>
<para>Cliente de telnet com suporte a IPv6 estão disponíveis. Um teste simples pode ser feito com o comando:</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>Se o cliente de telnet não entende o IPv6, a mensagem de erro será "cannot resolve hostname".</para></sect2><sect2>
<title>SSH com suporte a IPv6</title>
<sect3>
<title>openssh</title>
<para>As versões atuais do openssh já suportam IPv6. Dependendo da configuração utilizada, ele tem dois comportamentos:</para><itemizedlist>
<listitem><para>--without-ipv4-default: o cliente tenta se conectar primeiro em IPv6, e ele usa IPv4 se a conexão em IPv6 não for estabelecida</para></listitem><listitem><para>--with-ipv4-default: a conexão é feita primeiro em IPv4 e para usar algum endereço IPv6, deve-se forçar a sua utilização. Veja o exemplo</para></listitem></itemizedlist><screen>
<![CDATA[$ ssh -6 ::1
user@::1's password: ******
[user@ipv6host user]$
]]></screen><para>Se seu cliente ssh não entende a opção "-6" então o suporte a IPv6 não está habilitado, como muitos pacotes de ssh na versão 1.</para></sect3><sect3>
<title>ssh.com</title>
<para>O software cliente e servidor SSH da SSH.com já suporta o IPv6 e agora ele é grátis para todos os Linux e FreeBSD, independente se o seu uso é pessoal ou comercial.</para></sect3></sect2><sect2>
<title>Browsers com suporte a IPv6</title>
<para>O status atual dos browsers com suporte a IPv6 pode ser encontrado aqui<ulink url="http://www.bieringer.de/linux/IPv6/status/IPv6+Linux-status-apps.html#HTTP">IPv6+Linux-status-apps.html#HTTP</ulink>.</para>
<para>A maioria deles ainda tem problemas pendentes, tais como:</para><orderedlist>
<listitem><para>Se a configuração de proxy usa somente endereços IPv4, os pedidos em IPv6 também serão enviados a este proxy, emas como o proxy não saberá resolver o endereço, o pedido não vai funcionar. A única solução é verificar se o seu software de proxy tem alguma atualização para resolver este problema.</para></listitem><listitem><para>Configuração automática de proxy (*.pac) não pode ser utilizada para manipular pedidos em IPv6 de maneira diferenciada (exemplo: não usar o proxy para o IPv6) por causa da sua natureza (escritos em Javascript e muito encrustado no código fonte, como é visto no Mozilla).</para></listitem></orderedlist><para>As versões anteriores de browsers também não entenderiam uma URL com o endereço IPv6, como no exemplo <ulink url="http://[2a01:238:4281:8600:812a:5915:8d24:58f3]/">http://[2a01:238:4281:8600:812a:5915:8d24:58f3]/</ulink> (isto funciona somente se a URL for usada em um browser que suporte IPv6).</para>
<para>Um pequeno teste é tentar este endereço em um browser sem o proxy configurado.</para><sect3>
<title>URLs para teste</title>
<para>Um bom ponto de partida para browsers que usam IPv6 é o site<ulink url="http://www.kame.net/">http://www.kame.net/</ulink>.Se a tartaruga da página estiver animada, a sua conexão é em IPv6. caso contrário, a tartaruga ficará parada.</para></sect3></sect2></sect1><sect1>
<title>Programas servidores com suporte a IPv6</title>
<para>Nesta parte deste HowTo, outros softwares cliente IPv6 são mencionados, assim como dicas para servidores com suporte a IPv6, como sshd, httpd, telnetd, etc, assim como outras dicas em<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 (checagem de sistema com suporte a IPv6)</title>
<sect2>
<title>Usando ferramentas</title>
<sect3>
<title>Q: Não consigo pingar (ping6) o endereço link-local</title>
<para>Mensagem de erro: "connect: Invalid argument"</para>
<para>O kernel não conhece qual interface física ou virtual voce quer utilizar para enviar o pacote ICMPv6. Assim, a solução poderia aparecer assim.</para>
<para>Solução:: Determine a interface, como: "ping6 -I eth0 fe80::2e0:18ff:fe90:9205", veja também<link linkend="program-ping6.">program ping6 usage</link>.</para></sect3><sect3>
<title>Q: Não consigo pingar (ping6) ou efetuar traceroute (traceroute6) como usuário normal</title>
<para>Menagem de erro: "icmp socket: Operation not permitted"</para>
<para>Estes utilitários criam pacotes especiais ICMPv6 e então os enviam. Isto é feito usando conexões brutas no kernel. Mas estas conexões somente podem ser usadas pelo usuário "root". Desta forma, esta mensagem vai aparecer para os usuários normais.</para>
<para>Solução: Se for realmente necessário que todos os usuários utilizem estas ferramentas, voce pode adicionar o "suid" bit usando o comando "chmod u+s /caminho/para/o/programa", e veja também este link<link linkend="program-ping6.">program ping6 usage</link>Se nem todos os usuários necessitam usá-lo, voce pode mudar o grupo do programa, para "wheel" por exemplo, e todos os usuários pertencentes a este grupo poderão executar estes programas sem problema. Voce também pode configurar o "sudo" para isto também.</para></sect3></sect2></sect1></chapter><chapter id='chapter-configuration-interface' >
<title><!-- anchor id="chapter-configuration-interface" -->Configurando interfaces</title>
<sect1>
<title>Dispositivos de rede diferentes</title>
<para>Em um nó, podem haver diferentes tipos de interfaces. Elas podem estar agrupadas em classes</para><itemizedlist>
<listitem><para>Físicas, como eth0, tr0</para></listitem><listitem><para>Virtuais, como ppp0, tun0, tap0, sit0, isdn0, ippp0</para></listitem></itemizedlist><sect2>
<title>Físicas</title>
<para>As interfaces físicas, como Ethernet ou Token Ring são exemplos de interfaces comuns que não precisam de qualquer tipo de tratamento especial.</para></sect2><sect2>
<title>Virtuais</title>
<para>As interfaces virtuais sempre precisam de algum tratamento especial</para><sect3>
<title>Interfaces Túnel IPv6-in-IPv4</title>
<para>Estas interfaces normalmente recebem o nome sit<emphasis>x</emphasis>. O nome sit é uma atalho para Simple Internet Transition. Esta interface tem a capacidade de encapsular os pacotes IPv6 em pacotes IPv4 e tunelar estes pacotes para um endpoint remoto.</para>
<para>A interface sit0 tem um papel especial e não pode ser usada para túneis dedicados.</para></sect3><sect3>
<title>Interfaces PPP</title>
<para>As interfaces PPP obteem sua capacidade IPv6 do daemon PPP para IPv6.</para></sect3><sect3>
<title>Interfaces ISDN HDLC</title>
<para>A capacidade IPv6 para HDLC com encapsulamento IP já está contida no kernel</para></sect3><sect3>
<title>Interfaces ISDN PPP </title>
<para>A interface ISDN PPP (ippp) não tem o suporte ao IPv6 no kernel. E também não há qualquer plano para suportar, porque o kernel da série 2.5 ele será substituído por uma camada de interface PPP mais genérica.</para></sect3><sect3>
<title>SLIP + PLIP</title>
<para>Como mencionado anteriormente neste documento, esta interface não suporta o IPv6 (no envio até que funciona, mas a recepção não funciona).</para></sect3><sect3>
<title>Dispositivo Ether-tap</title>
<para>Dispositivos Ether-tap já possuem o IPv6 habilitado e o stateless configurado. Para usá-lo, o módulo "ethertap" deve ter sido carregado antes.</para></sect3><sect3>
<title>Dispositivos tun</title>
<para>Atualmente não foi testado por mim</para></sect3><sect3>
<title>ATM</title>
<para>01/2002: Não são mais suportados pelo kernel vanilla, mas somente pelas extensões USAGI</para></sect3><sect3>
<title>Outras</title>
<para>Eu esqueci de alguma ?</para></sect3></sect2></sect1><sect1>
<title>Colocando as interfaces em up e down</title>
<para>Existem dois métodos usados para colocar as interfaces em up ou down..</para><sect2>
<title>Usando "ip"</title>
<para>Uso: </para><screen>
<![CDATA[# ip link set dev <interface> up
# ip link set dev <interface> down
]]></screen><para>Exemplo:</para><screen>
<![CDATA[
# ip link set dev eth0 up
# ip link set dev eth0 down
]]></screen></sect2><sect2>
<title>Usando "ifconfig"</title>
<para>Uso: </para><screen>
<![CDATA[# /sbin/ifconfig <interface> up
# /sbin/ifconfig <interface> down
]]></screen><para>Exemplo:</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" -->Configurando endereços IPv6</title>
<para>Existem várias maneiras de configurar um endereço IPv6 em uma interface. As mais comuns são "ifconfig" e "ip".</para><sect1>
<title>Mostrando os endereços IPv6 existentes</title>
<para>Antes de mais nada, voce precisa checar se já existe algum endereço IPv6 configurado e qual é o seu tipo (talvez atribuído durante uma auto-configuração stateless).</para><sect2>
<title>Usando "ip"</title>
<para>Uso:</para><screen>
<![CDATA[# /sbin/ip -6 addr show dev <interface>
]]></screen><para>Exemplo para uma configuração de host estático:</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>Exemplo de um host auto-configurado</para>
<para>Aqui voce pode ver a configuração de IPv6 através do processo auto-magically, além do tempo de vida do endereço.</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>Usando "ifconfig"</title>
<para>Uso:</para><screen>
<![CDATA[# /sbin/ifconfig <interface>
]]></screen><para>Exemplo (a saída foi filtrada com o grep para mostrar somente os endereços IPv6). Aqui voce pode ver diferentes endereços IPv6 com diferentes escopos.</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>Adicionando um endereço IPv6</title>
<para>A adição de um endereço IPv6 é muito similar ao endereço "IP ALIAS" nas interfaces IPv4 no Linux.</para><sect2>
<title>Usando "ip"</title>
<para>Uso: </para><screen>
<![CDATA[# /sbin/ip -6 addr add <ipv6address>/<prefixlength> dev <interface>
]]></screen><para>Exemplo:</para><screen>
<![CDATA[# /sbin/ip -6 addr add 2001:0db8:0:f101::1/64 dev eth0
]]></screen></sect2><sect2>
<title>Usando "ifconfig"</title>
<para>Uso: </para><screen>
<![CDATA[# /sbin/ifconfig <interface> inet6 add <ipv6address>/<prefixlength>
]]></screen><para>Exemplo:</para><screen>
<![CDATA[# /sbin/ifconfig eth0 inet6 add 2001:0db8:0:f101::1/64
]]></screen></sect2></sect1><sect1>
<title>Removendo um endereço IPv6</title>
<para>Como esta ação não é tão necessária, tenha cuidado ao remover endereços IPv6 que não existem, pois ao realizar esta ação em kernels mais antigos, voce pode causar um grande estrago no sistema.</para><sect2>
<title>Usando "ip"</title>
<para>Uso: </para><screen>
<![CDATA[# /sbin/ip -6 addr del <ipv6address>/<prefixlength> dev <interface>
]]></screen><para>Exemplo:</para><screen>
<![CDATA[# /sbin/ip -6 addr del 2001:0db8:0:f101::1/64 dev eth0
]]></screen></sect2><sect2>
<title>Usando "ifconfig"</title>
<para>Uso:</para><screen>
<![CDATA[# /sbin/ifconfig <interface> inet6 del <ipv6address>/<prefixlength>
]]></screen><para>Exemplo:</para><screen>
<![CDATA[# /sbin/ifconfig eth0 inet6 del 2001:0db8:0:f101::1/64
]]></screen></sect2></sect1></chapter><chapter id='chapter-configuration-route' >
<title><!-- anchor id="chapter-configuration-route" -->Configurando rotas IPv6</title>
<para>Se voce quer deixar seu link e quer enviar pacotes a todo o mundo que está só aguardando a sua conexão em IPv6, voce vai precisar de uma rota. Se já houver um router com IPv6 habilitado (e uma rota para ele), estes passos abaixo vão te ensinar como adicionar mais rotas em IPv6.</para><sect1>
<title>Mostrando as rotas IPv6 existentes</title>
<para>Antes de mais nada, é interessante verificar quais são as rotas IPv6 já configuradas (talvez atribuído durante uma auto-configuração).</para><sect2>
<title>Usando "ip"</title>
<para>Uso:</para><screen>
<![CDATA[# /sbin/ip -6 route show [dev <device>]
]]></screen><para>Exemplo:</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>Usando "route"</title>
<para>Uso: </para><screen>
<![CDATA[# /sbin/route -A inet6
]]></screen><para>Exemplo (a saída foi filtrada para a interface eth0). Aqui voce pode ver rotas IPv6 para diferentes endereços em uma única interface.</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>Adicionando uma rota IPv6 através de um gateway</title>
<para>Bastante necessário quando se quer acessar outras redes com IPv6 usando um router IPv6-enabled em seu link.</para><sect2>
<title>Usando "ip"</title>
<para>Uso:</para><screen>
<![CDATA[# /sbin/ip -6 route add <ipv6network>/<prefixlength> via <ipv6address>
¬ [dev <device>]
]]></screen><para>Exemplo:</para><screen>
<![CDATA[# /sbin/ip -6 route add 2000::/3 via 2001:0db8:0:f101::1
]]></screen></sect2><sect2>
<title>Usando "route"</title>
<para>Uso: </para><screen>
<![CDATA[# /sbin/route -A inet6 add <ipv6network>/<prefixlength> gw
¬ <ipv6address> [dev <device>]
]]></screen><para>Um dispositivo pode ser necessário se o dispositivo do endereço IPv6 do gateway for um dispositivo link local.</para>
<para>Veja o exemplo abaixo, como adicionar uma rota para todos os endereços globais (2000::/3) através do gateway 2001:0db8:0:f101::1</para><screen>
<![CDATA[# /sbin/route -A inet6 add 2000::/3 gw 2001:0db8:0:f101::1
]]></screen></sect2></sect1><sect1>
<title>Removendo uma rota IPv6 através de um gateway</title>
<para>Não é geralmente usada no modo manual, pois sugerimos a utilização de scripts ou shutdown nas interfaces (todas ou por interface)</para><sect2>
<title>Usando "ip"</title>
<para>Uso:</para><screen>
<![CDATA[# /sbin/ip -6 route del <ipv6network>/<prefixlength> via <ipv6address>
¬ [dev <device>]
]]></screen><para>Exemplo:</para><screen>
<![CDATA[# /sbin/ip -6 route del 2000::/3 via 2001:0db8:0:f101::1
]]></screen></sect2><sect2>
<title>Usando "route"</title>
<para>Uso: </para><screen>
<![CDATA[# /sbin/route -A inet6 del <network>/<prefixlength> gw <ipv6address> [dev
¬ <device>]
]]></screen><para>Exemplo para remover a rota adicionada anteriormente (acima):</para><screen>
<![CDATA[# /sbin/route -A inet6 del 2000::/3 gw 2001:0db8:0:f101::1
]]></screen></sect2></sect1><sect1>
<title>Adicionando uma rota IPv6 através de uma interface</title>
<para>Nem sempre usado, mas quando usado é em links ponto a ponto.</para><sect2>
<title>Usando "ip"</title>
<para>Uso:</para><screen>
<![CDATA[# /sbin/ip -6 route add <ipv6network>/<prefixlength> dev <device>
¬ metric 1
]]></screen><para>Exemplo:</para><screen>
<![CDATA[# /sbin/ip -6 route add 2000::/3 dev eth0 metric 1
]]></screen><para>A métrica "1" é usada aqui para se manter compatível com as métricas usadas pelo comando route, já que a métrica default ao se usar "ip" é "1024".</para></sect2><sect2>
<title>Usando "route"</title>
<para>Uso:</para><screen>
<![CDATA[# /sbin/route -A inet6 add <ipv6network>/<prefixlength> dev <device>
]]></screen><para>Exemplo:</para><screen>
<![CDATA[# /sbin/route -A inet6 add 2000::/3 dev eth0
]]></screen></sect2></sect1><sect1>
<title>Removendo uma rota IPv6 através de uma interface</title>
<para>Nem sempre utilizado manualmente, pois recomenda-se a utilização de scripts.</para><sect2>
<title>Usando "ip"</title>
<para>Uso:</para><screen>
<![CDATA[# /sbin/ip -6 route del <ipv6network>/<prefixlength> dev <device>
]]></screen><para>Exemplo:</para><screen>
<![CDATA[# /sbin/ip -6 route del 2000::/3 dev eth0
]]></screen></sect2><sect2>
<title>Usando "route"</title>
<para>Uso:</para><screen>
<![CDATA[# /sbin/route -A inet6 del <network>/<prefixlength> dev <device>
]]></screen><para>Exemplo:</para><screen>
<![CDATA[# /sbin/route -A inet6 del 2000::/3 dev eth0
]]></screen></sect2></sect1><sect1>
<title>FAQ para rotas em IPv6</title>
<sect2>
<title>Suporte de uma rota default IPv6</title>
<para>Uma boa idéia do IPv6 foi o roteamento hierárquico, o que proporcionaria a necessidade de menos rotas nos roteadores.</para>
<para>Aqui estão alguns problemas no kernel atual do Linux:</para><sect3>
<title>Clientes (não roteando qualquer pacote!)</title>
<para>Um cliente pode configurar uma rota default prefixo "::/0", mas eles também aprendem uma rota no processo de auto configuração, ex.: uso do radvd no link abaixo mostra:</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>Roteadores em caso de packet forwarding</title>
<para>Os linux mais velhos (pelo menos inferiores ao kernel 2.4.17) não suportam rotas default. Voce pode configura-las, mas a pesquisa na tabela vai retornar uma falha quando deveria ser encaminhado (intenção normal do roteador). Se voce ainda está usando uma versão antiga de kernel, as "rotas default" podem ser configuradas usando o prefixo de endereço global "2000::/3".</para>
<para>Nota: tome cuidado com as rotas default sem filtragem de endereços em roteadores de borda, pois o tráfego multicast ou site-local pode sair para o mundo.</para></sect3></sect2></sect1></chapter><chapter id='chapter-Neighbor-Discovery' >
<title><!-- anchor id="chapter-Neighbor-Discovery" -->Descoberta de vizinhos</title>
<para>A descoberta de vizinhos funciona como um sucessor do ARP (Address Resolution Protocol) em IPv4, no mundo IPv6. Voce pode obter estas informações sobre os vizinhos atuais, e adicionalmente voce pode configurar e excluir entradas. O kernel mantém o rastreamento das descobertas bem sucedidas (como no ARP em IPv4). Voce pode pesquisar as entradas nesta tabela usando o comando "ip".</para><sect1>
<title>Mostrando os vizinhos usando "ip"</title>
<para>Com o comando abaixo voce pode verificar a tabela de vizinhos aprendida ou configurada</para><screen>
<![CDATA[# ip -6 neigh show [dev <device>]
]]></screen><para>O exemplo a seguir mostra um vizinho, o qual é um router acessível</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>Manipulando a tabela de vizinhos usando "ip"</title>
<sect2>
<title>Adicionando uma entrada manualmente</title>
<para>Com o comando abaixo, voce consegue adicionar uma entrada manualmente</para><screen>
<![CDATA[# ip -6 neigh add <IPv6 address> lladdr <link-layer address> dev <device>
]]></screen><para>Exemplo:</para><screen>
<![CDATA[# ip -6 neigh add fec0::1 lladdr 02:01:02:03:04:05 dev eth0
]]></screen></sect2><sect2>
<title>Excluindo uma entrada manualmente</title>
<para>Similar à adição de uma entrada, uma entrada pode ser excluída</para><screen>
<![CDATA[# ip -6 neigh del <IPv6 address> lladdr <link-layer address> dev <device>
]]></screen><para>Exemplo:</para><screen>
<![CDATA[# ip -6 neigh del fec0::1 lladdr 02:01:02:03:04:05 dev eth0
]]></screen></sect2><sect2>
<title>Opções mais avançadas</title>
<para>A ferramenta "ip" não é tão documentada, mas é bem útil e forte. Veja o seu help online para mais informações:</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>Aparentemente algumas opções são somente para o IPv4... e se voce quiser contribuir com mais informações sobre outras opções da ferramenta e usos avançados, por favor, me envie.</para></sect2></sect1></chapter><chapter id='chapter-configuring-ipv6-in-ipv4-tunnels' >
<title><!-- anchor id="chapter-configuring-ipv6-in-ipv4-tunnels" -->Configurando um túnel IPv6-in-IPv4</title>
<para>Se voce quer deixar seu link e ter uma rede IPv6 à sua volta, voce vai precisar de um túnel IPv6-in-IPv4 para acessar a web em modo IPv6.</para>
<para>Existem alguns tipos de mecanismo e também algumas possibilidades da configuração deste túnel.</para><sect1>
<title>Tipos de túneis</title>
<para>Existe mais de uma possibilidade de transportar pacotes IPvb6 em links IPv4.</para><sect2>
<title>Túnel estático ponto a ponto: 6bone</title>
<para>Um túnel ponto a ponto é um túnel dedicado em direção a um ponto final., o qual sabe informações sobre uma rede IPv6A (para rotas de volta) e os endereços IPv4 deste túnel estão definidos na <ulink url="http://www.faqs.org/rfcs/rfc2893.html">RFC 2893 / Transition Mechanisms for IPv6 Hosts and Routers</ulink>. Necessidades:</para><itemizedlist>
<listitem><para>O endereço IPv4 local do túnel precisa ser estático, global, único e acessível a partir da outra ponta</para></listitem><listitem><para>Um prefixo global IPv6 deve ser designado a voce (veja o registro 6bone)</para></listitem><listitem><para>Um ponto final remoto do túnel deve ser capaz de rotear seu prefixo IPv6para seu ponto final local (uma configuração manual pode ser necessária)</para></listitem></itemizedlist></sect2><sect2>
<title>Túnel automático</title>
<para>Um túnel automático acontece quando um nó diretamente conectado a outro nó obtém um IPv4 do outro nó anterior.</para></sect2><sect2 id='tunneling-6to4.' >
<title><!-- anchor id="tunneling-6to4." -->6to4-Tunneling</title>
<para>O túnel 6to4 (<ulink url="http://www.faqs.org/rfcs/rfc3056.html">RFC 3056 / Connection of IPv6 Domains via IPv4 Clouds</ulink>) utiliza um mecanismo simples para criar túneis automáticos. Cada nó com um endereço global único é capaz de ser uma ponta final de um túnel 6to4 (se nenhum firewall no meio do caminho bloquear este tipo de tráfego). Túneis 6to4 não costumam ser túneis um a um. Este tipo de túnel pode ser dividido em Upstream e Downstream. Além disso, um endereço especial IPv6 indica que este nó vai usar o tunelamento 6to4 para se conectar a redes IPv6 mundiais.</para><sect3>
<title>Geração de prefixo 6to4</title>
<para>O endereço 6to4 está definido abaixo (o esquema foi pego da <ulink url="http://www.faqs.org/rfcs/rfc3056.html">RFC 3056 / Connection of IPv6 Domains via IPv4 Clouds</ulink>):</para><screen>
<![CDATA[| 3+13 | 32 | 16 | 64 bits |
+---+------+-----------+--------+--------------------------------+
| FP+TLA | V4ADDR | SLA ID | Interface ID |
| 0x2002 | | | |
+---+------+-----------+--------+--------------------------------+
]]></screen><para>FP e TLA juntos (16 bits) tem o valor 0x2002. V4ADDR é o endereço único IPv4 (em notação hexadecimal). SLA é o identificador de rede (65536 redes locais possíveis) e são usados para representar a sua estrutura de rede local.</para>
<para>Para os gateways, tal prefixo é gerado normalmente usando o SLA ”0000” e o sufixo "::1" (não é uma exigencia, pode ser arbitrário com um escopo local) e então assinalado a uma interface de túnel 6to4. Veja que a Microsoft também utiliza V4ADDR para o sufixo.</para></sect3><sect3>
<title>Tunelamento Upstream 6to4</title>
<para>O nó tem que saber para qual ponta remota de túnel os pacotes IPv4 com pacotes IPv6 devem ser encaminhados. No início dos tempos de tunelamento 6to4, upstreams dedicados aceitavam que os routers fizessem isso. Veja <ulink url="http://www.kfu.com/~nsayer/6to4/">NSayer's 6to4 information</ulink> para uma lista de routers.</para>
<para>Hoje em dia, os routers upstream 6to4 podem ser encontrados automaticamente, usando o endereço de unicast 192.88.99.1. Os protocolos de roteamento se incumbem desta função, veja <ulink url="http://www.faqs.org/rfcs/rfc3068.html">RFC 3068 / An Anycast Prefix for 6to4 Relay Routers</ulink> para mais detalhes. </para></sect3><sect3>
<title>Tunelamento Downstream 6to4</title>
<para>O downstream (6bone -> seu nó com 6to4 habilitado) não é realmente correto e pode variar de um host remoto estranho que originou os pacotes que foram enviados a voce. Existem duas possibilidades:</para><itemizedlist>
<listitem><para>Estes hosts remotos usam endereços 6to4 e enviam os pacotes de volta diretamente a seu nó (veja abaixo)</para></listitem><listitem><para>Estes hosts remotos enviam os pacotes de volta à rede IPv6 e dependendo do roteamento, um router no meio do caminho cria um túnel automaticamente em direção ao seu nó.</para></listitem></itemizedlist></sect3><sect3>
<title>Tráfego 6to4 possível</title>
<itemizedlist>
<listitem><para>6to4 para 6to4: normalmente é um túnel direto entre as duas pontas, ambos habilitados em 6to4</para></listitem><listitem><para>6to4 para não-6to4: é enviado via um túnel upstream</para></listitem><listitem><para>não-6to4 para 6to4: é enviado via um túnel downstream</para></listitem></itemizedlist></sect3></sect2></sect1><sect1>
<title>Mostrando os túneis existentes</title>
<sect2>
<title>Usando "ip"</title>
<para>Uso:</para><screen>
<![CDATA[# /sbin/ip -6 tunnel show [<device>]
]]></screen><para>Exemplo:</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>Usando "route"</title>
<para>Uso:</para><screen>
<![CDATA[# /sbin/route -A inet6
]]></screen><para>Exemplo (a saída está filtrada para mostrar somente os túneis através da interface virtual sit0):</para><screen>
<![CDATA[# /sbin/route -A inet6 | grep "\Wsit0\W*$"
::/96 :: U 256 2 0 sit0
2002::/16 :: UA 256 0 0 sit0
2000::/3 ::193.113.58.75 UG 1 0 0 sit0
fe80::/10 :: UA 256 0 0 sit0
ff00::/8 :: UA 256 0 0 sit0
]]></screen></sect2></sect1><sect1 id='conf-ipv6-in-ipv4-point-to-point-tunnels' >
<title><!-- anchor id="conf-ipv6-in-ipv4-point-to-point-tunnels" -->Configuração de um túnel ponto a ponto</title>
<para>Existem possibilidades para adicionar ou remover um túnel ponto a ponto.</para>
<para>Uma boa informação adicional sobre a configuração de túneis fornecida através do comando ”ip” está aqui <ulink url="http://www.deepspace6.net/docs/iproute2tunnel-en.html">Configuring tunnels with iproute2 (article)</ulink> (<ulink url="http://mirrors.bieringer.de/www.deepspace6.net/docs/iproute2tunnel-en.html">Mirror</ulink>).</para><sect2>
<title>Adicionando túneis ponto a ponto</title>
<sect3>
<title>Usando "ip"</title>
<para>Um método comum para a criação de uma quantidade pequena de túneis.</para>
<para>Use-o para criar um dispositivo túnel (mas não depois, o TTL também deve ser especificado, porque seu valor default é 0).</para><screen>
<![CDATA[# /sbin/ip tunnel add <device> mode sit ttl <ttldefault> remote
¬ <ipv4addressofforeigntunnel> local <ipv4addresslocal>
]]></screen><para>Uso (exemplo genérico para 3 túneis):</para><screen>
<![CDATA[# /sbin/ip tunnel add sit1 mode sit ttl <ttldefault> remote
¬ <ipv4addressofforeigntunnel1> local <ipv4addresslocal>
# /sbin/ip link set dev sit1 up
# /sbin/ip -6 route add <prefixtoroute1> dev sit1 metric 1
# /sbin/ip tunnel add sit2 mode sit ttl <ttldefault>
¬ <ipv4addressofforeigntunnel2> local <ipv4addresslocal>
# /sbin/ip link set dev sit2 up
# /sbin/ip -6 route add <prefixtoroute2> dev sit2 metric 1
# /sbin/ip tunnel add sit3 mode sit ttl <ttldefault>
¬ <ipv4addressofforeigntunnel3> local <ipv4addresslocal>
# /sbin/ip link set dev sit3 up
# /sbin/ip -6 route add <prefixtoroute3> dev sit3 metric 1
]]></screen></sect3><sect3>
<title>Usando "ifconfig" e "route" (obsoleto)</title>
<para>Esta não é uma maneira muito recomendada de se criar um túnel porque ele é um pouco estranho. Não há qualquer problema se voce adicionar somente um, mas se voce for configurar mais de um, voce não poderá desfazer os primeiros túneis criados e deixar os últimos em funcionamento.</para>
<para>Uso (exemplo genérico para 3 túneis):</para><screen>
<![CDATA[# /sbin/ifconfig sit0 up
# /sbin/ifconfig sit0 tunnel <ipv4addressofforeigntunnel1>
# /sbin/ifconfig sit1 up
# /sbin/route -A inet6 add <prefixtoroute1> dev sit1
# /sbin/ifconfig sit0 tunnel <ipv4addressofforeigntunnel2>
# /sbin/ifconfig sit2 up
# /sbin/route -A inet6 add <prefixtoroute2> dev sit2
# /sbin/ifconfig sit0 tunnel <ipv4addressofforeigntunnel3>
# /sbin/ifconfig sit3 up
# /sbin/route -A inet6 add <prefixtoroute3> dev sit3
]]></screen><para>Importante: NÃO USE ISSO, porque esta configuração habilita implicitamente um ”tunelamento automático” de qualquer lugar na internet, e isto é um risco, então não o utilize.</para></sect3><sect3>
<title>Usando somente "route"</title>
<para>Também é possível configurar túneis no modo Non Broadcast Multiple Access (NBMA), pois é uma maneira fácil de adicionar muitos túneis de uma vez. Mas nenhum dos túneis pode ser numerado (o que não é uma característica).</para>
<para>Uso (exemplo genérico para 3 túneis):</para><screen>
<![CDATA[# /sbin/ifconfig sit0 up
# /sbin/route -A inet6 add <prefixtoroute1> gw
¬ ::<ipv4addressofforeigntunnel1> dev sit0
# /sbin/route -A inet6 add <prefixtoroute2> gw
¬ ::<ipv4addressofforeigntunnel2> dev sit0
# /sbin/route -A inet6 add <prefixtoroute3> gw
¬ ::<ipv4addressofforeigntunnel3> dev sit0
]]></screen><para>Importante: NÃO USE ISSO, porque esta configuração habilita implicitamente um ”tunelamento automático” de qualquer lugar na internet, e isto é um risco, então não o utilize.</para></sect3></sect2><sect2>
<title>Removendo os túneis ponto a ponto</title>
<para>Nem sempre é necessário fazer isso manualmente, mas pode ser usado em scripts para uma limpeza ou restart de uma configuração IPv6.</para><sect3>
<title>Usando "ip"</title>
<para>Uso para remover um dispositivo túnel:</para><screen>
<![CDATA[# /sbin/ip tunnel del <device>
]]></screen><para>Uso (exemplo genérico para 3 túneis):</para><screen>
<![CDATA[# /sbin/ip -6 route del <prefixtoroute1> dev sit1
# /sbin/ip link set sit1 down
# /sbin/ip tunnel del sit1
# /sbin/ip -6 route del <prefixtoroute2> dev sit2
# /sbin/ip link set sit2 down
# /sbin/ip tunnel del sit2
# /sbin/ip -6 route del <prefixtoroute3> dev sit3
# /sbin/ip link set sit3 down
# /sbin/ip tunnel del sit3
]]></screen></sect3><sect3>
<title>Usando "ifconfig" e "route" (não é mais usado por ser estranho)</title>
<para>Não somente a criação é estranha, como também o shutdown... voce tem que remover os tuneis na ordem inversa em que eles foram criados.</para>
<para>Uso (exemplo genérico para 3 túneis):</para><screen>
<![CDATA[# /sbin/route -A inet6 del <prefixtoroute3> dev sit3
# /sbin/ifconfig sit3 down
# /sbin/route -A inet6 del <prefixtoroute2> dev sit2
# /sbin/ifconfig sit2 down
# /sbin/route -A inet6 add <prefixtoroute1> dev sit1
# /sbin/ifconfig sit1 down
# /sbin/ifconfig sit0 down