顯示具有 ipv6 標籤的文章。 顯示所有文章
顯示具有 ipv6 標籤的文章。 顯示所有文章

2011年12月27日 星期二

創世紀星球網路 - 認識 IPv6

負責全球網域名稱及 IP 位址的授權機構 IANA, 聲明 IPv4 位址明年 (2012) 既將發完, 如 IPv4 位址真的發完, 那新的 ADSL 用戶是不是以後要排隊, 等舊用戶退租才可申請, 要解決這個大災難, 那就要靠 IPv6. IPv6 在技術面已相當成熟, 但在執行面確是相當困難, 這並不是換新系統或新設備就可以馬上上線, IT 人員需時間專業養成, 舊的應用系統需重新改寫, 所以 IPv6 是無法立即套用到所有系統, 有鑑於此, 及早學習及佈署 IPv6 是相當重要的課題

IPv6 位址的表示法 (十六進位世界)
IPv6 的位址長度使用 128 bits(即 16 bytes),可配置的位址有 2^128 很驚人的數量。這樣的數量夠地球上所有具有通訊的裝置來使用,並且還剩很多, 但不知當與其它星球聯盟時夠不夠用.

IPv6 全部使用 16 進位數字和「:」分隔字元來表示位址,例如以下位址:

2001:0288:2005:babe:0000:0000:0000:0001
fe80:0000:0000:0000:d8d2:d8ff:fef5:b4e
fd00:0200:0000:8002:a88d:f6ff:fe7c:29aa

上面例子, 每一個 IPv6 位址, 共有八組四個 16 進位數字組成, 每組之間使用「:」分隔。

IPv6 位址的簡寫

1. 各組數字之前的 0 可以省略,全部是 0 可以只寫一個 0:

如:2001:2005:babe:0200:0000:0000:0000:0001 可寫成 2001:2005:babe:200:0:0:0:1

2. 連續多組 0 可用 :: 代表,但僅限一次:

如:2001:2005:babe:200:0:0:0:1 可寫成 2001:2005:babe:200::1

3. 八組都是 0 可寫成 ::

4. 0:0:0:0:0:0:0:1 的對應寫法是 ::1

IPv6 位址的 Prefix (參考文章)


一個完整的 IPv6 位址,必需加上 Prefix,如下 :


2001:2005:babe:200::1/64

在上面位址的 /64 即 prefix 的表示法,主要的功能就是區隔出 "網路" 與 "主機" 部份,這意思是說,這個 IPv6 位址前面 64 個位元用來代表網路部份,而後面 64 個位元用來代表主機部份. 至於網路部份在下一篇文章, 會詳細說明

IPv6 位址的運作方式

IPv6 依其運作特性,可分成以下三類:

1. Unicast address:點對點傳送位址

2. Multicast address:頻道傳送位址

3. Anycast address:多點備援傳送位址

IPv6 Unicast 位址的使用範圍(scope)
IPv4 的位址分配, 是以 A,B,C 及 D 四個等級來配置, 而 IPv6 以三種使用範圍來作為位址配置, 在實際使用上, 光是 Global Scope 配置給各單位使用, 就夠各單位使用幾十年, 根本就不需要另二種使用範圍 (Link-Local, Unique-Local). 在純 IPv6 網路世界, NAT 網路裝置是不需要的, 因真實位址夠用, 但在 IPv4 與 IPv6 交替時期, NAT66 及 NAT64 這樣網路設備還是需要

1. Global Scope

這類別的封包可以路由到整個 IPv6 星球網路, 類似 IPv4 真實位址 (Public Address)

2. Link-Local Scope

這類別的封包只能在獨立網段中使用, 封包不能路由到其它網段, 本機系統會根據網卡的 MAC 自動配置

3. Unique-Local Scope

這類別的封包只能在企業多網段中使用, 封包不能路由到 IPv6 星球網路, Network ID 可由路由器配置 (stateless address autoconfiguration : SLAAC)


