Skip to main content

· One min read

IPsec 需要透過一個安全的金鑰交換過程。在 Linux 中是透過 IKE daemons 程式來達成。它們也使用公用安全機制 (common known secret, 即一般所言的 "預先分享安全機制"(pre-shared secret)), 或使用 RSA 金鑰 (此金鑰也可用在 X.509 認證上) 處理對方的認證。目前 Linux 上提供有兩種不同的 IKE daemons, 兩者在使用與配置過程上完全不同。相較於 * S/WAN , 筆者比較偏好 "pluto" 實作,因為 "pluto" 比較容易而且只需一步設定安裝.

· One min read

此 HOWTO 文件應列於 "網路 / 協定" 分類

This HOWTO should be listed in category "Networking/Protocols".

· 4 min read

2.4.1. 為什麼稱作 IPv6, 而非繼 IPv4 之後稱為 IPv5 ? 在任何 IP 標頭中,前 4 位元是為協定版本號所保留的。所以理論上一個協定的版本號在 0 和 15 之間都是可以的:

* 4 己經為IPv4所使用.
* 5 為串流( Stream )協定所保留 (STP, RFC 1819 / 網際網路串流協定第二版)(不曾真正公開使用過)

因此下一個可以用的號碼是 6, 因此 IPv6 就這樣誕生了!

2.4.2. IPv6 位址:為什麼 IPv6 位址位元數要這麼長? 在設計 IPv4 的時候,人們認為 32 位元的長度足夠全世界使用。回頭看看這些年來,32 位元就現在和未來幾年來仍足以使用. 然而,32 位元過不久將不能滿足各種網路設備對全球 IP 位址的需求。想一想將來要連結網路的移動電話,汽車 (包括電子總控系統), 烤麵包機,冰箱,照明開關...

所以設計者選擇了 128 位元,是今天 IPv4 大小 (2^96) 與長度的 4 倍.

雖然實際可使用的大小可能比它看起來的還要小。這是因為現在的定義位址設計,64 位元被用於界面識別. 另外 64 位元則用於路由。假設於目前嚴格的集合階層 (/48, /35, ...), IPv6 所能提供的位址空間仍可能有耗盡的一天,但在可見的將來中應仍不會發生.

您可由 RFC 1715 / The H Ratio for Address Assignment Efficiency and RFC 3194 / The Host-Density Ratio for Address Assignment Efficiency. 中得到更進一步的資訊

2.4.3. IPv6 位址:為什麼在新的設計裡位元數這麼少? 雖然,可能有些人在考慮 IPv8 和 IPv16, 然而這些設計無論從接受和執行都是那麼的遙遠. 目前 128bit 對於標頭和數據傳輸延遲來說是最佳的選擇. 考慮到在 IPv4 和 IPv6 的最小最大傳輸單位 (MTU), 它們分別是 576 位元組和 1280 位元組, IPv4 的標頭長度為 20 位元組和 (最小值,加上 IPv4 位址選項可以增大到 60 位元組), 在 IPv6 的標頭中則是 48 位元組 (固定不變的), 標頭分別占它們 MTU 的 3.4% 和 3.8%, 這意味著兩個協定標頭所造成的負載幾乎相同. 更多位元的位址需要更大的標頭,因而佔據更大的負載.

同樣,考慮到正常連結的 MTU 最大值 (像現在的以太網): 1500 位元組 (特別的例子:Jumbo frames 使用了 9k 位元組). 最終,如果在要傳輸的第三層封包中 10% 或 20% 都用來傳送位址而非封包內容,這可能不是個很好的設計方式.

· 2 min read

IPv6 是將用來取代 IPv4 (也叫做 IP) 的ㄧ種新的第三層協定 (請參考 linuxports/howto/intro_to_networking/ISO - OSI Model) IPv4 是很早以前設計的 (1980 年一月,RFC 760 / 網路協定 (Internet Protocol)) , 自協定設計之初即不斷地有人要求 IP 網路協定應提供更多的位址和更高的性能. RFC 2460 / 網路協定第六版 (Internet Protocol Version 6 Specification) 是最新的 RFC 版本. IPv6 與 IP 最主要的不同點在於重新設計了封包標頭。包括將位址的長度從 32 bits 增加到 128 bits. 因為第三層主要負責使用基於位址的封包路由來達成端對端位址傳輸。因此與 IPv4 ㄧ樣,傳輸時必需包含新的 IPv6 位址 (來源和目標). 想知道更多關於 IPv6 歷史的資訊的話可以參考看看較舊版本的 IPv6 相關 RFC 列表 SWITCH IPv6 Pilot / References http://www.switch.ch/lan/ipv6/references.html

· 3 min read

前文提到 IPv6 的位址為 128 位元。這麼高的位元數換算成一般十進位數字表示法的話,長度將達到 10 的 39 次方:

2^128-1: 340282366920938463463374607431768211455

這麼長的數字或位址將很難記得住。而且,IPv6 的位址是逐位定位的 (就像 IPv4, 但這個觀點不是公認的). 所以透過十六進制表示法能更好地表示這些數字。將每 4 位元 (也叫做 "nibble") 表示為數字 (0-9) 或字符 a-f (10-15). 這種表示法可以將 IPv6 的地址長度縮減到可用 32 個字符來表示.

2^128-1: 0xffffffffffffffffffffffffffffffff

這種表示法仍然不是很方便. (因為這樣一長串看下來很容易就會混淆或遺漏了單個十六進制數字), 所以 IPv6 的設計者將地址形式定為每 16 位元就用 "冒號" 區分開來. 此外,開頭的 "0x"(在程式設計當中用來表示十六進制數值) 也被省略了:

2^128-1: ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff

如此一來,一個可用的地址 (請參考之後提到的地址類型) 如下:

3ffe:ffff:0100:f101:0210:a4ff:fee3:9566

為了簡化,每個 16 位元區塊中高位元的 0 可以被省略:

3ffe:ffff:0100:f101:0210:a4ff:fee3:9566 -> ¬ 3ffe:ffff:100:f101:210:a4ff:fee3:9566

連續值為 0 的 16 位元位址區塊可以用 "::" 表示。但是在一個 IPv6 位址當中只能使用這種簡寫一次,否則就不再是唯一表示的位址了:

3ffe:ffff:100:f101:0:0:0:1 -> 3ffe:ffff:100:f101::1

簡化得最短的 IPv6 本地位址:

0000:0000:0000:0000:0000:0000:0000:0001 -> ::1

也有一種方法叫做簡潔 (compact, base85 coded) 表示法。定義於 RFC 1924 / IPv6 簡潔位址表示法 (定於 1996 年四月一日), 但從沒有被廣泛使用過,可能只是個愚人節笑話。但還是給個例子:

ipv6calc --addr_to_base85 3ffe:ffff:0100:f101:0210:a4ff:fee3:9566

Itu&-ZQ82s>J%s99FJXT

資訊: ipv6calc 是一個 IPv6 地址格式的計算和轉換的計劃,您可以在 ipv6calc 首頁中找到: http://www.deepspace6.net/projects/ipv6calc.html 鏡像站: http://mirrors.bieringer.de/www.deepspace6.net/projects/ipv6calc.html