Linux IPv6 HOWTO <author>Author:Peter Bieringer <tt/ pb@bieringer.de / <newline> <newline>譯者: 陳敏劍 <tt/ expns@yahoo.com/ <date>Revision Release 0.31 2002-09-29 Revised by: PB 翻譯日期: 2002-10-14 , 2002-11-19 第二次修正 <abstract> Linux IPv6 HOWTO 的目地是回答在 Linux 作業系統上設定IPv6的基本/進階問題.這份HOWTO為用戶在Linux作業系統上安裝,設定和使用IPv6提供足夠的資訊. </abstract> <!-- Table of contents --> <toc> <sect>概述 <sect1>版本 <p><tscreen><verb> Revision Release 0.31 2002-09-29 Revised by: PB See revision history for more Revision Release 0.30 2002-09-27 Revised by: PB See revision history for more Revision Release 0.29 2002-09-18 Revised by: PB </verb></tscreen> <sect1>版權,許可與其它 <sect2>版權所有: Peter Bieringer <p><tscreen><verb> Copyright Written and Copyright (C) 2001-2002 by Peter Bieringer 1.1.2. License This Linux IPv6 HOWTO is published under GNU GPL version 2: The Linux IPv6 HOWTO, a guide how to configure and use IPv6 on Linux systems. Copyright (C) 2001-2002 Peter Bieringer This documentation is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </verb></tscreen> <sect1>關於作者 <p> <tscreen><verb> 作者接觸 Internet/IPv6 的歷史 1993: 由於使用e-mail和新聞組開始接觸Internet. 1996: 受邀於一個IPv6的課程. 包括了Linux有關的IPv6. 1997: 開始寫在Linux裡安裝,設定和使用IPv6的指南. 2001: 開始寫這個新的HOWTO. </verb></tscreen> <sect1>聯繫 <p> 可以通過e-mail pb@bieringer.de及首頁<htmlurl url="http://www.bieringer.de/pb/" name="http://www.bieringer.de/pb/"> 他現在住在Munich [northern part of Schwabing] / Bavaria / Germany (south) / Europe (middle) / Earth (surface/mainland). <sect1> 類別 <p> 在"Networking/Protocols"裡. <sect1>版本, 歷史和打算 <p>在最上頭提過了. <sect1>歷史 <p><tscreen><verb> 主要的歷史 2001-11-30: 開始設定新的HOWTO 2002-01-02: 完成了一點,發表了第一章節 (version 0.10). 2002-01-14: 完成了更多,加了評論,發表了所有的內容(version 0.14). 2002-08-16: 波蘭版的翻譯正在進行. 2002-10-14: 中譯版翻譯剛開始. </verb></tscreen> <sect1>全部歷史 <p>See revision history at the end of this document. <sect1>打算 <p>補缺漏.完成內容的檢視. <sect1>翻譯 <p>它們包含URL,版本號,原作的版權. <sect1>德語 <p>它的版本由我自己完成(德語是我的母語)在版本每月都有變化的時候是不會完成的. 並且我還要有空閒的時間,如果您有時間,不妨試一試,大大方方地來接管吧. <sect1>其它的語系 <p> 一般情況下,請等到一個月以上無變動的時候進行翻譯, version0.27 是最近的. <sect1>波蘭版 <p> 自從 2002-08-16 Lukasz Jokiel Lukasz.Jokiel@klonex.com.pl開始,到現在. 他的起始版是 0.27 <sect1>中譯版 <p>從 2002-10-14 起, 中譯版的翻譯完成了部份內容, 起始版是 0.31 <sect1>技術方面 <p> HOWTO的原始形式是 在Linux Red Hat7.3里用 LyX version 1.2.0 寫的,格式是SGML. http://cvsview.tldp.org/index.cgi/LDP/users/Peter-Bieringer/ 裡可以取得. <p> <sect1>代碼封裝 <p> 代碼封裝是由自己寫的工具"lyxcodelinewrapper.pl" 來完成. 您可以在http://cvsview.tldp.org/index.cgi/LDP/users/ 裡取得 <sect1>產生SGML <p> 是用LyX的輸出功能實現. 也有一些是用固定的代碼.(參照http://cvsview.tldp.org/index.cgi/LDP/users/Peter-Bieringer/) Export of LyX table does not create proper "colspan" tags - tool for fixing: "sgmllyxtabletagfix.pl" (fixed since LyX 1.2.0) LyX sometimes uses special left/right entities for quotes instead the normal one, which will still exist in generated HTML. Some browsers don't parse this very well (known: Opera 6 TP 2 or Konqueror) - tool for fixing: "sgmllyxquotefix.pl" <sect1>2HTML版式的在線目錄(linking/anchors) <p>主索引 一般來說,是被推薦的 <sect1>專用的頁面 <p>因為HTML版式是由SGML生成, HTML的文件名是隨機的, 一些名稱被定死.這是有用的,並在以後不會改變. 如果您認為我漏了tag, 請讓我知道,我會加進去的. <sect1>有多少個關於 Linux和IPv6 HOWTO的變動版本? <p> 加上這個, 有三個呢. 抱歉,是有點太多. <sect1>Linux IPv6 FAQ/HOWTO (過時的) <p>第一個由 Eric Osborne 所寫. 叫做 Linux IPv6 FAQ/HOWTO(http://www.linuxhq.com/IPv6/). 有誰知道它的初始日期,請來e-mail告訴我, 用來寫歷史的. <sect1>IPv6 & Linux - HowTo (正在維護當中) <p>那裡有一個我(Peter Bieringer)寫的第二版, 叫做 IPv6 & Linux - HowTo(http://www.bieringer.de/linux/IPv6/), 格式是純HTML, 1997年4月開始, 並在同年7月發行了第一個英文版, 我會繼續維護它. 但它會被慢慢地容合進現在您讀的這份HOWTO當中. <sect1>Linux IPv6 HOWTO (現在這份HOWTO) <p>由於IPv6 & Linux - HowTo(http://www.bieringer.de/linux/IPv6/) 是用純HTML寫的, 與 Linux 文檔計劃(www.linuxdoc.org)不兼容. 我(Peter Bieringer)接到了一個將 IPv6 & Linux - HowTo 寫成SGML格式的請求. 因為將要停止寫HOWTO(將來的IPv6 & Linux - HowTo), 並隨著IPv6越來越標準化, 我決定寫一個新的在未來幾年占主要地位的比較更持久的版本, 包括了基本的和高級的版本. 動態的資訊依然會在將來的日子裡添加到第二個HOWTO裡去(IPv6 & Linux - HowTo).http://www.bieringer.de/linux/IPv6/ <sect1>Long code line wrapping signal char <p>"?"這個特殊的字符是讓編碼在PDF 和 PS 文件中顯得更好看. <sect1>Placeholders (佔位符) <p>您可以常常在例子中看到如下的內容: <p>< myipaddress > <p> 在您的系統命令行或scripts裡會被相應的內容所取代(當然是將 "< >" 去掉啦), 結果變成這樣: <p>1.2.3.4 <sect1>Commands in the shell(shell 裡的命令) <p>可執行的命令(非root用戶),由 "$" 開頭, 如: <p>$ whoami <p>可執行的命令(root用戶),由 "#" 開頭, 如: <p># whoami <sect1>使用這個HOWTO的必需條件 <sect2>個人所要必備的條件. <p> 您必需熟悉主要的UNIX工具,如grep, awk, find, ... , 和它們的一般用法. <sect2> 知道一些網路理論 <p> 您要知道layers, protocls, addresses , cables ,plugs, 等. 如果您剛進入這個領域, 這個連結有助於您:<htmlurl url="http://www.linuxports.com/howto/intro_to_networking/" name="http://www.linuxports.com/howto/intro_to_networking/" <sect2> 設定IPv4的經驗 <p> 您必需有明確的IPv4的設定經驗.不然,您將不知道如何進行下去. <sect2> Domain Name System (DNS 動態名稱侍服系統)的經驗 <p>您最少要知道如何使用tcpdump, 它告訴您的是什麼. 不然,對您來說然度相當大. <sect2> Linux 作業系統的兼容硬體 <p>您必需有實際的操作經驗, 並且不要在看HOWTO的時候到處打磕睡. :) <sect>什麼是IPv6? <p>IPv6是新的第三層傳輸協議(參考http://www.linuxports.com/howto/intro_to_networking/c4412.htm#PAGE103HTML),它將用來取代IPv4(也叫做IP). <p>IPv4是很早以前設計的,現在對IPv4提供更多的地址和性能方面有著更高的要求. 在IPv6中主要的變革是重新設計了報頭. 包括將地址位的大小從32 bits 增加到 128 bits. 因為第三層傳輸主要負責end-to-end(端對端)基於地址的數據包路由. 它必需包含新的IPv6地址(來源和目標),這點就像IPv4一樣. <p>下面這個連結提供了更多有關IPv6的資訊, 和RFC 的例表等等: <p>http://www.switch.ch/lan/ipv6/references.html <sect1>IPv6在Linux作業系統上的歷史 <p>將要做的: 更好的時間排列, 更多的內容... <sect1>開始 <p>第一次將與IPv6有關的代碼加入 Linux kernel 2.1.8 的工作是由Pedro Roque <newline>在1996年11月完成的. 它基於BSD API: <tscreen><code> 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> </code></tscreen> <p>以上的代碼來自patch-2.1.8 (e-mail 地址在複製&貼上時漏掉了) <sect1>其間 <p>因為缺少人手, 在核心加入IPv6的計劃不能按照討論的或新的RFCs執行. <p>在2000年的10月, 一個叫做USAGI(http://www.linux-ipv6.org/)的計劃在日本正式啟動. 目標是執行所有不見了的, 擱淺的(IPv6 support in Linux)計劃. 計劃緊隨 KAME project (http://www.kame.net/) 的腳步. 依據 vanilla Linux 核心源代碼進行遂步的改動. <sect1>現在 <p>不幸的是 USAGI 的 patch(補丁)很大, Linux networking 維護人員無法將它包含進現在Linux 2.4.x 系列的源代碼當中去. 因此2.4.x 失去了一些(多數)括展性, 並且不支持所有當前的設計和RFCs. 這導致了它和其它作業系統會產生一些協同問題. <sect1>將來 <p>USAGI 現在正在將當前的括展加入到 Linux 2.5.x 核心當中. <p>希望2.6.x 系列核心能有一個真正和最新的IPv6功能. <sect1>IPv6 的地址會是什麼樣 ? <p>剛才提過, IPv6 的地址有128 bits 長. 這樣的 bits 可以產生39個十進字數字: <tscreen><code> 2^128-1: 340282366920938463463374607431768211455 </code></tscreen> <p>這樣的地址很難記得住. IPv6的地址是逐位定位的(就像IPv4, 但這個觀點不是公認的). 所以十六進制能更好地代表這些數字, 4 bits(也叫做"nibble")表現為數字(0-9)或字符 a-f(10-15). 這種格式將IPv6的地址長度縮減到個32字符. <tscreen><code> 2^128-1: 0xffffffffffffffffffffffffffffffff </code></tscreen> <p>這種表現形式仍然很不方便. (可能混淆或遺漏單個十六進制數字), 所以IPv6的設計者將地址形式定為每16bit就用":"區分開來. 開頭的"0x"(在程式設計當中用來表示十六進制數值)被移除了: <tscreen><code> 2^128-1: ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff </code></tscreen> <p>一個有效的地址(稍後請看地址類型)如下: <tscreen><code> 3ffe:ffff:0100:f101:0210:a4ff:fee3:9566 </code></tscreen> <p>為了簡化, 每個16bit開頭的0可以被省略: <tscreen><code> 3ffe:ffff:0100:f101:0210:a4ff:fee3:9566 -> 3ffe:ffff:100:f101:210:a4ff:fee3:9566 </code></tscreen> <p>連續的並且數值為0的16bit地址段可以用"::"表示. 但是一個IPv6地址當中只能出現一次, 不然這種方法保持不了多久. <tscreen><code> 3ffe:ffff:100:f101:0:0:0:1 -> 3ffe:ffff:100:f101::1 </code></tscreen> <p>簡化得最短的IPv6 localhost地址: <tscreen><code> 0000:0000:0000:0000:0000:0000:0000:0001 -> ::1 </code></tscreen> <p>這種方法也叫做 compact (base85 coded) representation defined RFC 1924 / A IPv6緊湊地址表示法(定於1996), 但沒有提起過, 例如: <tscreen><code> # ipv6calc --addr_to_base85 3ffe:ffff:0100:f101:0210:a4ff:fee3:9566 Itu&-ZQ82s>J%s99FJXT </code></tscreen> <p>資訊: ipv6calc 是一個IPv6地址格式的計算和轉換的計劃, 您可以在這裡找到: http://www.bieringer.de/linux/IPv6/ipv6calc/ <sect1>FAQ(基礎) <sect2>為什麼叫IPv6,而不能成為IPv4之後的IPv5 ? <p>在任何IP頭, 前4bits 是為協議版本號所保留的. 所以理論上一個協議的版本號在0和15之間是有效的: <itemize> <item>4 己經為IPv4所使用. <item>5 為 Stream 協議所保留(STP, RFC 1819 http://rfc.net/rfc1819.html 沒有公開過) </itemize> <p> IPv4之後可用的版本號是6, 因此 IPv6 就這樣旦生了! <sect2>IPv6 地址: 為什麼會有這麼長的bits <p>在設計IPv4的時候,人們認為32bit的長度足夠全世界使用. 看一看這些年, 32bit 就現在和未來幾年來說是足夠的. 然而, 32bits 不能在將來滿足全球各種網路設備對IP地址的需求. 想一想將來要連結網路的移動電話, 汽車(包括電子總控系統), 烤麵包機,冰箱, 照明開關... <p>所以設計者採用了128bits, 是今天IPv4 大小(2^96)與長度的4倍. <p>實際使用的大小可能比它看起來的還要小. 因為現在的定義地址設計, 64bits 用於interface identifiers(界面標識). 另外64bits用於路由. 寄於現在嚴格的層數集合(/48, /35, ...), IPv6 所能提供的地址空間還是可能不夠, 希望這種情況不要在往後的幾年裡發生. <sect2>IPv6 地址: 為什麼在新的設計裡bits這麼小? <p>雖然, (可能)有些人(在Internet裡)考慮IPv8和IPv6, 設計無論從接受和執行都是那麼的遙遠. 在此其間128bit對於報頭和數據傳輸來說是最佳的選擇. <p>考慮到在IPv4里和IPv6里的最大/最小傳輸單位(MTU,它們分別是576byte 和 1280 byte), IPv4 的報頭是20 byte(最小值,可以通過調節IPv4的選項增大到60byte), IPv6 的報頭是48 byte(固定不變的), 報頭分別占它們MTU的3.4%和3.8%, 這意昧著報頭佔了很大一部分開銷. 更大bits的地址需要更大的報頭,因而佔據更大的開銷. <p> 同樣,顧及到MTU正常連結的最大值(像現在的以太網): 1500byte(除了特別的列子:9k byte 應用在 Jumbo frames 當中). 最終,如果要傳輸在第三層數據包中占10%或20%報頭, 這樣的IP地址在設計上也就沒有意義了. <sect>地址的類型 <sect1>沒有前綴的地址 <sect2>Localhost 地址 <p>這是一個特別為loopback interface(回送界面或環繞)定義的地址, 就像IPv4的 "127.0.0.1" 對於IPv6 localhost address 是: <tscreen><code> 0000:0000:0000:0000:0000:0000:0000:0001 </code></tscreen> <p>或縮減成 <tscreen><code> ::1 </code></tscreen> <p>這個地址的數據包將它當作host(主機)發送的來源和目標. <sect2>未指明的地址 <p> 這是一個在IPv4當中表示 "所有" 或"0.0.0.0". 對於IPv6為: <tscreen><code> 0000:0000:0000:0000:0000:0000:0000:0000 </code></tscreen> <p> 或者是: <tscreen><code> :: </code></tscreen> <p> 這些地址大多 用在/顯示 socket 捆綁(到所有IPv6地址)或路由表當中. <p>注意:未說明的地址不能當成目標地址來使用. <sect2> 植入了IPv4地址的IPv6地址 <p>它包含了兩個地址其中一個為IPv4地址. <sect2>IPv4映射IPv6地址 <p>IPv4-only IPv6-compatible 是由IPv6後台產生的有時 用於或顯示 sockets . 它只捆綁IPv4地址. <p>這些地址被定義為擁有長度為96的前綴特殊地址(a.b.c.d 是IPv4地址): <tscreen><code> 0:0:0:0:0:ffff:a.b.c.d/96 </code></tscreen> <p>或者使用縮寫形式 <tscreen><code> ::ffff:a.b.c.d/96 </code></tscreen> <p>這些地址也用於自動遂道, 已經被6to4tunneling取代. <sect1>網路部分,也叫做前綴 <p>設計者定義並預留了一部份空間以便於將來遇到像現在這樣的需求. RFC 2373 [July 1998] / IP Version 6 Addressing Architecture (http://rfc.net/rfc2373.html) 定義了現在的地址設計, 但已經有了新的草案 (ftp://ftp.ietf.org/internet-drafts/)draft-ietf-ipngwg-addr-arch-*.txt <p>讓我們來看一下不同的前綴定義(和地址類型): <sect2>連結本地地址的類型 <p>這些地址不對外界(Internet)連接有效. 以這些地址為目標的數據包不會通過路由器. 這種連結用於以下情形: <itemize> <item>同其它任意一個也使用這個連結的人進行通訊. <item>同其它任意一個擁有特殊地址的連結進行通訊.(例如尋找路由) </itemize> <p>它們的地址由以下這些開頭("x"是任意的十六進制字符,一般是"0") <tscreen><code> fe8x: <- 目前只有這個在用. fe9x: feax: febx: </code></tscreen> <p>一個開頭為以上這些前綴的地址, 由IPv6沒有在界面指定IP地址的時候創立. <p> 目前只有fe80在使用. <sect2>本地站點的地址定義 <p>這些地址和IPv4相似(http://rfc.net/rfc1918.html RFC 1918 / Address Allocation for Private Internets) 它的優勢: 只用16bits 就可以定義65536個子網.同IPv4的10.0.0.0/8相似. <p> 另一個優勢:在IPv6的界面上可以定義多個IP地址, 在已有本地站點地址的基礎上還可以加上一個global(全局)地址. <p>它們的地址由以下這些開頭("x"是任意的十六進制字符,一般是"0") <tscreen><code> fecx: <- 大多數使用這個 fedx: feex: fefx: </code></tscreen> <sect2>Global(全局)地址類型 "(Aggregatable) global unicast"可聚合的全局唯一地址. <p>今天,只有一個全局地址類型的定義(第一個設計,也是多年以來一直使用的叫做 "provider based," <htmlurl url="http://rfc.net/rfc1884.html" name="RFC 1884 / IP Version 6 Addressing Architecture [obsolete]">) 您能在早期的核心源代碼中找到一些. <p>它們的地址由以下這些開頭("x"是任意的十六進制字符,一般是"0") <tscreen><code> 2xxx: 3xxx: </code></tscreen> <p>注意: 前綴"aggregatable" 被當前的草案拋棄了. 下面有一些更有意義的子類型定義: <sect3>6bone test addresses <p>這些是最初定義和使用的全局地址. 它們的開頭是 <tscreen><code> 3ffe: </code></tscreen> <p>例子 <tscreen><code> 3ffe:ffff:100:f102::1 </code></tscreen> <p> 一個無唯一全局化的特別6bone例子 <tscreen><code> 3ffe:ffff:100:f102::1 </code></tscreen> <p>這些主要都是例子, 因為如果使用真實的地址,可能會有些人將它拷貝&貼上 到他們自己的配置中去. 從而不注意地複製了全局唯一地址, 這樣會導致原來擁有這個地址的主機產生一些問題(比如,請求的回應包不會被發送.) 您可以從這些前綴當中申請一個, 看這裡: "如何加入6bone" 也有一些在 tunnel brokers 他們發佈用於測試6bone 的地址前綴. <sect3>6to4 地址 <p>這些地址是為特別tunneling機制設計的. <htmlurl url="http://rfc.net/rfc3056.html/" name="[RFC 3056 / Connection of IPv6 Domains via IPv4 Clouds"> 和 <htmlurl url="http://rfc.net/rfc2893.html" name="RFC 2893 / Transition Mechanisms for IPv6 Hosts and Routers]">, 給IPv4地址和可能的子網編碼並以類似下面的形式開頭: <tscreen><code> 2002: </code></tscreen> <p>例子,重新對192.168.1.1/5編碼: <tscreen><code> 2002:c0a8:0101:5::1 </code></tscreen> <p>這個shell命令將幫助您用一個IPv4地址產生這樣的地址: <tscreen><code> ipv4="1.2.3.4"; sla="5"; printf "2002:%02x%02x:%02x%02x:%04x::1" `echo $ipv4 | tr "." " "` $sla </code></tscreen> <p>參照tunneling using 6to4 and information about 6to4 relay routers. <sect2>從分級路由分配到的地址 <p>這些地址分配給Internet服務供商(ISP)並且有類似如下的開頭: <tscreen><code> 2001: </code></tscreen> <p>主ISP(擁有骨幹網路)的前綴是由local registries分配的, 並且現在他們分配的前綴長度為35. <p>主ISPs通常分配給下級ISPs的前綴長度為48. <sect2>Multicast addresses(多點傳送的地址) <p>Multicast addresses 應用於服務當中. <p>它們總是有同下面相類似的開頭(xx是範圍值) <tscreen><code> ffxy: </code></tscreen> <p>它們有著不同的範圍和類型: <sect2>Multicast scopes(多點傳達送範圍) <p>Multicast scope 是用來定義發送實體的multicast 數據包有效最遠傳輸值的參數. <p>通常,下面的範圍已經被定義: <itemize> <item>ffx1: 本地節點, 數據包不會離開節點. <item>ffx2: 本地連結, 數據包不會被路由,所以它們不會離開這個特別的連結. <item>ffx5: 本地站點, 數據包不會離開站點. <item>ffx8: 本地組織, 數據包不會離開組織(執行起來不那麼容易,必須依靠路由協議) <item>ffxe: 全局範圍. <item>其它的都被保留 </itemize> <sect2> Multicast(多點傳送)類型 <p> 許多類型都已經定義/保留(細節請參照<htmlurl url="http://rfc.net/rfc2373.html" name=" RFC 2373 / IP Version 6 Addressing Architecture">). 這裡有一些例子: <itemize> <item>所有節點地址: ID=1h, 所有本地節點主機的地址(ff01:0:0:0:0:0:0:1) 或已連接好的地址(ff02:0:0:0:0:0:0:1). <item>所有路由地址:ID=2h,所有本地節點的路由地址(ff01:0:0:0:0:0:0:2), 已連接的(ff02:0:0:0:0:0:0:2), 或本地站點(ff05:0:0:0:0:0:0:2). </itemize> <sect2>Solicited node link-local multicast address(本地多播請求的節點地址) <p>在neighborhood discovery(多播發現)中當成目標地址使用的特別多播地址. 與IPv4不同,ARP(地址解析協議)將不在IPv6中使用. <p>例子: <tscreen><code> ff02::1:ff00:1234 </code></tscreen> <p>使用前綴表示它是一個本地多播地址, 後綴由目標地址產生. 這個例子當中將有一個數據包發往"fe80::1234", 但是網路堆棧並不知道第二層的MAC(多媒體通路). 它將上部份的104 bits 更改為 "ff02:0:0:0:0:1:ff00::/104" 下部分24 bits 不變. 現在這個地址以on-link(在線)的形式尋找相應的節點(這個節點應當發送了包含有第二層 MAC 地址的回應包) <sect2> Anycast addresses(隨播地址) <p>Anycast addresses是一個特別的地址, 它用於鄰近的DNS或DHCP服務, 或用於相似的dynamic groups(動態組群). 地址從 unicast address (單播地址aggregatable global or site-local at the moment)空間中取得. 隨播地址的機制(從客戶端的觀點來看)由動態路由協議控制. <p>注意:隨播地址不能成為作為來源地址, 它必需以目標地址的身份出現. <sect2> Subnet-router Anycast addresses(子網路隨播路由器) <p>一個Subnet-router Anycast addresses的例子. 假設一個分配了如下IPv6地址的節點: <tscreen><code> 3ffe:ffff:100:f101:210:a4ff:fee3:9566/64 <- 節點的地址 </code></tscreen> <p>Subnet-router將使用沒有後綴的地址 (least significant 64 bits): <tscreen><code> 3ffe:ffff:100:f101::/64 <- subnet-router anycast address</code></tscreen> <sect1>地址類型(主機) <p>因為自動的配製/隨機分配,在當前的地址類型中主機使用更低的 64 bits地址. 因此每個subnet(子網)可以擁有大量的地址. <p>主機的地址分配可以有如下幾種形式: <sect2>自動分配(also known as stateless) <p>在自動分配當中,主機的地址由界面的MAC地址決定. 使用EUI-64方法,指定一個IPv6 地址. 如果沒有可用的MAC(如:虛擬設備), 就用其它的代替(如IPv4地址或物理界面的MAC地址) <p>再看一下前面的例子: <tscreen><code> 3ffe:ffff:100:f101:210:a4ff:fee3:9566 </code></tscreen> <p>這裡: <tscreen><code> 210:a4ff:fee3:9566 </code></tscreen> <p>主機地址由NIC的MAC地址決定: <tscreen><code> 00:10:A4:E3:95:66 </code></tscreen> <p>用<htmlurl url="http://standards.ieee.org/regauth/oui/tutorials/EUI64.html" name="IEEE-Tutorial EUI-64 "> 作為EUI-48 的標識符. <sect2>自動分配帶來的隱私問題 <p>因為自動分配的是唯一地址,客戶端在不通過任何代理的情況下容易被跟蹤. 這是個公認的問題,它的解決方法是:privacy extension,定義於 <htmlurl url="http://rfc.net/rfc3041.html" name="RFC 3041 / Privacy Extensions for Stateless Address Autoconfiguration in IPv6"> 這裡也有一個草案:<htmlurl url="ftp://ftp.ietf.org/internet-drafts/" name="draft-ietf-ipngwg-temp-addresses-*.txt"> 使用不同的靜態數值, 每次產生一個新的後綴. 注意: 只對client 的連接有效, 對於servers 沒有什麼用處. <sect2>手動設定 <p>對於servers來說, 大概很容易記起簡單的地址. 同時也可以向它的界面添加一個IPv6地址: <tscreen><code> 3ffe:ffff:100:f101::1 </code></tscreen> <p>手動設定的後綴為"::1",例子當中最重要的第6 bits設定為"0", 它為anycast addresses(任意傳送地址)保留 (the universal/local bit of the automatically generated identifier). <sect1>路由的前綴長度 <p>在早期設計階級,使用完全分離的路由分級來最大層度地縮小路由表. 論證的方法是使用當前IPv4的核心路由數目(> 104 thousand in May 2001) 減少硬體記憶體的需求來控制路由表和速度(較少的個數使查找速度加快). <sect2>前綴長度(也叫做子網路遮罩) <p>同IPv4相似, 網路產生可路由的路徑. 因為128 bits標準的netmasks 看起來不怎麼樣. 設計者借鑒了IPv4的風格: Classless Inter Domain Routing (CIDR<htmlurl url="http://rfc.net/rfc1519.html" name="RFC 1519 / Classless Inter-Domain Routing">) 它們是用於IP地址路由的bits號碼. 也叫做"/" <p>例子: <tscreen><code> 3ffe:ffff:100:1:2:3:4:5/48 </code></tscreen> <p>它們可以被擴展成: <tscreen><code> 網路: 3ffe:ffff:0100:0000:0000:0000:0000:0000 </code></tscreen> <tscreen><code> 子網路遮罩: ffff:ffff:ffff:0000:0000:0000:0000:0000</code> </tscreen> <sect2>Matching a route(路由匹配) <p>在一般情況下(no QoS), 在路由表裡查找一個重要的地址數值意味著路由前綴的長度必需先匹配. <p>例子, 如果路由表像下面那樣(清單未完全例出): <tscreen><code> 3ffe:ffff:100::/48 :: U 1 0 0 sit1 2000::/3 ::192.88.99.1 UG 1 0 0 tun6to4 </code></tscreen> <p>IPv6的目標地址將被下面的設備路由: <tscreen><code> 3ffe:ffff:100:1:2:3:4:5/48 -> routed through device sit1 3ffe:ffff:200:1:2:3:4:5/48 -> routed through device tun6to4 </code></tscreen> <sect>準備IPv6的運行系統 <sect1>IPv6-ready kernel <p>現在的Linux發行版的核心都具備了運行IPv6的條件. IPv6功能被編譯成一個可載入模組. 在一般情況下模組不會在開機的時候自動載入. <p>參照更新的資訊: <htmlurl url="http://www.bieringer.de/linux/IPv6/status/IPv6+Linux-status-distributions.html" name=" IPv6+Linux-Status-Distribution"> <sect2>檢察現在的系統是否支持IPv6 <p>注意您的/proc-file-system.必需有如下的結構: <tscreen><code> /proc/net/if_inet6 </code></tscreen> <p> 一個簡單的測試: <tscreen><code> # test -f /proc/net/if_inet6 && echo "Running kernel is IPv6 ready" </code></tscreen> <p>如果失敗, 表明模組沒有載入. <sect2>試著載入模組 <p>執行載入模組的命令: <tscreen><code> # modprobe ipv6 </code></tscreen> <p>如果成功, 模組會在列表中顯示,執行如下命令: <tscreen><code> # lsmod |grep -w 'ipv6' && echo "IPv6 module successfully loaded" </code></tscreen> <sect2>讓模組自動載入 <p>模組是可以自動載入的,只要在核心模組設定文件( /etc/modules.conf 或 /etc/conf.modules)中加入: <tscreen><code> alias net-pf-10 ipv6 # automatically load IPv6 module on demand </code></tscreen> <p>也可以關掉IPv6模組的自動載入: <tscreen><code> alias net-pf-10 off # disable automatically load of IPv6 module on demand </code></tscreen> <sect2>編譯有 IPv6 功能的核心 <p>如果以上兩個結果都證實了核心不具有IPv6功能, 您可以有如下選擇: <itemize> <item>升級成外包裝有IPv6支持說明的Linux發行版(推薦新手使用)再看一下這裡: <htmlurl url="http://www.bieringer.de/linux/IPv6/status/IPv6+Linux-status-distributions.html" name=" IPv6+Linux-Status-Distribution"> <item>編譯一個新的vanilla核心(如果您知道該怎麼選擇,會比較簡單). <item>重新編譯您現在擁有的發行版核心(不太容易). <item>將核心同 USAGI 的擴展一起編譯. </itemize> <p>如果您決定編譯一個核心,您必需讀過<htmlurl url="http://www.linuxdoc.org/HOWTO/Kernel-HOWTO.html" name="Linux Kernel HOWTO">. 以及這方面的經驗. <p>注意:您必需使用核心2.4.x系列或更高. 因為IPv6對2.2.x系列缺少相應的支持. 並且需要ICMPv6 和 6to4 支持的補丁.(補丁可以在<htmlurl url="ftp://ftp.bieringer.de/pub/linux/IPv6/kernel" name=" kernel series 2.2.x IPv6 patches" >找到). <sect2> 將核心同 USAGI 的擴展一起編譯. <p>只推薦熟悉核心編譯和IPv6的用戶使用. 參照: <htmlurl url="http://www.linux-ipv6.org/faq.html" name="USAGI project / FAQ">. <sect2>IPv6-ready network devices <p>不是所有的設備都有能力傳輸IPv6數據包, 這裡有一個現狀表: <htmlurl url="http://www.bieringer.de/linux/IPv6/status/IPv6+Linux-status-kernel.html#transport" name="IPv6+Linux-status-kernel.html#transport">. <sect2>現階段不會支持IPv6的連結 <p><itemize> <item>Serial Line IP (SLIP,<htmlurl url="http://rfc.net/rfc1055.html" name="RFC 1055">), should be better called now to SLIPv4, device named: slX <item>Parallel Line IP (PLIP), same like SLIP, device names: plipX <item>ISDN with encapsulation rawip, device names: isdnX </itemize> <sect2>在將來都不會支持IPv6的設備 <p><itemize> <item>ISDN with encapsulation syncppp, device names: ipppX (design issue of the ipppd, will be merged into more general PPP layer in kernel series 2.5.x) </itemize> <sect1> IPv6-ready 網路設定工具 <p>別扯太遠了, 如果您有一個正在運行IPv6的核心,怎麼會沒有設定的工具呢? 安裝包裡早就有幾個這樣的工具了. <sect2>net-tools package <p>net-tools package 包含一些工具如: ifconfig ,route. 這些可以令您在界面上設定IPv6. 在命令行(shell) 用ifocnig -? 或 route -? 查看諸如IPv6 或 inet6.如果有,則說明具備IPv6設定能力. <p>輸入以下命令進行檢查: <tscreen><code> # /sbin/ifconfig -? 2>& 1|grep -qw 'inet6' && echo "utility 'ifconfig' is ?IPv6-ready" </code></tscreen> <p>也可以使用route: <tscreen><code> # /sbin/route -? 2>& 1|grep -qw 'inet6' && echo "utility 'route' is IPv6-ready" </code></tscreen> <sect2>iproute package <p>Alexey N. Kuznetsov (Linux 網路代碼現階段的維護者) 寫了一個tool-set可以通過netlink 設備來設定網路.它可以比net-tool提供更多的功能, 但沒有多少文檔並且它不是為膽小的人設計的. <tscreen><code> # /sbin/ip 2>&1 |grep -qw 'inet6' && echo "utility 'ip' is IPv6-ready" </code></tscreen> <p>如果沒有找到 /sbin/ip 那麼我極力推薦您安裝iproute package. <itemize> <item>可以在您的發行版中找到(如果有的話) <item>在<htmlurl url="ftp://ftp.inr.ac.ru/ip-routing/" name="Original FTP source" >下載並編譯它. <item>直接可以安裝的RPM包: <htmlurl url="http://rpmfind.net/linux/rpm2html/search.php?query=iproute" name=" RPMfind/iproute"> (推薦編譯 SRPMS ) </itemize> <sect1>IPv6-ready 測試/調式 程式 <p>在為IPv6準備好了系統後,您可以用IPv6進行網路通訊. 首先您必需學習如何用嗅探程式來檢查IPv6數據包. 強烈推薦這樣做,因為在debugging/troubleshooting 中有利於快速診斷. <sect2>IPv6 ping <p>這個程式一般在iputils包裡, 用來測試簡單傳輸發送 ICMPv6 回應請求並等待ICMPv6 回應包. <p>用法: <tscreen><code> # ping6 < hostwithipv6address > # ping6 < ipv6address > # ping6 [-I < device >] < link-local-ipv6address > </code></tscreen> <p>例子: <tscreen><code> # 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 </code></tscreen> 提示 ping6必需有適當的root權限才能使用, 如果不是root組用戶,使用時可能產生問題: <p>1.ping6 不在用戶的路徑當中 (probably, because ping6 is generally stored in /usr/sbin -> add path (not really recommended) <p>2.ping6 不能被正確執行, 通常沒有適當的權限 chmod u+s /usr/sbin/ping6 <sect2>為ping6指定界面 <p>用local-addresses 作為ping6 目標必需指定一個界面. 否則核心將不知道數據包發往哪個設備. 在沒有指定的情況下會有這樣的輸出: <tscreen><code> # ping6 fe80::212:34ff:fe12:3456 connect: Invalid argument </code></tscreen> <p>為ping6指定界面的結果: <tscreen><code> # 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</code></tscreen> <sect2>Ping6 to multicast addresses(多播地址) <p>一個發現IPv6-active hosts 的比較有趣的機制: <tscreen><code> # 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!) </code></tscreen> <p>與IPv4不同的是, ping 的回應在廣播地址中是可以屏蔽的,目前只有IPv6防火牆可以做到. <sect2>IPv6 traceroute6 <p>這個程式一般在iputils包裡, 和IPv4的traceroute程式相似, 但與當前版本不同的是IPv6不能正確地使用ICMP echo-request. 看下面這個例子: <tscreen><code> # traceroute6 www.6bone.net traceroute to 6bone.net (3ffe:b00:c18:1::10) from 3ffe:ffff:0000:f101::2, 30 ?hops max, 16 byte packets 1 localipv6gateway (3ffe:ffff: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 </code></tscreen> <sect2>IPv6 tracepath6 <p>這個程式一般在iputils包裡, 它用來追蹤MTU的路徑.看下面的例子: <tscreen><code> # 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 </code></tscreen> <sect2>IPv6 tcpdump <p>在Linux作業系統中 tcpdump 是主要的數據包捕獲工具.IPv6支持 3.6 的版本. <p>tcpdump用於降低數據包雜訊的參數: <itemize> <item>icmp6: 過濾本地ICMPv6通訊. <item>ip6: 過濾本地IPv6通訊.(包括 ICMPv6) <item>proto ipv6: filters tunneled IPv6-in-IPv4 traffic <item>not port ssh: 在遠程SSH會話中禁止SSH數據包的顯示. to suppress displaying SSH packets for running tcpdump in a remote SSH session </itemize> <p>使用命令行參數也可以從一個數據包中捕獲/列印資訊. <itemize> <item>"-s 512": 增加捕獲限定為512 bytes. <item>"-vv": 詳細列印. <item>"-n": 不將地址轉換成名稱,在名稱服務有問題時可以用到. </itemize> <sect2>IPv6 ping to 3ffe:ffff:100:f101::1 native over a local link <p> <tscreen><code> # tcpdump -t -n -i eth0 -s 512 -vv ip6 or proto ipv6 tcpdump: listening on eth0 3ffe:ffff:100:f101:2e0:18ff:fe90:9205 > 3ffe:ffff:100:f101::1: icmp6: echo ?request (len 64, hlim 64) 3ffe:ffff:100:f101::1 > 3ffe:ffff:100:f101:2e0:18ff:fe90:9205: icmp6: echo ?reply (len 64, hlim 64) </code></tscreen> <sect2>IPv6 ping to 3ffe:ffff:100::1 routed through an IPv6-in-IPv4-tunnel <p>1.2.3.4和5.6.7.8是遂道的終點(這些都是例子). <tscreen><code> # 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 > 3ffe:ffff:100::1: icmp6: echo request ?(len 64, hlim 64) (DF) (ttl 64, id 0, len 124) 5.6.7.8 > 1.2.3.4: 3ffe:ffff: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 > 3ffe:ffff:100::1: icmp6: echo request ?(len 64, hlim 64) (DF) (ttl 64, id 0, len 124) 5.6.7.8 > 1.2.3.4: 3ffe:ffff:100::1 > 2002:ffff:f5f8::1: icmp6: echo reply (len ?64, hlim 61) (ttl 23, id 29919, len 124) </code></tscreen> <sect1>IPv6-ready programs(能和IPv6協同工作的程式) <p>在當前的發行版中已經包含了能和IPv6協同工作的程式(服務端/客戶端) <newline>參照:<htmlurl url="http://www.bieringer.de/linux/IPv6/status/IPv6+Linux-status-distributions.html" name=" IPv6+Linux-Status-Distribution">. <newline>或者檢查<htmlurl url="IPv6 & Linux - Current Status - Applications" name="http://www.bieringer.de/linux/IPv6/status/IPv6+Linux-status-apps.html"> <newline>一些可用程式的線索: <htmlurl url="http://www.bieringer.de/linux/IPv6/IPv6-HOWTO/IPv6-HOWTO-3.html" name="IPv6 & Linux - HowTo - Part 3">或 <htmlurl url="http://www.bieringer.de/linux/IPv6/IPv6-HOWTO/IPv6-HOWTO-4.html" name="IPv6 & Linux - HowTo - Part 4">. <sect1>IPv6-ready 客戶端程式 (selection) <p>想要進行下面的測試, 您的作業系統必需擁有IPv6能力. 有些例子是真實地連結了6bone的情況下做的. <sect2>檢查DNS對IPv6地址的解析能力 <p>因為這幾年Domain Name System (DNS)安全的不斷升級, 它們中的大部份都具備了對IPv6 地址類型AAAA的解析能力. (新的類型A6 只有BIND9和更高的版本支持)檢查DNS對IPv6地址的解析能力: <tscreen><code> # host -t AAAA www.join.uni-muenster.de </code></tscreen> <p>將得到下面的結果: <tscreen><code> www.join.uni-muenster.de. is an alias for ns.join.uni-muenster.de. ns.join.uni-muenster.de. has AAAA address 3ffe:400:10:100:201:2ff:feb5:3806 </code></tscreen> <sect2>IPv6-ready telnet clients <p>IPv6-ready telnet 客戶端. 對它進行一個簡單的測試: <tscreen><code> $ 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. </code></tscreen> <p>如果telnet只出現"cannot resolve hostname", 說明作業系統的IPv6還未激活. <sect2>openssh <p>openssh已經支持IPv6, 但必需對它用以下的參數進行編譯後才能使用: <itemize> <item>--without-ipv4-default: the client tries an IPv6 connect first automatically and fall back to IPv4 if not working <item>--with-ipv4-default: default connection is IPv4, IPv6 connection must be force like following example shows: </itemize> <tscreen><code> $ ssh -6 ::1 user@::1's password: ****** [user@ipv6host user]$ </code></tscreen> <p>如果您的ssh不能對 -6 進行反應, 可能作業系統的IPv6還未激活,或ssh的版本太低. <sect2>ssh.com <p>他們的客戶/服務端程式是免費的. <sect2>IPv6-ready web 流覽器 <p>目前支持IPv6的web 流覽器列表: <htmlurl url="http://www.bieringer.de/linux/IPv6/status/IPv6+Linux-status-apps.html#HTTP" name="IPv6+Linux-status-apps.html#HTTP."> <p>這些流覽器大部份都存在問題: <itemize> <item>如果 proxy(代理)只支持IPv4, IPv6的請求將會失敗. 方法: 升級proxy <item>Automatic proxy settings (*.pac) 不能對IPv6的不同請求進行適當的處理 (written in Java-script and well hard coded in source like to be seen in Maxilla source code). </itemize> <p> 一些早期的版本不能對IPv6地址進行正確的操作, 如: <htmlurl url="http://[3ffe:400:100::1]/" name="http://[3ffe:400:100::1]/ "> <p>一個小測試,顯示在沒有代理的情況下的 URL 和 流覽器. <sect2>URLs for testing <p> 測試IPv6最方便的方法是訪問: <htmlurl url="http://www.kame.net/" name="http://www.kame.net/">. 如果海龜是活動的, 說明連接是通過IPv6進行的, 它不動的話, 說明連接是通過IPv4進行的. <sect1>IPv6-ready server 程式 <p>包括:sshd, httpd, telnetd, <sect>設定interfaces(界面) <sect1>不同的網路設備 <p>一個節點存在不同的網路設備, 可以對它們進行如下分類: <itemize> <item>Physically bounded, like eth0, tr0 <item>Virtually existing, like ppp0, tun0, tap0, sit0, isdn0, ippp0 </itemize> <sect2>Physically bounded(物理綁定) <p>包括 Ethernet 或者 Token-Ring 它們不需要特別的處理. <sect2>Virtually bounded(虛擬綁定) <p> 需要特別的支持. <sect2> IPv6-in-IPv4 tunnel interfaces <p>這個interfaces(界面)也稱作sitx, sit 是"Simple Internet Transition" 的縮寫. 它可以將IPv6的數據包塞進IPv4, 通過IPv4到達另一個地點. <p>sit0 不能使用在專用的tunnels 上. <sect2>5.1.2.2. PPP interfaces <p>PPP interfaces 從IPv6 enabled PPP daemon 那裡獲得 IPv6 的能力. <sect2>5.1.2.3. ISDN HDLC interfaces <p>具有IP封裝的HDLC IPv6 能力以經包含在核心當中. <sect2>5.1.2.4. ISDN PPP interfaces <p>目前不支持 ISDN PPP interfaces (ippp) aren't IPv6 enabled by kernel. Also there are also no plans to do that because in kernel 2.5.+ they will be replaced by a more generic ppp interface layer. <sect2>5.1.2.5. SLIP + PLIP <p>目前不支持Like mentioned earlier, this interfaces don't support IPv6 transport (sending is OK, but dispatching on receiving don't work). <sect2>5.1.2.6. Ether-tap device <p>Ether-tap devices使用自動的設定.在使用之前先將 "ethertap" 模組掛進來. <sect2>5.1.2.7. tun devices <p>就連我都還沒試過呢! Currently not tested by me. <sect2>5.1.2.8. ATM <p>01/2002: vanilla的核心目前不支持, USAGI 的擴展支持ATM-IPv6 <sect2>5.1.2.9. 其它的 <p>我漏掉了什麼? <sect1>Bringing interfaces up/down(設定界面的開/關) <sect2>使用 "ip" <p>使用方法: <tscreen><code> # ip link set dev <interface> up # ip link set dev <interface> down </code></tscreen> <p>例子: <tscreen><code> # ip link set dev eth0 up # ip link set dev eth0 down </code></tscreen> <sect2>使用 "ifconfig" <p>使用方法: <tscreen><code> # /sbin/ifconfig <interface> up # /sbin/ifconfig <interface> down </code></tscreen> <p>例子: <tscreen><code> # /sbin/ifconfig eth0 up # /sbin/ifconfig eth0 down </code></tscreen> <sect>設定IPv6地址 <sect1>列印當前的IPv6地址 <sect2>使用 "ip" <p>使用方法: <tscreen><code> # /sbin/ip -6 addr show dev <interface> </code></tscreen> <p>例子:一個靜態的主機地址 <tscreen><code> # /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 3ffe:ffff:0:f101::1/64 scope global inet6 fec0:0:0:f101::1/64 scope site </code></tscreen> <p>自動設定的地址和它的存活時間: <tscreen><code> # /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 </code></tscreen> <sect2>使用 "ifconfig" <p>使用方法: <tscreen><code> # /sbin/ifconfig <interface> </code></tscreen> <p>例子, 它只列印IPv6地址: <tscreen><code> # /sbin/ifconfig eth0 |grep "inet6 addr:" inet6 addr: fe80::210:a4ff:fee3:9566/10 Scope:Link inet6 addr: 3ffe:ffff:0:f101::1/64 Scope:Global inet6 addr: fec0:0:0:f101::1/64 Scope:Site </code></tscreen> <sect1>增加一個IPv6地址 <p>其原理同IPv4的"IP ALIAS"(IP別名)相同 <p>使用 "ip" <p>使用方法: <tscreen><code> # /sbin/ip -6 addr add <ipv6address>/<prefixlength> dev <interface> </code></tscreen> <p>例子: <tscreen><code> # /sbin/ip -6 addr add 3ffe:ffff:0:f101::1/64 dev eth0 </code></tscreen> <sect2>使用 "ifconfig" <p>使用方法: <tscreen><code> # /sbin/ifconfig <interface> inet6 add <ipv6address>/<prefixlength> </code></tscreen> <p>例子: <tscreen><code> # /sbin/ifconfig eth0 inet6 add 3ffe:ffff:0:f101::1/64 </code></tscreen> <sect1>移除IPv6地址 <p>這個不常用, 不要用它移除不存在的地址, 一些早期的核心會因為受不了而掛掉. <sect2>使用 "ip" <p>使用方法: <tscreen><code> # /sbin/ip -6 addr del <ipv6address>/<prefixlength> dev <interface> </code></tscreen> <p>例子: <tscreen><code> # /sbin/ip -6 addr del 3ffe:ffff:0:f101::1/64 dev eth0 </code></tscreen> <sect2>使用 "ifconfig" <p>使用方法: <tscreen><code> # /sbin/ifconfig <interface> inet6 del <ipv6address>/<prefixlength> </code></tscreen> <p>例子: <tscreen><code> # /sbin/ifconfig eth0 inet6 del 3ffe:ffff:0:f101::1/64 </code></tscreen> <sect>設定IPv6路由 <sect1>列印現有的路由 <sect2>使用"ip" <p>使用方法: <tscreen><code> # /sbin/ip -6 route show [dev <device>] </code></tscreen> <p>例子: <tscreen><code> # /sbin/ip -6 route show dev eth0 3ffe:ffff: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 </code></tscreen> <sect2>使用 "route" <p>使用方法: <tscreen><code> # /sbin/route -A inet6 </code></tscreen> <p>例子:在同一個界面上不同的IPv6路由. <tscreen><code> # /sbin/ip -6 route show dev eth0 # /sbin/route -A inet6 |grep -w "eth0" 3ffe:ffff: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 </code></tscreen> <sect1>設定IPv6路由通過閘道 <sect2>使用"ip" <p>使用方法: <tscreen><code> # /sbin/ip -6 route add <ipv6network>/<prefixlength> via <ipv6address> ? [dev <device>] </code></tscreen> <p>例子: <tscreen><code> # /sbin/ip -6 route add 2000::/3 via 3ffe:ffff:0:f101::1 </code></tscreen> <sect2>使用 "route" <p>使用方法: <tscreen><code> # /sbin/route -A inet6 add <ipv6network>/<prefixlength> gw ? <ipv6address> [dev <device>] </code></tscreen> <p>例子:為當前所有的(全局地址global addresses 2000::/3)址通過閘道3ffe:ffff:0:f101::1 <tscreen><code> # /sbin/route -A inet6 add 2000::/3 gw 3ffe:ffff:0:f101::1 </code></tscreen> <sect1>移除 IPv6路由通過閘道 <sect2>使用"ip" <p>使用方法: <tscreen><code> # /sbin/ip -6 route del <ipv6network>/<prefixlength> via <ipv6address> ? [dev <device>] </code></tscreen> <p>例子: <tscreen><code> # /sbin/ip -6 route del 2000::/3 via 3ffe:ffff:0:f101::1 </code></tscreen> <sect2>使用 "route" <p>使用方法: <tscreen><code> # /sbin/route -A inet6 del <network>/<prefixlength> [dev <device>] </code></tscreen> <p>例子:移除前所有的(全局地址global addresses 2000::/3)址通過閘道3ffe:ffff:0:f101::1 <tscreen><code> # /sbin/route -A inet6 del 2000::/3 gw 3ffe:ffff:0:f101::1 </code></tscreen> <sect1>增加IPv6路由至interface(界面) <sect2>使用 "ip" <p>使用方法: <tscreen><code> # /sbin/ip -6 route add <ipv6network>/<prefixlength> dev <device> ? metric 1 </code></tscreen> <p>例子: <tscreen><code> # /sbin/ip -6 route add 2000::/3 dev eth0 metric 1 </code></tscreen> <sect2>使用 "route" <p>使用方法: <tscreen><code> # /sbin/route -A inet6 add <network>/<prefixlength> dev <device> </code></tscreen> <p>例子: <tscreen><code> # /sbin/route -A inet6 add 2000::/3 dev eth0 </code></tscreen> <sect1>從interface(界面)移除IPv6路由 <sect2>使用 "ip" <p>使用方法: <tscreen><code> # /sbin/ip -6 route del <ipv6network>/<prefixlength> dev <device> ? metric 1 </code></tscreen> <p>例子: <tscreen><code> # /sbin/ip -6 route del 2000::/3 dev eth0 </code></tscreen> <sect2>使用 "route" <p>使用方法: <tscreen><code> # /sbin/route -A inet6 del <network>/<prefixlength> dev <device> </code></tscreen> <p>例子: <tscreen><code> # /sbin/route -A inet6 del 2000::/3 dev eth0 </code></tscreen> <sect1> FAQ for IPv6 routes(IPv6 路由的經常問答) <sect2>Support of an IPv6 default route <p>IPv6的一個方法是hierachical routing(分級路由).因此,分級當中最少需要一個路由. <p>在目前的核心中有一些問題: <sect2>Clients (not routing any packet!)沒有任何數據包被路由. <p>Clinets 可以設定一個缺省的prefix "::/0"(前綴為 ::/0 的路由). <tscreen><code> # 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 </code></tscreen> <sect2> Routers on packet forwarding (路由包轉寄) <p>目前主流的Linux核心(最少是 <=2.4.17) 不支持缺省路由. 您可以設定它們,但在發送數據包時環繞會失敗. 所以,目前的缺省路由可以被設定成 前綴為"2000::/3"的 global (全局地址). USAGI 對這個有著良好的支持. <p>注意: 注意沒有地址篩選的邊緣路由器的缺省路由, 不然會有多餘的multicast 或 site-local 傳輸從邊緣溢出. <sect>Neighbor Discovery(發現芳鄰) <p>IPv6 的 Neighbor Discovery繼承了IPv4 的 ARP (Address Resolution Protocol地址解析協議). 您可以重新得到芳鄰的資訊. 並且可以編輯/刪除它. <p>Neighbor detection(對芳鄰進行探測) <p>核心負責對探測成功的芳鄰進行追蹤. 您可以用 "ip" 來挖掘其中的信息. <sect1>Displaying neighbors using "ip" (用"ip"命令列印芳鄰) <p>使用以下的命令,您可以知道芳鄰的設定. <tscreen><code> # ip -6 neigh show [dev <device>] </code></tscreen> <p>下面的例子當中列印了一個芳鄰,它是一個可到達的路由器. <tscreen><code> # ip -6 neigh show fe80::201:23ff:fe45:6789 dev eth0 lladdr 00:01:23:45:67:89 router nud reachable </code></tscreen> <sect1>用 "ip" 對芳鄰的列印表進行處理 <sect2>用以下的命令可以加入一個entry(列印項) <p><tscreen><code> # ip -6 neigh add <IPv6 address> lladdr <link-layer address> dev <device> </code></tscreen> <p>例子: <tscreen><code> # ip -6 neigh add fec0::1 lladdr 02:01:02:03:04:05 dev eth0 </code></tscreen> <sect2>用以下的命令可以移除一個entry(列印項) <p><tscreen><code> # ip -6 neigh del <IPv6 address> lladdr <link-layer address> dev <device> </code></tscreen> <p>例子: <tscreen><code> # ip -6 neigh del fec0::1 lladdr 02:01:02:03:04:05 dev eth0 </code></tscreen> <sect2>更高階的設定 <p> "ip"工具非常強大, 但沒有足夠的幫助資訊. <tscreen><code> # 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 ] </code></tscreen> <p> 有點像IPv4的列印, 如果您知道它的詳細用法,請幫我 send 一份過來. <sect>Configuring IPv6-in-IPv4 tunnels(設定遂道) <sect1>遂道的類型 <p>將IPv6數據包傳輸到IPv4連結不只有一種可能. <sect2>Static point-to-point tunneling: 6bone (以點對點方式構建的遂道) <p>IPv6和IPv4的遂道定義在 <htmlurl url="http://rfc.net/rfc2893.html" name="RFC 2893 / Transition Mechanisms for IPv6 Hosts and Routers"> <p>必備條件: <itemize> <item>遂道另一端的IPv4地址必需是static(靜態的).global unique and reachable from the foreign tunnel endpoint <item>您以經擁有的一個global IPv6 prefix(前綴),參照 6bone registry. <item>有一個可以將您的IPv6 prefix 路由到本地端的外界tunnel端(通常需要進行遠端操作) </itemize> <sect2>Automatically tunneling(遂道操作自動化) <p>當一個節點直接同另一個節點進行連結,在得到節點IPv4地址之前,節點就會執行遂道操作自動化. <sect2>6to4-Tunneling(遂道操作) <p>它使用一個簡單的機制實行Tunneling(遂道操作) <htmlurl url="http://rfc.net/rfc3056.html" name="RFC 3056 / Connection of IPv6 Domains via IPv4 Clouds" >. 每個節點的global unique IPv4 (唯一全局地址)可以成為 6to4 tunnel 的終點(如果沒有IPv4防火牆限制通訊). 6to4-Tunneling(遂道操作)不是專用於一對一的遂道, 這個案例可以分開針對upstream and downstream (上級和下級)的遂道操作. 同樣,一個特別的IPv6地址會指出這個節點使用6to4-Tunnel同全世界的 IPv6 網路進行連結. <sect2>Generation of 6to4 prefix(產生6to4的前綴). <p> 6to4 的地址像下面這樣定義:(源自<htmlurl url="http://rfc.net/rfc3056.html" name="RFC 3056 / Connection of IPv6 Domains via IPv4 Clouds">) <tscreen><code> __________________________________________________________________ | 3+13 | 32 | 16 | 64 bits | +---+------+-----------+--------+--------------------------------+ | FP+TLA | V4ADDR | SLA ID | Interface ID | | 0x2002 | | | | +---+------+-----------+--------+--------------------------------+ </code></tscreen> <p>FP是global addresses(全局地址)的前綴. TLA是top level aggregator(最高層集) V4ADDR是IPv4全局唯一地址((in hexadecimal notation). SLA是子網路標緻(65536 local subnets possible). 這些前綴產生時的SLA 為"0000" 後綴是 "::1" 並分配到6to4 tunnel interface(界面). <sect2>6to4 upstream tunneling(上級遂道操作) <p>節點知道向哪裡發送含有IPv6數據包的IPv4數據包. 早期的6to4遂道,必需設定一個專用的上級路由器接受這種操作. 參照 <htmlurl url="http://www.kfu.com/~nsayer/6to4/" name="NSayer's 6to4 information ">裡的路由列印. 現在 6to4上級路由器可以使用anycast address 192.88.99.1 它由後台的路由協議控制. 參照 <htmlurl url="http://www.faqs.org/rfcs/rfc3068.html" name="RFC 3068 / An Anycast Prefix for 6to4 Relay Routers"> <sect2>6to4 downstream tunneling(下級遂道操作) <p>The downstream (6bone -> your 6to4 enabled node) is not really fix and can vary from foreign host which originated packets were send to. There exist two possibilities: 它還沒有正式修正對數據包來源的確定, 存在以下兩種可能: <itemize> <item>外部主機直接使用6to4把IPv6數據包發回給您. <item>外部主機通過全球IPv6網路, 依靠動態路建立一個automatic tunnel 由將IPv6數據包發回給您. </itemize> <sect2> Possible 6to4 traffic(6to4的幾種通訊方法) <p><itemize> <item>從 6to4 到 6to4: 通常在兩個 6to4 enabled 主機之間直接進行遂道操作 tunneled between the <item>從 6to4 到 non-6to4: 通過上級遂道操作發送數據包. <item>從 non-6to4 到 6to4: 通過下級遂道操作發送數據包. </itemize> <sect1>列印現存的tunnels(遂道) <sect2>使用 "ip" <p>用法: <tscreen><code> # /sbin/ip -6 tunnel show [<device>] </code></tscreen> <p>例子: <tscreen><code> # /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 </code></tscreen> <sect2>使用 "route" <p>用法: <tscreen><code> # /sbin/route -A inet6 </code></tscreen> <p>例子:只列印從sit0界面通過的遂道. <tscreen><code> # /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 </code></tscreen> <sect1>Setup of point-to-point tunnel(設定點對點的遂道) <p>有3種方法可以加入/移除point-to-point tunnel <sect2>Add point-to-point tunnels (加入) <sect3>使用 "ip" <p>目前針對少量tunnels的方法 <p>設定tunnel device (它不會立既啟用.TTL必需指定, 因為初始值是0) <tscreen><code> # /sbin/ip tunnel add < device > mode sit ttl < ttldefault > remote ? < ipv4addressofforeigntunnel > local < ipv4addresslocal > </code></tscreen> <p>用法(這個例子中有三個遂道) <tscreen><code> # /sbin/ip tunnel add sit1 mode sit ttl <ttldefault> remote ? <ipv4addressofforeigntunnel1> local <ipv4addresslocal> # /sbin/ip 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 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 set dev sit3 up # /sbin/ip -6 route add <prefixtoroute3> dev sit3 metric 1 </code></tscreen> <sect2>使用 "ifconfig" and "route" (deprecated) <p>不推薦一次就 Non Broadcast Multiple Access (NBMA)這麼多,因為您如果只想關閉第一個但又要讓其它的繼續運行,有點難啊.只加一個是沒有問題的. <tscreen><code> # /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 </code></tscreen> <p>警告:這樣做有很大的風險, 因為任何人可以從Internet的任何地點使用"automatic tunneling"同您進行連結.我不推薦您這樣做. <sect2>使用 "route" only <p>當然可以設定tunnel使用 Non Broadcast Multiple Access (NBMA)非多地址廣播的方式 這種方法可以一次就加入很多tunnel. 使用方法 (三個tunnel的基本例子): <tscreen><code> # /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 </code></tscreen> <p>警告:這樣做有很大的風險, 因為任何人可以從Internet的任何地點使用"automatic tunneling"同您進行連結.我不推薦您這樣做. <sect2>Removing point-to-point tunnels(移除遂道) <p>手工方式不經常使用,可以用scripts移除/重新設定IPv6tunnels <sect2>使用 "ip" <p>移除遂道設備的用法: <tscreen><code> # /sbin/ip tunnel del <device> </code></tscreen> <p>Usage (三個tunnel的基本例子): <tscreen><code> # /sbin/ip -6 route del <prefixtoroute1> dev sit1 # /sbin/ip set sit1 down # /sbin/ip tunnel del sit1 # /sbin/ip -6 route del <prefixtoroute2> dev sit2 # /sbin/ip set sit2 down # /sbin/ip tunnel del sit2 # /sbin/ip -6 route del <prefixtoroute3> dev sit3 # /sbin/ip set sit3 down # /sbin/ip tunnel del sit3 </code></tscreen> <sect2>使用 "ifconfig" and "route" (因為不怎麼有趣所以不贊成這麼做) <p>Usage (三個tunnel的基本例子):您必需反向移除它們, 也就是先建立的必需先移除. <tscreen><code> # /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 </code></tscreen> <sect2>使用 "route" <p>移除IPv6路由. 使用方法 (三個tunnel的基本例子): <tscreen><code> # /sbin/route -A inet6 del <prefixtoroute1> gw ? ::<ipv4addressofforeigntunnel1> dev sit0 # /sbin/route -A inet6 del <prefixtoroute2> gw ? ::<ipv4addressofforeigntunnel2> dev sit0 # /sbin/route -A inet6 del <prefixtoroute3> gw ? ::<ipv4addressofforeigntunnel3> dev sit0 # /sbin/ifconfig sit0 down </code></tscreen> <sect2>Numbered point-to-point tunnels(有限的點對點遂道) <p>有時需要設定一個point-to-point 遂道 和IPv6地址, 但方法中只有第一個(ifconfig+route - deprecated)和第三個(ip+route)可行. 在這些案例中您可以加入一個IPv6地址到 tunnel interface(用於遂道操作的那個界面) <sect1>Setup of 6to4 tunnels (設定 IPv6至IPv4的遂道) <p>注意:6to4 tunnels 目前缺乏vanilla 2.2.x系列核心的支持. 同樣要注意的是6to4地址的前綴長度是16 所有的 6to4 主機都在相同的第二層. <sect2>Add a 6to4 tunnel(增加一個 6to4 遂道) <p>首先, 您必需用可路由的本地IPv4 global 地址來計算 6to4 的前綴. (如果您的主機沒有可路由的本地IPv4 global 地址, 在閘道邊緣的NAT地址也行 in special cases NAT on border gateways is possible): <p>假定您的IPv4地址為: <tscreen><code> 1.2.3.4 </code></tscreen> <p>產生的6to4 prefix(前綴)為 : <tscreen><code> 2002:0102:0304:: </code></tscreen> <p>本地的 6to4 閘道需要手工設定後綴為"::1", 因此您的6to4地址就成為: <tscreen><code> 2002:0102:0304::1 </code></tscreen> <p>以下依據指定的IPv4地址產生6to4地址: <tscreen><code> ipv4="1.2.3.4"; printf "2002:%02x%02x:%02x%02x::1" `echo $ipv4 | tr "." " "` </code></tscreen> <p>目前有兩種方法可以設定6to4遂道 <sect2>使用 "ip" 和專用的遂道設備. <p>這是被推薦的做法. 創建一個遂道設備. <tscreen><code> # /sbin/ip tunnel add tun6to4 mode sit remote any local <localipv4address> </code></tscreen> <p> Bring interface up(激活它) <tscreen><code> # /sbin/ip link set dev tun6to4 up </code></tscreen> <p>將本地6to4地址加入到界面.(注意:它的前綴長度必需是16) <tscreen><code> # /sbin/ip -6 addr add <local6to4address>/16 dev tun6to4 </code></tscreen> <p>加入一個用all-6to4-routers IPv4 anycast 地址作為到達global IPv6 網路的路由(缺省的路由) <tscreen><code> # /sbin/ip -6 route add 2000::/3 via ::192.88.99.1 dev tun6to4 metric 1 </code></tscreen> <sect2>使用 "ifconfig" and "route" and generic tunnel device "sit0" (不被推薦的做法) <p>不被推薦是因為tunnel device sit0 不支持特別的過慮器應用在每個設備上. <p>Bring generic tunnel interface sit0 up(將界面sit0激活) <tscreen><code> # /sbin/ifconfig sit0 up </code></tscreen> <p>Add local 6to4 address to interface(向界面添加本地 6to4 地址) <tscreen><code> # /sbin/ifconfig sit0 add <local6to4address>/16 </code></tscreen> <p>加入一個用all-6to4-relays IPv4 anycast地址作為到達global IPv6 網路的路由(缺省的路由) <tscreen><code> # /sbin/route -A inet6 add 2000::/3 gw ::192.88.99.1 dev sit0 </code></tscreen> <sect2> Remove a 6to4 tunnel(移除 6to4 遂道) <sect2> 使用 "ip" and a 專用遂道設備 <p>從dedicated tunnel device 移除所有路由 <tscreen><code> # /sbin/ip -6 route flush dev tun6to4 </code></tscreen> <p>Shut down interface(關閉界面) <tscreen><code> # /sbin/ip link set dev tun6to4 down </code></tscreen> <p>Remove created tunnel device(移除遂道設備) <tscreen><code> # /sbin/ip tunnel del tun6to4 </code></tscreen> <sect2> 使用 "ifconfig" and "route" and generic tunnel device "sit0" (不被推薦的做法) <p>移除 6to4 界面上遂道的路由 <tscreen><code> # /sbin/route -A inet6 del 2000::/3 gw ::192.88.99.1 dev sit0 </code></tscreen> <p>Remove local 6to4 address to interface(從界面移除本地 6to4 地址) <tscreen><code> # /sbin/ifconfig sit0 del <local6to4address>/16 </code></tscreen> <p>並閉 generic tunnel device (當心, 可能它還在使用當中) <tscreen><code> # /sbin/ifconfig sit0 down </code></tscreen> <sect>設定 IPv4-in-IPv6 遂道 <p>這裡的內容會在將來添加,目前這種遂道處在試驗階段.參照: <htmlurl url="http://rfc.net/rfc2473.html" name="RFC 2473 / Generic Packet Tunneling in IPv6 Specification" > <sect>核心設定 in /proc-filesystem <sect1>怎樣進入 /proc-filesystem <sect2>使用 "cat"和 "echo" <p>使用 "cat"和 "echo" 是進入 /proc-filesystem的最簡單方法. 但必需具備下面幾個條件: <itemize> <item>在核心中打開 /proc-filesystem 支持, 在編譯的時候可以通過 CONFIG_PROC_FS=y 做到. <item>/proc-filesystem 已經掛進系統,可以用以下的方法測試: <tscreen><code> # mount | grep "type proc" none on /proc type proc (rw) </code></tscreen> <item>您必需知道對/proc-filesystem 的各種操作. </itemize> <p>通常/proc/sys/* 都是可寫的, 其它的都是只讀或只提供相關資訊. <sect2>得到一個值 <p>可以使用 "cat" 得到一個值. <tscreen><code> # cat /proc/sys/net/ipv6/conf/all/forwarding 0 </code></tscreen> <sect2>設定一個值 <p>可以使用 "echo" 設定一個值. <tscreen><code> # echo "1" >/proc/sys/net/ipv6/conf/all/forwarding </code></tscreen> <sect2>使用 "sysctl" <p>使用 "sysctl" 設定核心是當前流行的方法, 您也能用. 如果/proc-filesystem 沒有掛進來, 那麼您只可以訪問/proc/sys/* <p>"sysctl"程式在"procps"安裝包中.(Red Hat Linux systems) <p>sysctl-interface 需要在核心中進行激活, 在編譯的時候可以通過以下選項完成: <tscreen><code> CONFIG_SYSCTL=y </code></tscreen> <sect2>設定一個值 <p>A new value can be set (if entry is writable): <tscreen><code> # sysctl -w net.ipv6.conf.all.forwarding=1 net.ipv6.conf.all.forwarding = 1 </code></tscreen> <p>在 "=" 兩邊不能出現spaces符號,也不能像下面那樣一次設定多個值: <tscreen><code> # sysctl -w net.ipv4.ip_local_port_range="32768 61000" net.ipv4.ip_local_port_range = 32768 61000 </code></tscreen> <sect2>另外 <p>sysctl使用 "/" 代替 "." 詳細資訊請看sysctl的manpage <p>提示:快速查找設定的資訊,可以聯合使用帶"-a"的grep. <sect1>/proc-filesystems 裡的數值類型. <p> <itemize> <item>BOOLEAN: simple a "0" (false) or a "1" (true) <item>INTEGER: an integer value, can be unsigned, too <item>more sophisticated lines with several values: sometimes a header line is displayed also, if not, have a look into the kernel source to retrieve information about the meaning of each value... </itemize> <sect1>Entries in /proc/sys/net/ipv6/ <sect2>conf/default/* <p>Change the interface-specific default settings <sect2>conf/all/* <p>改變所有 interface-specific 設定. <p>除了: "conf/all/forwarding" 它有不同的含義. <sect2>conf/all/forwarding <p><itemize> <item>Type: BOOLEAN </itemize> <p>在兩個界面之間進行global IPv6 forwarding (數據包轉寄.) <p>IPv6 當中您不能單獨控制一個設備的 forwarding (數據包轉寄). forwarding 的控制由IPv6-netfilter 完成. 當值為"0"時 數據包轉寄的能力被關閉,數據包不會離開各自的界面(包括物理/虛擬)比如 tunnel. 當值為"1"時 數據包轉寄的能力被開啟. <sect2>conf/interface/* <p>改變單個界面的設定. 依據local forwarding 是 enabled 或 not. <sect2>accept_ra <p> <itemize> <item>Type: BOOLEAN <item>默認值: enabled if local forwarding is disabled. disabled if local forwarding is enabled. </itemize> <p>接受IPv6路由廣告.並且根據得到的信息自動設定. <sect2>accept_redirectsc <p> <itemize> <item>Type: BOOLEAN <item>Functional default: enabled if local forwarding is disabled. disabled if local forwarding is enabled. </itemize> <p>接受IPv6路由器的重定向. <sect2>autoconf <p> <itemize> <item>Type: BOOLEAN <item>Default: TRUE </itemize> <p>設定本地連結地址使用L2硬體地址. 它依據界面的L2-MAC address自動產生一個地址如:"fe80::201:23ff:fe45:6789" <sect2>dad_transmits <p> <itemize> <item>Type: INTEGER <item>Default: 1 </itemize> <p>發送重複地址嗅探的總數. <sect2>forwarding <p> <itemize> <item>Type: BOOLEAN <item>Default: FALSE if global forwarding is disabled (default), otherwise TRUE </itemize> <p>設定主機/路由的interface-specific動作. <p>注意:推薦所有interface(界面)使用相同的設定.混合路由器/主機的想法真是難得. <itemize> <item>Value FALSE: By default, Host behaviour is assumed. This means: <itemize> <item> IsRouter 標緻沒有在Neighbour Advertisements當中. <item> 當需要的時候就發送路由請求. <item> 如果accept_ra是TRUE (default), 接受路由廣告. <item> 如果accept_redirects 是 TRUE (default), 接受重定向. </itemize> <item>Value TRUE: 如果具備本地forwarding(轉寄),路由器動作為假定.這和上面的情況相反: <itemize> <item> IsRouter 標緻存在於Neighbour Advertisements當中. <item> 不發送路由請求. <item> 忽略路由廣告. <item> 忽略重定向. </itemize> </itemize> <sect2>hop_limit <p> <itemize> <item> Type: INTEGER <item> Default: 64 </itemize> <p>缺省hop限制. <sect2>mtu <p> <itemize> <item> Type: INTEGER <item> Default: 1280 (IPv6 要求的最小值) </itemize> <p>缺省最大傳輸單元. <sect2>router_solicitation_delay <p> <itemize> <item> Type: INTEGER <item> Default: 1 </itemize> <p>在發送路由請求之前界面的等待時間(秒). <sect2>router_solicitation_interval <p> <itemize> <item> Type: INTEGER <item> Default: 4 </itemize> <p>在每個路由請求之間的等待時間(秒). <sect2>router_solicitations <p> <itemize> <item> Type: INTEGER <item> Default: 3 </itemize> <p>假定沒有路由的情況下發送的請求個數. <sect2>neigh/default/* <p>Change default settings for neighbor detection and some special global interval and threshold values: <sect2>gc_thresh1 <p> <itemize> <item> Type: INTEGER <item> Default: 128 </itemize> <p>More to be filled. <sect2>gc_thresh2 <p> <itemize> <item> Type: INTEGER <item> Default: 512 </itemize> <p>More to be filled. <sect2>gc_thresh3 <p> <itemize> <item> Type: INTEGER <item> Default: 1024 </itemize> <p>芳鄰列印表大小的調節項. <p>如果您有許多界面,或路由表現反常 試著增大數值. Or if a running Zebra (routing daemon) reports: <tscreen><code> ZEBRA: netlink-listen error: No buffer space available, type=RTM_NEWROUTE(24), seq=426, pid=0 </code></tscreen> <sect2>gc_interval <p> <itemize> <item> Type: INTEGER <item> Default: 30 </itemize> <p>More to be filled. <sect2> neigh/interface/* <p>Change special settings per interface for neighbor detection. <sect2>anycast_delay <p> <itemize> <item> Type: INTEGER <item> Default: 100 </itemize> <p>More to be filled. <sect2>gc_stale_time <p> <itemize> <item> Type: INTEGER <item> Default: 60 </itemize> <p>More to be filled. <sect2>proxy_qlen <p> <itemize> <item> Type: INTEGER <item> Default: 64 </itemize> <p>More to be filled. <sect2>unres_qlen <p> <itemize> <item> Type: INTEGER <item> Default: 3 </itemize> <p>More to be filled. <sect2>app_solicit <p> <itemize> <item> Type: INTEGER <item> Default: 0 </itemize> <p>More to be filled. <sect2>locktime <p> <itemize> <item> Type: INTEGER <item> Default: 0 </itemize> <p>More to be filled. <sect2>retrans_time <p> <itemize> <item> Type: INTEGER <item> Default: 100 </itemize> <p>More to be filled. <sect2>base_reachable_time <p> <itemize> <item> Type: INTEGER <item> Default: 30 </itemize> <p>More to be filled. <sect2>mcast_solicit <p> <itemize> <item> Type: INTEGER <item> Default: 3 </itemize> <p>More to be filled. <sect2>ucast_solicit <p> <itemize> <item> Type: INTEGER <item> Default: 3 </itemize> <p>More to be filled. <sect2> delay_first_probe_time <p> <itemize> <item> Type: INTEGER <item> Default: 5 </itemize> <p>More to be filled. <sect2> proxy_delay <p> <itemize> <item> Type: INTEGER <item> Default: 80 </itemize> <p>More to be filled. <sect2>route/* <p>設定global(全局)路由 <sect2>flush <p>Removed in newer kernel releases - more to be filled. <sect2> gc_interval <p> <itemize> <item> Type: INTEGER <item> Default: 30 </itemize> <p>More to be filled. <sect2> gc_thresh <p> <itemize> <item> Type: INTEGER <item> Default: 1024 </itemize> <p>More to be filled. <sect2> mtu_expires <p> <itemize> <item> Type: INTEGER <item> Default: 600 </itemize> <p>More to be filled. <sect2> gc_elasticity <p> <itemize> <item> Type: INTEGER <item> Default: 0 </itemize> <p>More to be filled. <sect2> gc_min_interval <p> <itemize> <item> Type: INTEGER <item> Default: 5 </itemize> <p>More to be filled. <sect2> gc_timeout <p> <itemize> <item> Type: INTEGER <item> Default: 60 </itemize> <p>More to be filled. <sect2> min_adv_mss <p> <itemize> <item> Type: INTEGER <item> Default: 12 </itemize> <p>More to be filled. <sect2> max_size <p> <itemize> <item> Type: INTEGER <item> Default: 4096 </itemize> <p>More to be filled. <sect1>IPv6-related entries in /proc/sys/net/ipv4/ <p>目前(直到IPv4全部成為核心模組),一些開關也可以為IPv6所使用. <sect2>ip_* <sect2>ip_local_port_range <p>也可以為IPv6使用. <sect2>tcp_* <p>也可以為IPv6使用. <sect2>ICMP_* <p>不能為IPv6使用. 激活 ICMPv6 比率限制 rate limting (極力推薦,因為它有抵禦 ICMPv6 網路風暴的能力) netfilter-v6 rules must be used. <sect2>其它 <p>不知道, 不能為IPv6使用吧. <sect1>IPv6-related entries in /proc/net/ <p>這個地方是只讀的, 您不能通過 "sysctl" 得到資訊,可以使用 "cat" <sect2>if_inet6 <p>每一行地址包含多個值. <p>這裡IPv6地址是用特殊的格式列印的,例子只列印環繞interface(界面)含義在下面 <tscreen><code> # cat /proc/net/if_inet6 00000000000000000000000000000001 01 80 10 80 lo +------------------------------+ ++ ++ ++ ++ ++ | | | | | | 1 2 3 4 5 6 </code></tscreen> <p>1. 地址用32個不包含":"的十六進制列印. <p>2. 連結的設備數值(interface index)使用十六進制列印. <p>3. 前綴的長度使用十六進制列印. <p>4. Scope value (see kernel source " include/net/ipv6.h" and "net/ipv6/addrconf.c" for more) <p>5. Interface flags (see "include/linux/rtnetlink.h" and "net/ipv6/addrconf.c" for more) <p>6. 設備名. <sect2>ipv6_route <p>每一行地址包含多個值. <p>這裡IPv6地址是用特殊的格式列印的,例子只列印環繞interface(界面)含義在下面 <tscreen><code> # cat /proc/net/ipv6_route 00000000000000000000000000000000 00 00000000000000000000000000000000 00 +------------------------------+ ++ +------------------------------+ ++ | | | | 1 2 3 4 ? 00000000000000000000000000000000 ffffffff 00000001 00000001 00200200 lo ? +------------------------------+ +------+ +------+ +------+ +------+ ++ ? | | | | | | ? 5 6 7 8 9 10 </code></tscreen> <p>1. IPv6目標網路用32個不包含":"的十六進制列印. <p>2. IPv6prefix(前綴)的長度使用十六進制列印. <p>3. IPv6來源網路用32個不包含":"的十六進制列印. <p>4. IPv6來源prefix(前綴)的長度使用十六進制列印. <p>5. IPv6下一個hop(躍點)用32個不包含":"的十六進制列印. <p>6. Metric in hexadecimal <p>7. Reference counter <p>8. Use counter <p>9. Flags(標緻) <p>10.Device name <sect2> sockstat6 <p>每一行地址包含多個值. <p>IPv6 sockets統計: <tscreen><code> # cat /proc/net/sockstat6 TCP6: inuse 7 UDP6: inuse 2 RAW6: inuse 1 FRAG6: inuse 0 memory 0 </code></tscreen> <p> <tscreen><verb> tcp6 To be filled. udp6 To be filled. igmp6 To be filled. raw6 To be filled. ip6_flowlabel To be filled. rt6_stats To be filled. snmp6 Type: One line per SNMP description and value SNMP statistics, can be retrieved via SNMP server and related MIB table by network management software. ip6_tables_names Available netfilter6 tables </verb></tscreen> <sect>Netlink-Interface to kernel <p>內容有待增加... 這方面我沒什麼經驗... <sect>網路 debugging <sect1>Server socket binding(綁定) <sect1>Using "netstat" for server socket binding check <p>使用 "netstat" 是得到這些信息的捷徑. <p>使用選項: -nlptu <p>例子: <tscreen><code> # netstat -nlptu Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State ? PID/Program name tcp 0 0 0.0.0.0:32768 0.0.0.0:* LISTEN ? 1258/rpc.statd tcp 0 0 0.0.0.0:32769 0.0.0.0:* LISTEN ? 1502/rpc.mountd tcp 0 0 0.0.0.0:515 0.0.0.0:* LISTEN ? 22433/lpd Waiting tcp 0 0 1.2.3.1:139 0.0.0.0:* LISTEN ? 1746/smbd tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN ? 1230/portmap tcp 0 0 0.0.0.0:6000 0.0.0.0:* LISTEN ? 3551/X tcp 0 0 1.2.3.1:8081 0.0.0.0:* LISTEN ? 18735/junkbuster tcp 0 0 1.2.3.1:3128 0.0.0.0:* LISTEN ? 18822/(squid) tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN ? 30734/named tcp 0 0 ::ffff:1.2.3.1:993 :::* LISTEN ? 6742/xinetd-ipv6 tcp 0 0 :::13 :::* LISTEN ? 6742/xinetd-ipv6 tcp 0 0 ::ffff:1.2.3.1:143 :::* LISTEN ? 6742/xinetd-ipv6 tcp 0 0 :::53 :::* LISTEN ? 30734/named tcp 0 0 :::22 :::* LISTEN ? 1410/sshd tcp 0 0 :::6010 :::* LISTEN ? 13237/sshd udp 0 0 0.0.0.0:32768 0.0.0.0:* ? 1258/rpc.statd udp 0 0 0.0.0.0:2049 0.0.0.0:* ? - udp 0 0 0.0.0.0:32770 0.0.0.0:* ? 1502/rpc.mountd udp 0 0 0.0.0.0:32771 0.0.0.0:* ? - udp 0 0 1.2.3.1:137 0.0.0.0:* ? 1751/nmbd udp 0 0 0.0.0.0:137 0.0.0.0:* ? 1751/nmbd udp 0 0 1.2.3.1:138 0.0.0.0:* ? 1751/nmbd udp 0 0 0.0.0.0:138 0.0.0.0:* ? 1751/nmbd udp 0 0 0.0.0.0:33044 0.0.0.0:* ? 30734/named udp 0 0 1.2.3.1:53 0.0.0.0:* ? 30734/named udp 0 0 127.0.0.1:53 0.0.0.0:* ? 30734/named udp 0 0 0.0.0.0:67 0.0.0.0:* ? 1530/dhcpd udp 0 0 0.0.0.0:67 0.0.0.0:* ? 1530/dhcpd udp 0 0 0.0.0.0:32858 0.0.0.0:* ? 18822/(squid) udp 0 0 0.0.0.0:4827 0.0.0.0:* ? 18822/(squid) udp 0 0 0.0.0.0:111 0.0.0.0:* ? 1230/portmap udp 0 0 :::53 :::* ? 30734/named </code></tscreen> <sect1>Examples for tcpdump packet dumps <p>下面是一些被捕獲的數據包 ...下一次我會多弄一點來...: <sect2>Router discovery(路由發現) <p>Router advertisement <tscreen><code> 15:43:49.484751 fe80::212:34ff:fe12:3450 > ff02::1: icmp6: router ? advertisement(chlim=64, router_ltime=30, reachable_time=0, ? retrans_time=0)(prefix info: AR valid_ltime=30, preffered_ltime=20, ? prefix=2002:0102:0304:1::/64)(prefix info: LAR valid_ltime=2592000, ? preffered_ltime=604800, prefix=3ffe:ffff:0:1::/64)(src lladdr: ? 0:12:34:12:34:50) (len 88, hlim 255) </code></tscreen> <p>路由器使用link-local 地址 "fe80::212:34ff:fe12:3450" 發送廣告至 <newline>all-node-on-link multicast address "ff02::1" <newline>在它自己的 layer 2 MAC 地址 "0:12:34:12:34:50"中, <newline>包含兩個前綴2002:0102:0304:1::/64" (lifetime 30 s) 和 "3ffe:ffff:0:1::/64" (lifetime 2592000 s) <sect2>Router solicitation(路由請求) <p> <tscreen><code> 15:44:21.152646 fe80::212:34ff:fe12:3456 > ff02::2: icmp6: router solicitation ? (src lladdr: 0:12:34:12:34:56) (len 16, hlim 255) </code></tscreen> <p>擁有link-local地址 "fe80::212:34ff:fe12:3456" 和 layer 2 MAC 地址 "0:12:34:12:34:56"的節點尋找在線的 路由器. 所以發送一個路由請求到所有在線的路由器地址multicast address "ff02::2" <sect2>Neighbor discovery(發現芳鄰) <sect2>Neighbor discovery solicitation for duplicate address detection(對網路芳鄰當中 "重複的地址" 進行檢查) <p>隨著數據包從layer 2 MAC 地址 "0:12:34:12:34:56" 發送出去的同時檢查是否有節點用相同的地址發送數據包. Following packets are sent by a node with layer 2 MAC address "0:12:34:12:34:56" during autoconfiguration to check whether a potential address is already used by another node on the link sending this to the solicited-node link-local multicast address <itemize> <item>當節點將使用地址"fe80::212:34ff:fe12:3456"作為本地連結時檢查重複的地址. <tscreen><code> 15:44:17.712338 :: > ff02::1:ff12:3456: icmp6: neighbor sol: who has ? fe80::212:34ff:fe12:3456(src lladdr: 0:12:34:12:34:56) (len 32, hlim 255) </code></tscreen> <item>當節點將使用地址"2002:0102:0304:1:212:34ff:fe12:3456"作為global(全局)連結時檢查重複的地址(得到上面的廣告之後). <tscreen><code> 15:44:21.905596 :: > ff02::1:ff12:3456: icmp6: neighbor sol: who has ? 2002:0102:0304:1:212:34ff:fe12:3456(src lladdr: 0:12:34:12:34:56) (len 32, ? hlim 255) </code></tscreen> <item>當節點將使用地址"3ffe:ffff:0:1:212:34ff:fe12:3456" 作為global(全局)連結時檢查重複的地址(得到上面的廣告之後). <tscreen><code> 15:44:22.304028 :: > ff02::1:ff12:3456: icmp6: neighbor sol: who has ? 3ffe:ffff:0:1:212:34ff:fe12:3456(src lladdr: 0:12:34:12:34:56) (len 32, hlim ? 255) </code></tscreen> </itemize> <sect2>Neighbor discovery solicitation for looking for host or gateway(查找一台主機或閘道) <p> <itemize> <item>節點想要發送數據包至"3ffe:ffff:0:1::10",但是沒有layer 2 MAC 的發送地址,於是發送請求. <tscreen><code> 13:07:47.664538 2002:0102:0304:1:2e0:18ff:fe90:9205 > ff02::1:ff00:10: icmp6: ? neighbor sol: who has 3ffe:ffff:0:1::10(src lladdr: 0:e0:18:90:92:5) (len 32, ? hlim 255) </code></tscreen> <item>節點現在查找"fe80::10" <tscreen><code> 13:11:20.870070 fe80::2e0:18ff:fe90:9205 > ff02::1:ff00:10: icmp6: neighbor ? sol: who has fe80::10(src lladdr: 0:e0:18:90:92:5) (len 32, hlim 255) </code></tscreen> </itemize> <sect>Support for persistent IPv6 configuration in Linux distributions(在不同的發行版中設定IPv6) <sect1>Red Hat Linux and "clones"(小紅帽和它的弟兄娣妹) <p>自從我開始寫 <htmlurl url="http://www.bieringer.de/linux/IPv6/" name="IPv6 & Linux - HowTo">.我打算設定一個持久的IPv6配置,包含: host-only, router-only, dual-homed-host, router with second stub network, normal tunnels, 6to4 tunnels 和其它.現在我寫了一個configuration and script files 這個script有自己的HOWTO: <htmlurl url="http://www.bieringer.de/linux/IPv6/IPv6-HOWTO/scripts/current/" name=" IPv6-HOWTO/scripts/current">. 夠運的是, Red Hat Linux 從 7.1 開始就包含了這個script.多虧了Pekka Savola的幫助. <sect1>Mandrake(曼德萊克)Linux <p>從8.0後也包含了 IPv6-enabled initscript package但是有點小問題("ifconfig" misses "inet6" before "add"). <sect2>支持IPv6的網路設定 scripts 測試 <p>script library應該存在: <tscreen><code> /etc/sysconfig/network-scripts/network-functions-ipv6 </code></tscreen> <p>自動測試: <tscreen><code> # test -f /etc/sysconfig/network-scripts/network-functions-ipv6 && echo "Main ? IPv6 script library exists" </code></tscreen> <p>library的版本很重要, 更高的版本包含了更多的功能.您可以通過這個檢視它: <tscreen><code> # source /etc/sysconfig/network-scripts/network-functions-ipv6 && ? getversion_ipv6_functions 20011124 </code></tscreen> <sect2>Short hint for enabling IPv6 on current RHL 7.1, 7.2, 7.3, ...(一些小提示) <p> <itemize> <item>檢視IPv6模組是否已經掛進系統. <tscreen><code> # modprobe -c | grep net-pf-10 alias net-pf-10 off </code></tscreen> <item>如果是"off" 在 /etc/sysconfig/network 中加入IPv6的支持. <tscreen><code> NETWORKING_IPV6=yes </code></tscreen> <item>重新初始網路: <tscreen><code> # service network restart </code></tscreen> <item>IPv6模組應該掛進來了: <tscreen><code> # modprobe -c | grep ipv6 alias net-pf-10 ipv6 </code></tscreen> </itemize> <p>如果您提供路由廣告autoconfiguration 會自動為您設定, 更多的資訊請看 /usr/share/doc/initscripts-$version/sysconfig.txt. <sect1> SuSE(蘇澤斯)Linux <p>7.x 以上, 支持IPv6. 在/etc/rc.config 裡有更多的資訊. 因為不同的設定方法和scripts結構, 所以不能將Red Hat Linux 當中的方法照搬過來. <sect2>更詳盡的資訊請看: <p> <htmlurl url="http://www.feyrer.de/IPv6/SuSE73-IPv6+6to4-setup.html" name="How to setup 6to4 IPv6 with SuSE 7.3"> <sect1>Debian(迪比安)Linux <p>參照: <htmlurl url="http://people.debian.org/~csmall/ipv6/" name="IPv6 on Debian Linux"> <sect>防火牆 <sect1>使用 netfilter6防火牆 <p>netfilter6防火牆只支持2.4以上的核心.早期的2.2核心您只能用41號協議過濾IPv6-in-IPv4. <p>警告: 按照例子那樣設定並不能真正地保護您的作業系統. <sect1>更多的資訊: <p> <itemize> <item> <htmlurl url="http://www.netfilter.org/" name="Netfilter project"> <item> <htmlurl url="http://lists.samba.org/pipermail/netfilter/" name="maillist archive of netfilter users"> <item> <htmlurl url="http://lists.samba.org/pipermail/netfilter-devel/" name="maillist archive of netfilter developers"> <item> <htmlurl url="http://www.bieringer.de/linux/IPv6/status/IPv6+Linux-status-kernel.html#netfilter6" name="Unofficial status informations"> </itemize> <sect1>準備 <p>下載最新的核心: <newline> <htmlurl url="http://www.kernel.org/" name="http://www.kernel.org/"> <p> 下載最新的iptables: <p> tar: <newline> <htmlurl url="http://www.netfilter.org/" name="http://www.netfilter.org/"> <p>Source RPM for rebuild of binary (for RedHat systems): <newline> <htmlurl url="ftp://ftp.redhat.com/redhat/linux/rawhide/SRPMS/SRPMS/" name="ftp://ftp.redhat.com/redhat/linux/rawhide/SRPMS/SRPMS/"> <sect2>解開源代碼 <p>解開源代碼與更名 <tscreen><code> # tar z|jxf kernel-version.tar.gz|bz2 # mv linux linux-version-iptables-version+IPv6 </code></tscreen> <p>解開 iptables 源代碼 <tscreen><code> # tar z|jxf iptables-version.tar.gz|bz2 </code></tscreen> <p>Apply pending patches <tscreen><code> # make pending-patches KERNEL_DIR=/path/to/src/linux-version-iptables-version/ </code></tscreen> <p>Apply additional IPv6 related patches (still not in the vanilla kernel included) <tscreen><code> # make patch-o-matic KERNEL_DIR=/path/to/src/linux-version-iptables-version/ </code></tscreen> <p>在下面的選單中回答yes: <itemize> <item>ah-esp.patch <item>masq-dynaddr.patch (only needed for systems with dynamic IP assigned WAN connections like PPP or PPPoE) <item>ipv6-agr.patch.ipv6 <item>ipv6-ports.patch.ipv6 <item>LOG.patch.ipv6 <item>REJECT.patch.ipv6 </itemize> <p>檢視IPv6括展: <tscreen><code> # make print-extensions Extensions found: IPv6:owner IPv6:limit IPv6:mac IPv6:multiport </code></tscreen> <sect2>Configure, build and install new kernel(設定,編譯,安裝新的核心) <p>進入代碼目錄: <tscreen><code> # cd /path/to/src/linux-version-iptables-version/ </code></tscreen> <p>改變Makefile <tscreen><code> - EXTRAVERSION = + EXTRAVERSION = -iptables-version+IPv6-try </code></tscreen> <p>運行相關的設定:Run configure, enable IPv6 related <tscreen><code> Code maturity level options Prompt for development and/or incomplete code/drivers : yes Networking options Network packet filtering: yes The IPv6 protocol: module IPv6: Netfilter Configuration IP6 tables support: module All new options like following: limit match support: module MAC address match support: module Multiple port match support: module Owner match support: module netfilter MARK match support: module Aggregated address check: module Packet filtering: module REJECT target support: module LOG target support: module Packet mangling: module MARK target support: module </code></tscreen> <p>在系統的其它方面進行相應的修改. <sect2>Rebuild and install binaries of iptables (打造一個新的iptables) <p>確定您的核心源代碼存在於: /usr/src/linux/ <p>Rename older directory <tscreen><code> # mv /usr/src/linux /usr/src/linux.old </code></tscreen> <p>Create a new softlink <tscreen><code> # ln /path/to/src/linux-version-iptables-version /usr/src/linux </code></tscreen> <p>Rebuild SRPMS <tscreen><code> # rpm --rebuild /path/to/SRPMS/iptables-version-release.src.rpm </code></tscreen> <p> Install new iptables packages (iptables + iptables-ipv6) 安裝新的iptables <itemize> <item>On RH 7.1 systems, 通常已經有一個更早的版本, therefore use "freshen" <tscreen><code> # rpm -Fhv /path/to/RPMS/cpu/iptables*-version-release.cpu.rpm </code></tscreen> <item>如果沒有安裝,您就親自來吧: <tscreen><code> # rpm -ihv /path/to/RPMS/cpu/iptables*-version-release.cpu.rpm </code></tscreen> <item>如果在RH6.2上安裝,要加上"--nodep": <tscreen><code> # rpm -ihv --nodep /path/to/RPMS/cpu/iptables*-version-release.cpu.rpm </code></tscreen> <item>可能要為iptables加上一個softlink: <tscreen><code> # ln -s /lib/iptables/ /usr/lib/iptables </code></tscreen> </itemize> <sect1>使用方法 <sect2>檢視 <p>將模組掛進來: <tscreen><code> # modprobe ip6_tables </code></tscreen> <p>檢視 <tscreen><code> # [ ! -f /proc/net/ip6_tables_names ] && echo "Current kernel doesn't support ? 'ip6tables' firewalling (IPv6)!" </code></tscreen> <sect1>使用ip6tables <p> <tscreen><verb> 16.3.2.1. List all IPv6 netfilter entries Short # ip6tables -L Extended # ip6tables -n -v --line-numbers -L List specified filter # ip6tables -n -v --line-numbers -L INPUT 加入一個日誌: # ip6tables --table filter --append INPUT -j LOG --log-prefix "INPUT:" ? --log-level 7 加入一個入站丟棄的條件: # ip6tables --table filter --append INPUT -j DROP 移除一個條件: # ip6tables --table filter --delete INPUT 1 允許 ICMPv6: Using older kernels (unpatched kernel 2.4.5 and iptables-1.2.2) no type can be specified 允許入站 ICMPv6 經過 tunnels # ip6tables -A INPUT -i sit+ -p icmpv6 -j ACCEPT 允許出站 ICMPv6 經過 tunnels # ip6tables -A OUTPUT -o sit+ -p icmpv6 -j ACCEPT Newer kernels allow specifying of ICMPv6 types: # ip6tables -A INPUT -p icmpv6 --icmpv6-type echo-request -j ACCEPT 限制Rate-limiting Because it can happen (author already saw it to times) that an ICMPv6 storm will raise up, you should use available rate limiting for at least ICMPv6 ruleset. In addition logging rules should also get rate limiting to prevent DoS attacks against syslog and storage of log file partition. An example for a rate limited ICMPv6 looks like: # ip6tables -A INPUT --protocol icmpv6 --icmpv6-type echo-request -j ACCEPT --match limit --limit 30/minute 允許入站的 SSH Here an example is shown for a ruleset which allows incoming SSH connection from a specified IPv6 address 允許來自 3ffe:ffff:100::1/128 的 SSH 入站 # ip6tables -A INPUT -i sit+ -p tcp -s 3ffe:ffff:100::1/128 --sport 512:65535 ? --dport 22 -j ACCEPT 允許回應包Allow response packets (此刻 IPv6 連結追蹤不在 mainstream netfilter6 implemented 當中) # ip6tables -A OUTPUT -o sit+ -p tcp -d 3ffe:ffff:100::1/128 --dport 512:65535 ? --sport 22 ! --syn j ACCEPT 充許 tunneled IPv6-in-IPv4 Tto accept tunneled IPv6-in-IPv4 packets, 在IPv4 防火牆做相應的設定 firewall setup relating to such packets, for example 充許 interface ppp0 的 IPv6-in-IPv4 入站 # iptables -A INPUT -i ppp0 -p ipv6 -j ACCEPT 充許 interface ppp0 的 IPv6-in-IPv4 出站 # iptables -A OUTPUT -o ppp0 -p ipv6 -j ACCEPT If you have only a static tunnel, you can specify the IPv4 addresses, too, like 充許來自 endpoint 1.2.3.4 的 IPv6-in-IPv4 通過 interface ppp0 入站 # iptables -A INPUT -i ppp0 -p ipv6 -s 1.2.3.4 -j ACCEPT 充許來自 endpoint 1.2.3.4 的 IPv6-in-IPv4 通過 interface ppp0 入站 # iptables -A OUTPUT -o ppp0 -p ipv6 -d 1.2.3.4 -j ACCEPT 16.3.2.10. Protection against incoming TCP connection requests 極力推薦! 出於安全考慮 您應當加入一個阻止TCP 連結請求入站的條件 . Adapt "-i" option, if other interface names are in use! 阻止入站的 TCP 連結請求 # ip6tables -I INPUT -i sit+ -p tcp --syn -j DROP 在路由器後面 阻止入站的 TCP 連結請求 # ip6tables -I FORWARD -i sit+ -p tcp --syn -j DROP 可能這些條件以經存在其它地方,但這是您想當然的想法.最好建一個包含很多條件的 script 然後執行. 16.3.2.11.阻止入站的 UDP 連結請求 極力推薦! 提起過我的防火牆資訊可以控制出站 UDP/TCP 會話的端口. 所以如果您的本地IPv6系統使用本地端口 比如:從 32768 至 60999 您也可以像這樣過濾UDP連結 (直到連結跟蹤正常工作) like: 阻止入站的 UDP 數據包 , 斬斷請求出站的回應數據包 # ip6tables -I INPUT -i sit+ -p udp ! --dport 32768:60999 -j DROP 在路由器上面阻止入站的 UDP 數據包轉寄到路由器後面的主機 ip6tables -I FORWARD -i sit+ -p udp ! --dport 32768:60999 -j DROP </verb></tscreen> <sect2>實例: <p>下面這個實例是一個經典, 由 Happy netfilter6 ruleset 生成: <tscreen><code> # ip6tables -n -v -L Chain INPUT (policy DROP 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 extIN all sit+ * ::/0 ::/0 4 384 intIN all eth0 * ::/0 ::/0 0 0 ACCEPT all * * ::1/128 ::1/128 0 0 ACCEPT all lo * ::/0 ::/0 0 0 LOG all * * ::/0 ::/0 ? LOG flags 0 level 7 prefix `INPUT-default:' 0 0 DROP all * * ::/0 ::/0 Chain FORWARD (policy DROP 0 packets, 0 bytes) pkts bytes target prot opt in out source destination ? 0 0 int2ext all eth0 sit+ ::/0 ::/0 0 0 ext2int all sit+ eth0 ::/0 ::/0 0 0 LOG all * * ::/0 ::/0 ? LOG flags 0 level 7 prefix `FORWARD-default:' 0 0 DROP all * * ::/0 ::/0 Chain OUTPUT (policy DROP 0 packets, 0 bytes) pkts bytes target prot opt in out source destination ? 0 0 extOUT all * sit+ ::/0 ::/0 4 384 intOUT all * eth0 ::/0 ::/0 0 0 ACCEPT all * * ::1/128 ::1/128 0 0 ACCEPT all * lo ::/0 ::/0 0 0 LOG all * * ::/0 ::/0 ? LOG flags 0 level 7 prefix `OUTPUT-default:' 0 0 DROP all * * ::/0 ::/0 Chain ext2int (1 references) pkts bytes target prot opt in out source destination ? 0 0 ACCEPT icmpv6 * * ::/0 ::/0 0 0 ACCEPT tcp * * ::/0 ::/0 ? tcp spts:1:65535 dpts:1024:65535 flags:!0x16/0x02 0 0 LOG all * * ::/0 ::/0 ? LOG flags 0 level 7 prefix `ext2int-default:' 0 0 DROP tcp * * ::/0 ::/0 0 0 DROP udp * * ::/0 ::/0 0 0 DROP all * * ::/0 ::/0 Chain extIN (1 references) pkts bytes target prot opt in out source destination ? 0 0 ACCEPT tcp * * 3ffe:400:100::1/128 ::/0 ? tcp spts:512:65535 dpt:22 0 0 ACCEPT tcp * * 3ffe:400:100::2/128 ::/0 ? tcp spts:512:65535 dpt:22 0 0 ACCEPT icmpv6 * * ::/0 ::/0 0 0 ACCEPT tcp * * ::/0 ::/0 ? tcp spts:1:65535 dpts:1024:65535 flags:!0x16/0x02 0 0 ACCEPT udp * * ::/0 ::/0 ? udp spts:1:65535 dpts:1024:65535 0 0 LOG all * * ::/0 ::/0 ? limit: avg 5/min burst 5 LOG flags 0 level 7 prefix `extIN-default:' 0 0 DROP all * * ::/0 ::/0 Chain extOUT (1 references) pkts bytes target prot opt in out source destination ? 0 0 ACCEPT tcp * * ::/0 ? 3ffe:ffff:100::1/128tcp spt:22 dpts:512:65535 flags:!0x16/0x02 0 0 ACCEPT tcp * * ::/0 ? 3ffe:ffff:100::2/128tcp spt:22 dpts:512:65535 flags:!0x16/0x02 0 0 ACCEPT icmpv6 * * ::/0 ::/0 0 0 ACCEPT tcp * * ::/0 ::/0 ? tcp spts:1024:65535 dpts:1:65535 0 0 ACCEPT udp * * ::/0 ::/0 ? udp spts:1024:65535 dpts:1:65535 0 0 LOG all * * ::/0 ::/0 ? LOG flags 0 level 7 prefix `extOUT-default:' 0 0 DROP all * * ::/0 ::/0 Chain int2ext (1 references) pkts bytes target prot opt in out source destination ? 0 0 ACCEPT icmpv6 * * ::/0 ::/0 0 0 ACCEPT tcp * * ::/0 ::/0 ? tcp spts:1024:65535 dpts:1:65535 0 0 LOG all * * ::/0 ::/0 ? LOG flags 0 level 7 prefix `int2ext:' 0 0 DROP all * * ::/0 ::/0 0 0 LOG all * * ::/0 ::/0 ? LOG flags 0 level 7 prefix `int2ext-default:' 0 0 DROP tcp * * ::/0 ::/0 0 0 DROP udp * * ::/0 ::/0 0 0 DROP all * * ::/0 ::/0 Chain intIN (1 references) pkts bytes target prot opt in out source destination ? 0 0 ACCEPT all * * ::/0 ? fe80::/ffc0:: 4 384 ACCEPT all * * ::/0 ff02::/16 Chain intOUT (1 references) pkts bytes target prot opt in out source destination ? 0 0 ACCEPT all * * ::/0 ? fe80::/ffc0:: 4 384 ACCEPT all * * ::/0 ff02::/16 0 0 LOG all * * ::/0 ::/0 ? LOG flags 0 level 7 prefix `intOUT-default:' 0 0 DROP all * * ::/0 ::/0 </code></tscreen> <sect>安全 <sect1>Access limitations <p>有許多服務使用 tcp_wrapper library 控制訪問.Below is described the use of tcp_wrapper <p>內容有待增加... <sect1>IPv6安全審核 <p> 目前沒有什麼較好的商業工具來進行 <sect2>Legal issues <p>警告:您只能掃瞄自己的系統,不然,可能會觸及法律.開始之前,請檢察您要掃瞄的IPv6目標地址兩次!. <sect1>Security auditing using IPv6-enabled netcat(使用適應IPv6的netcat) <p>關於IPv6-enabled netcat的詳細資訊請參照:<htmlurl url="http://www.bieringer.de/linux/IPv6/status/IPv6?status-apps.html#security-auditing" name=" IPv6?status-apps/security-auditing"> <p>例子: <tscreen><code> # nc6 ::1 daytime 13 JUL 2002 11:22:22 CEST </code></tscreen> <sect1> Security auditing using IPv6-enabled nmap <p>全世界最為優秀的掃瞄程式之一.它的首頁: <htmlurl url="http://www.insecure.org/nmap/" name="http://www.insecure.org/nmap/"> 從 3.10ALPHA1 的版本開始支持IPv6. 例子: <tscreen><code> # nmap -6 -sT ::1 Starting nmap V. 3.10ALPHA3 ( www.insecure.org/nmap/ ) Interesting ports on localhost6 (::1): (The 1600 ports scanned but not shown below are in state: closed) Port State Service 22/tcp open ssh 53/tcp open domain 515/tcp open printer 2401/tcp open cvspserver Nmap run completed -- 1 IP address (1 host up) scanned in 0.525 seconds </code></tscreen> <sect1>Security auditing using IPv6-enabled strobe <p> Strobe 同 NMap相比更不具靈活性,但已經有 IPv6-enabling patch (see IPv6?status-apps/security-auditing for more). Usage example: <tscreen><code> # ./strobe ::1 strobe 1.05 (c) 1995-1999 Julian Assange <proff@iq.org>. ::1 2401 unassigned unknown ::1 22 ssh Secure Shell - RSA encrypted rsh ::1 515 printer spooler (lpd) ::1 6010 unassigned unknown ::1 53 domain Domain Name Server </code></tscreen> <sect1>審核結果 <p>如果審核結果同您的IPv6安全策略有出入, 請堵上檢測出的漏洞. <sect>Encryption and Authentication(加密和認證) <p>Support in kernel <p>Currently missing in 2.4, perhaps in 2.5 (see below). There is an issue about keeping the Linux kernel source free of export/import-control-laws regarding encryption code. This is also one case why <htmlurl url="http://www.freeswan.org/" name="FreeS/WAN"> project (IPv4 only IPsec) isn't still contained in vanilla source. <p>Support in USAGI kernel <p>The USAGI project has taken over in July 2001 the IPv6 enabled FreeS/WAN code from the<htmlurl url="http://www.ipv6.iabg.de/downloadframe/" name="IABG / IPv6 Project"> and included in their kernel extensions, but still work in progress, means that not all IABG features are already working in USAGI extension. <sect1>用法 <p>參照: <htmlurl url="http://www.freeswan.org/doc.html" name="FreeS/WAN / Online documentation"> <sect>線上測試工具 <p>內容有待增加... 歡迎提建議! <itemize> <item>finger, nslookup, ping, traceroute, whois: <htmlurl url="" name="UK IPv6 Resource Centre / The test page"> <item>ping, traceroute, tracepath, 6bone registry, DNS: <htmlurl url="http://www.join.uni-muenster.de/lab/testtools.html" name=" JOIN / Testtools"> (German language only, but should be no problem for non German speakers) <item>traceroute6, whois: <htmlurl url="http://www.ipng.nl/" name="IPng.nl"> </itemize> <sect>其它資訊 <sect1>線上資訊 <p>加入IPv6 backbone骨幹網路 <newline>IPv6 test backbone: <htmlurl url="http://www.6bone.net/6bone_hookup.html" name="6bone">, <htmlurl url="http://www.6bone.net/6bone_hookup.html" name="How to join 6bone"> <sect2>主要的註冊區域 <p> <itemize> <item>America: <htmlurl url="http://www.arin.net/" name="ARIN"> <htmlurl url="http://www.ripe.net/" name="Ripe"> <item>Asia/Pacific: <htmlurl url="http://www.apnic.net/" name="APNIC"> <item>Latin America and Caribbea: <htmlurl url="http://lacnic.org/" name="LACNIC"> </itemize> <p>Also a list of major (prefix length 35) allocations per local registry is available here: <newline> <htmlurl url="http://www.ripe.net/ripencc/mem-services/registration/ipv6/ipv6allocs.html" name=" Ripe NCC / IPv6 allocations" > <sect2>Tunnel brokers <p><itemize> <item> <htmlurl url="http://www.freenet6.net/" name="Freenet6"> Canada <item> <htmlurl url="http://ipv6tb.he.net/" name="Hurricane Electric"> US backbone <item> <htmlurl url="https://carmen.cselt.it/ipv6tb/" name="Centro Studi e Laboratory Telecomunicazioni"> Italy <item> <htmlurl url="http://tunnel.be.wanadoo.com/" name="Wanadoo"> Belgium <item> <htmlurl url="http://tb.6test.edu.cn/" name="CERTNET-Nokia"> China <item> <htmlurl url="http://joshua.informatik.uni-leipzig.de/" name="Tunnelbroker Leipzig"> Germany - DialupUsers with dynamic IP's can get a fix IPv6 IP... <item> <htmlurl url="http://www.iij.ad.jp/IPv6/index-e.html" name="Internet Initiative Japan"> Japan - with IPv6 native line service and IPv6 tunneling Service <item> <htmlurl url="http://www.xs26.net/" name="XS26 - Access to Six">Netherland - with POPs in Slovak Republic, Czech Republic, Netherlands, Germany and Hungary. <item> <htmlurl url="http://www.ipng.nl/" name="IPng Netherland"> Netherland - Intouch, SurfNet, AMS-IX, UUNet, Cistron, RIPE NCC and AT& T are connected at the AMS-IX. It is possible (there are requirements...) to get an static tunnel. <item> <htmlurl url="http://www.uninett.no/testnett/index.en.html" name="UNINETT"> Norway - Pilot IPv6 Service (for Customers): tunnelbroker & address allocation <item> <htmlurl url="http://www.uk.v6.ntt.net/" name="NTT Europe"> <htmlurl url="http://www.nttv6.net/" name="NTT Euroope"> United Kingdom - IPv6 Trial. IPv4 Tunnel and native IPv6 leased Line connections. POPs are located in London, UK Dusseldorf, Germany New Jersey, USA (East Coast) Cupertino, USA (West Coast) Tokyo, Japan <item> <htmlurl url="http://www.es.net/hypertext/welcome/pr/ipv6.html" name="ESnet"> USA - Energy Sciences Network: Tunnel Registry & Address Delegation for directly connected ESnet sites and ESnet collaborators. <item> <htmlurl url="http://www.6ren.net/" name="6REN"> USA - The 6ren initiative is being coordinated by the Energy Sciences Network (ESnet), the network for the Energy Research program of the US Dept. of Energy, located at the University of California's Lawrence Berkeley National Laboratory </itemize> <p> 更多的IPv6資訊: <htmlurl url="http://www.ipv6-net.de/" name="ipv6-net.org"> <sect2>6to4 <p> <itemize> <item> <htmlurl url="http://www.kfu.com/~nsayer/6to4/" name="NSayer's 6to4 information"> <item> <htmlurl url="http://www.faqs.org/rfcs/rfc3068.html" name="RFC 3068 / An Anycast Prefix for 6to4 Relay Routers"> </itemize> <sect2> Latest news <p> <itemize> <item> <htmlurl url="http://hs247.com/"> name="hs247 / IPv6 news and information"> also homepage for #ipv6 channel on EFnet <item> <htmlurl url="http://bofh.st/ipv6/" name="bofh.st / latest IPv6 news"> but currently Jan 2002 outdated..., also homepage for IPv6 channel on IRCnet <item> <htmlurl url="http://www.ipv6-net.de/" name="ipv6-net.org"> German forum </itemize> <sect2>有關協議的參考 <p> <itemize> <item> <htmlurl url="http://www.hs247.com/ipv6rfc.html" name="HS247 / IPv6 RFC list"> Publishing the list of IPv6-related RFCs is beyond the scope of this document, but given URLs will lead you to such lists: <item> <htmlurl url="http://playground.sun.com/pub/ipng/html/specs/standards.html" name="IPng Standardization Status"> a little bit out-of-sync at the moment <item> <htmlurl url="http://www.ipv6.org/specs.html" name="IPv6 Related Specifications"> on IPv6.org </itemize> <sect2>目前與IPv6有關的草案: <p> <itemize> <item> <htmlurl url="http://www.ietf.org/ids.by.wg/ipv6.html" name="IP Version 6 "> ipv6 <item> <htmlurl url="http://www.ietf.org/ids.by.wg/ngtrans.html" name="Next Generation Transitition "> <item> <htmlurl url="http://www.ietf.org/ids.by.wg/dhc.html" name="Dynamic Host Configuration "> <item> <htmlurl url="http://www.ietf.org/ids.by.wg/dnsext.html" name="Domain Name System Extension "> <item> <htmlurl url="http://www.ietf.org/ids.by.wg/mobileip.html" name="Mobile IP mobileip"> </itemize> <sect2> 其它 <p> <itemize> <item> <htmlurl url="http://www.networksorcery.com/enp/protocol/ipv6.htm" name="Network Sorcery / IPv6, Internet Protocol version 6"> IPv6 protocol header <item> <htmlurl url="http://www.switch.ch/lan/ipv6/references.html" name="SWITCH IPv6 Pilot / References"> big list of IPv6 references maintained by Simon Leinen <item> <htmlurl url="http://steinbeck.ucs.indiana.edu:47401/" name="Advanced Network Management Laboratory / IPv6 Address Oracle"> shows you IPv6 addresses in detail </itemize> <sect2>統計 <p> <itemize> <item> <htmlurl url="http://www.space.net/~gert/RIPE/" name="IPv6 routing table history"> created by Gert Ding </itemize> <sect1>更多的資訊 <p>期待加入更多的內容,歡迎提建議! <sect2>Linux related <p> <itemize> <item> <htmlurl url="http://www.bieringer.de/linux/IPv6/" name="IPv6-HowTo for Linux by Peter Bieringer"> - Germany, and his <item> <htmlurl url="ftp://ftp.bieringer.de/pub/linux/IPv6/" name="Bieringer / IPv6 - software archive"> <item> <htmlurl url="http://www.bieringer.de/linux/IPv6/status/IPv6+Linux-status.html" name="Linux+IPv6 status by Peter Bieringer"> Germany <item> <htmlurl url="http://www.linux-ipv6.org/" name="USAGI project"> Japan, and their <item> <htmlurl url="ftp://ftp.linux-ipv6.org/pub/" name="USAGI project - software archive"> <item> <htmlurl url="http://www.bugfactory.org/~gav/ipv6/" name="Gav's Linux IPv6 Page"> <item> <htmlurl url="http://project6.ferrara.linux.it/" name="Project6 - IPv6 Networking For Linux"> Italy, and their <item> <htmlurl url="ftp://ftp.ferrara.linux.it/pub/project6/" name=" Project6 - software archive"> </itemize> <sect1>通信論壇 <p> <tscreen><verb> +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | | | Focus Request e-mail address What to subscribe Maillist e-mail address Language Access through WWW | +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Linux kernel majordomo (at) oss.sgi.com netdev netdev (at) oss.sgi.com English http://oss.sgi.com/projects/netdev/archive/ | | networking | | including | | IPv6 | +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Linux and majordomo (at) linux-ipv6 linux-ipv6 (at) list.f00f.org English | | list.f00f.org | | IPv6 in (moderated) | | general (1) | +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Mobile IP majordomo (at) mipl (at) list.mipl. English http://www.mipl.mediapoli.com/mailinglist.html | | (v6) for list.mipl.mediapoli.com mipl mediapoli.com http://www.mipl.mediapoli.com/mail-archive/ | | Linux | | | +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |Linux IPv6 usagi-users-ctl usagi-users English http://www.mipl.mediapoli.com/mailinglist.html | |users using (at) linux-ipv6.org (at) linux-ipv6.org http://www.mipl.mediapoli.com/mail-archive/ | |USAGI | |extension | +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | | |IPv6 on Debian debian-ipv6 (at) English http://lists.debian.org/debian-ipv6/ | |Linux Web-based, see URL lists.debian.org | |Web-based | | | +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | | |IPv6/6bone in majordomo (at) ipv6 (at) German/English http://www.join.uni-muenster.de/JOIN/ipv6/texte-englisch/mailingliste.html | | Germany atlan.uni-muenster.de ipv6 uni-muenster.de http://www.join.uni-muenster.de/local/majordomo/ipv6/ | | | +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | | | 6bone majordomo (at) 6bone 6bone (at) English http://www.6bone.net/6bone_email.html | | isi.edu isi.edu http://ryouko.dgim.crc.ca/ipv6/ | | http://www.wcug.wwu.edu/lists/6bone/ | | | +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | | |IPv6 majordomo (at) ipng ipng (at) English http://playground.sun.com/pub/ipng/html/instructions.html | |discussions sunroof.eng.sun.com sunroof.eng.sun.com ftp://playground.sun.com/pub/ipng/mail-archive/ | | http://www.wcug.wwu.edu/lists/ipng/ | +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | | | IPv6 users majordomo (at) users users (at) ipv6.org English http://www.ipv6.org/mailing-lists.html | | in general ipv6.org | | | +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | | | Bugtracking of bugtraq-subscribe (at) bugtraq (at) English http://online.securityfocus.com/popups/forums/bugtraq/intro.shtml | | Internet securityfocus.com securityfocus.com (moderated) http://online.securityfocus.com/archive/1 | | applications (2) | | | +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | | | IPv6 in general Web-based, see URL ipv6 (at) ipng.nl English http://mailman.ipng.nl/mailman/listinfo/ipv6/ | | http://mailman.ipng.nl/pipermail/ipv6/ | | | +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | | | | | | | | | majordomo (at) majordomo (at) ipv6 ipv6 (at) mfa.eti.br Portuguese http://www.mfa.eti.br/listas.html | | mfa.eti.br mfa.eti.br | | | +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ (1) recommended for common Linux & IPv6 issues. (2) very recommended if you provide server applications. 是不是有什麼遺漏? 歡迎你的建議! 這裡還有另一份清單: http://www.join.uni-muenster.de/JOIN/ipv6/texte-englisch/ipv6.infoquellen.html </verb></tscreen> <sect2>有關的發行版 <p> <itemize> <item> <htmlurl url="http://www.pld.org.pl/" name="Polish(ed) Linux Distribution"> ("market leader" in containing IPv6 enabled packages) <item> <htmlurl url="http://www.redhat.com/" name="Red Hat Linux"> <item> <htmlurl url="http://www.netcore.fi/pekkas/linux/ipv6/" name=" Pekka Savola's IPv6 packages"> Germany <item> <htmlurl url="http://www.debian.org/" name="Debian Linux"> <item> <htmlurl url="http://people.debian.org/~csmall/ipv6/" name="Craig Small's IPv6 information and status"> <item> <htmlurl url="http://www.suse.com/" name="SuSE Linux"> <item> <htmlurl url="http://www.linux-mandrake.com/" name="Linux Mandrake"> </itemize> <sect>歷史 <p>x.y版本 發佈在Internet上. <newline>x.y.z 表示正在進行的版本and only published as LyX file on CVS. <tscreen><verb> Releases 0.x 0.31 2002-09-29/PB: Extend information in proc-filesystem entries 0.30 2002-09-27/PB: Add some maillists 0.29 2002-09-18/PB: Update statement about nmap (triggered by Fyodor) 0.28.1 2002-09-16/PB: Add note about ping6 to multicast addresses, add some labels 0.28 2002-08-17/PB: Fix broken LDP/CVS links, add info about Polish translation, add URL of the IPv6 Address Oracle 0.27 2002-08-10/PB: Some minor updates 0.26.2 2002-07-15/PB: Add information neighbor discovery, split of firewalling (got some updates) and security into extra chapters 0.26.1 2002-07-13/PB: Update nmap/IPv6 information 0.26 2002-07-13/PB: Fill /proc-filesystem chapter, update DNS information about depricated A6/DNAME, change P-t-P tunnel setup to use of "ip" only 0.25.2 2002-07-11/PB: Minor spelling fixes 0.25.1 2002-06-23/PB: Minor spelling and other fixes 0.25 2002-05-16/PB: Cosmetic fix for 2\^{ }128, thanks to Jos□ Ab□lio Oliveira Matos for help with LyX 0.24 2002-05-02/PB: Add entries in URL list, minor spelling fixes 0.23 2002-03-27/PB: Add entries in URL list and at maillists, add a label and minor information about IPv6 on RHL 0.22 2002-03-04/PB: Add info about 6to4 support in kernel series 2.2.x and add an entry in URL list and at maillists 0.21 2002-02-26/PB: Migrate next grammar checks submitted by John Ronan 0.20.4 2002-02-21/PB: Migrate more grammar checks submitted by John Ronan, add some additional hints at DNS section 0.20.3 2002-02-12/PB: Migrate a minor grammar check patch submitted by John Ronan 0.20.2 2002-02-05/PB: Add mipl to maillist table 0.20.1 2002-01-31/PB: Add a hint how to generate 6to4 addresses 0.20 2002-01-30/PB: Add a hint about default route problem, some minor updates 0.19.2 2002-01-29/PB: Add many new URLs 0.19.1 2002-01-27/PB: Add some forgotten URLs 0.19 2002-01-25/PB: Add two German books, fix quote entinities in exported SGML code 0.18.2 2002-01-23/PB: Add a FAQ on the program chapter 0.18.1 2002-01-23/PB: Move "the end" to the end, add USAGI to maillists 0.18 2002-01-22/PB: Fix bugs in explanation of multicast address types 0.17.2 2002-01-22/PB: Cosmetic fix double existing text in history (at 0.16), move all credits to the end of the document 0.17.1 2002-01-20/PB: Add a reference, fix URL text in online-test-tools 0.17 2002-01-19/PB: Add some forgotten information and URLs about global IPv6 addresses 0.16 2002-01-19/PB: Minor fixes, remove "bold" and "emphasize" formats on code lines, fix "too long unwrapped code lines" using selfmade utility, extend list of URLs. 0.15 2002-01-15/PB: Fix bug in addresstype/anycast, move content related credits to end of document 0.14 2002-01-14/PB: Minor review at all, new chapter "debugging", review "addresses", spell checking, grammar checking (from beginning to 3.4.1) by Martin Krafft, add tcpdump examples, copy firewalling/netfilter6 from IPv6+Linux-HowTo, minor enhancements 0.13 2002-01-05/PB: Add example BIND9/host, move revision history to end of document, minor extensions 0.12 2002-01-03/PB: Merge review of David Ranch 0.11 2002-01-02/PB: Spell checking and merge review of Pekka Savola 0.10 2002-01-02/PB: First public release of chapter 1 </verb></tscreen> </article>