參考文章
1. 政府網路2015年全面升級IPv6
2. IPv6 位址 (精讚部落)
3. IPv6 Ubuntu Wiki
4. 教育部各校 IPv6 位址配置

2011年12月12日 星期一

啟動 ISC BIND9 的 IPv6 功能

ISC BIND9 9.8 版完全支援 IPv6 系統, 並且還支援中文網域名稱, 例如 : 大福.tw, 而在設定之前, 必需先將多國語言域名 (Internationalized Domain Name:IDN) 轉成 ASCII 編碼, 而這種編碼稱為『Punycode』, 這是因為保留向下相容性及不影響現有的應用程式協定

設定如下 :

1.啟動 BIND9 IPv6 回應功能
要使 BIND9 具有回答其它 IPv6 主機的查詢, 將 listen-on-v6 加入 named.conf 設定檔, 設定如下 :

# nano /usr/local/etc/bind/named.conf
                  :
options {
    directory               "/usr/local/etc/bind";
    pid-file                   "/var/run/named.pid";
    session-keyfile     "/var/run/session.key";
    auth-nxdomain      no;                         // conform to RFC1035
    version                  "Not disclosed";            // hide bind version 9$
    notify                     yes;                        // inform slaves of $
    allow-transfer       { trusted-nameservers; };   // allow servers to make z$
    listen-on-v6 { any; };
};

zone "xn--pss076e.tw." {  // xn--pss076e.tw. 是 "大福.tw" 的 punycode
   type master;
   file "/usr/local/etc/bind/db.dafu.tw";  // 這是 "大福.tw" 網域的 zone 檔
};

2.加入 AAAA 記錄
在 BIND9 所管理的 Zone 檔 (例如 db.dafu.tw), 加入 IPv6 專有的 AAAA 記錄, AAAA 記錄主要是回應被查詢主機的 IPv6 位址, 設定如下 :


# nano /usr/local/etc/bind/db.dafu.tw

$TTL  604800
@   IN   SOA   TC188.xn--pss076e.tw. admin.gmail.com. (
     1     ; Serial
     604800     ; Refresh
     86400       ; Retry
     2419200    ; Expire
     604800 )    ; Negative Cache TTL
;
@       IN     NS   TC188.xn--pss076e.tw.
GW188      IN     AAAA      babe::188
GW166      IN     AAAA      babe::166
GW155      IN     AAAA      babe::155
TC188      IN     AAAA      2001:288:3008:188::100
TC166      IN     AAAA      2001:288:3008:166::100
TC155      IN     AAAA      2001:288:3008:155::100
www IN CNAME GW188.xn--pss076e.tw.

3.檢測 DNS 的 IPv6 功能

檢測 DNS IPv6 功能, 你可使用 nslookupdig 這二個命令來執行

# nslookup
> server
Default server: 2001:288:3008:188::100
Address: 2001:288:3008:188::100#53
> set type=soa
> xn--pss076e.tw.
Server:        2001:288:3008:188::100
Address:    2001:288:3008:188::100#53

xn--pss076e.tw
    origin = TC188.xn--pss076e.tw
    mail addr = admin.gmail.com
    serial = 1
    refresh = 604800
    retry = 86400
    expire = 2419200
    minimum = 604800
> set type=aaaa
> www.xn--pss076e.tw.
Server:        2001:288:3008:188::100
Address:    2001:288:3008:188::100#53

www.xn--pss076e.tw    canonical name = GW188.xn--pss076e.tw.
GW188.xn--pss076e.tw    has AAAA address babe::188
> exit

以下命令中的 2001:288:3008:188::100, 是指 BIND9 Server 的 Pv6 位址, 而 xn--pss076e.tw.是 "大福.tw" 這網域的 punycode


# dig @2001:288:3008:188::100 xn--pss076e.tw. ANY

; <<>> DiG 9.8.1-P1 <<>> @2001:288:3008:188::100 xn--pss076e.tw. ANY
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 26974
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; QUESTION SECTION:
;xn--pss076e.tw.            IN    ANY

;; ANSWER SECTION:
xn--pss076e.tw.        604800    IN    SOA    TC188.xn--pss076e.tw. admin.gmail.com. 1 604800 86400 2419200 604800
xn--pss076e.tw.        604800    IN    NS    TC188.xn--pss076e.tw.

;; ADDITIONAL SECTION:
TC188.xn--pss076e.tw.    604800    IN    AAAA    2001:288:3008:188::100

;; Query time: 12 msec
;; SERVER: 2001:288:3008:188::100#53(2001:288:3008:188::100)
;; WHEN: Mon Dec  5 05:20:07 2011
;; MSG SIZE  rcvd: 131

參考文章
1.IPv6 Part 9: Configuring A Domain For IPv6 With BIND

2011年11月22日 星期二

安裝與啟動 Tiny Core IPv6 系統

Tiny Core 對於 IPv6 並不完整, 目前只提供 IPv6 Client 端功能,還沒有提供 Router 及DHCPv6 功能. Tiny Core Linux 或 Micro Core Linux 內定沒有安裝 IPv6 系統, 如要啟動 IPv6 請執行以下步驟 :

1. 如不是 tc 帳號登入, 請先執行以下命令 :

$ su tc

2. 顯示核心版本代號

$ uname -r

3. 下載   ipv6-核心版本代號-tinycore.tcz  套件, 命令如下 :

$ tce-load -wi ipv6-2.6.33.3-tinycore.tcz
Downloading: netfilter-2.6.33.3-tinycore.tcz
Connecting to distro.ibiblio.org (152.19.134.43:80)
netfilter-2.6.33.3-t 100% |*******************************|   212k  0:00:00 ETA
netfilter-2.6.33.3-tinycore.tcz: OK
Downloading: ipv6-2.6.33.3-tinycore.tcz
Connecting to distro.ibiblio.org (152.19.134.43:80)
ipv6-2.6.33.3-tinyco 100% |*******************************|   176k  0:00:00 ETA
ipv6-2.6.33.3-tinycore.tcz: OK


4. 重新開機

$ reboot

5. 啟動 IPv6 核心模組

$ sudo modprobe ipv6

6. 檢示網卡資訊
$ ifconfig 
eth0      Link encap:Ethernet  HWaddr 52:54:00:A0:66:8B
          inet addr:192.168.100.66  Bcast:192.168.100.255  Mask:255.255.255.0
          inet6 addr: fe80::5054:ff:fea0:668b/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:468 (468.0 B)
          Interrupt:10 Base address:0x6000

在上面資訊中, 你會看到 IPv6 Link Local Address, 這位址開頭一定是 fe80, 後面數字則由網卡的 MAC 使用 EUI-64 公式來產生.

如要手動設定 IPv6 位址, 命令如下 :

# ifconfig eth0 fc00:babe:166::6/64 up

如要刪除 Link Local 位址, 命令如下 :
# ifconfig eth0 del fe80::5054:ff:fe06:121/64

如要手動設定 Default Gateway, 命令如下 :

# route add -A inet6 default gw fc00:babe:166::254 dev eth0

可將上面命令, 寫入 /opt/bootlocal.sh, 這樣就不需每次開機後, 還需手動設定. 雖然你手動設定 IPv6 位址,但是 Link Local IPv6 與 SLAAC IPv6 位址一樣還會產生,這與 IPv4 是不同的.請看下圖 :


檢視 IPv6 路由表, 命令如下 :
# route -A inet6
Kernel IPv6 routing table
Destination   Next Hop            Flags   Metric   Ref  Use Iface
                                        :  
::/0        fc00:babe:166::254  UG    1      0    0   eth0  
 

參考文章
1. 精讚部落 > 網際技術 > IPv6