Linux Server Bind IPv6 設定

Posted by admin on 12 元月, 2011 15:50

作業系統:Debian 5 / Debian 6 / Ubuntu 10 / Ubuntu 11

實作目的為將 DNS Server 與網頁伺服器分別設定 IPv6 固定位址,以及增加 DNS 網域名稱伺服器 IPv6 解析記錄。設定過程主要包含這兩部主機的網路界面,以及 Linux Bind 服務的正解記錄。

【網路環境測試】
開始動手前先執行 ifconfig 指令查詢網卡狀態,發現其中兩行與 IPv6 相關:
  inet6 addr: 2001:288:xxxx:0:20c:29ff:fe66:xxxx/64 Scope:Global
  inet6 addr: fe80::20c:29ff:fe66:xxxx/64 Scope:Link

再以「ping6 -c 5 ipv6.google.com」指令試著 ping 校外主機也能成功,這表示主機作業系統和新購的路由器皆已支援 IPv6 通訊協定,只需增加網卡 IPv6 固定位址設定即可。

【網路界面設定】
sudo vi /etc/network/interfaces

DNS 伺服器及網頁伺服器分別新增 IPv6 設定,以DNS 伺服器為例,如:
iface eth0 inet6 static
   address 2001:288:xxxx::2
   netmask 48
   gateway 2001:288:xxxx::1
其中 Netmask 部份,一般的設定值是64,配合縣內規畫改為48,而末行的 Gateway 省略不指定也可以。

或者加裝一張 IPv6 位址專用,代號為「eth1」的網路卡也行,以另一部使用 IPv6 位址的網頁伺服器為例,「/etc/network/interfaces」裡應有下列設定內容:
auto eth1
iface eth1 inet6 static
  address   2001:288:xxxx::3
  netmask  48   gateway 2001:288:xxxx::1

網路服務重新啟動
sudo /etc/init.d/networking restart

【網卡狀態查詢】
除了 ifconfig 指令以外,也可用 ip 指令查看網卡狀態:
ip -6 addr show dev eth0 (或eth1)
顯示指定的「2001:288:xxxx::x」IPv6位址:
eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
    inet6 2001:288:xxxx:x:20c:29ff:fe15:21f2/64 scope global dynamic
       valid_lft 2591978sec preferred_lft 604778sec
    inet6 2001:288:xxxx::x/48 scope global
       valid_lft forever preferred_lft forever

【網路連線測試】
以「ping6」指令 ping 到「ipv6.chc.edu.tw」應該不成問題:
ping6 -c 5 ipv6.chc.edu.tw

或使用另一部支援 IPv6 協定的電腦,ping 回這部主機:
ping6 2001:288:xxxx::2 或 ping6 2001:288:xxxx::3

如果 ping 的結果正常,表示兩部主機皆已具備 IPv6 網址。網頁伺服器部份至此「完工」,接下來進入「Bind9」DNS 伺服器設定步驟。

【DNS 伺服器設定】
檢視 Bind 設定檔,確認已有「listen-on-v6」設定…
sudo vi /etc/bind/named.conf.options
listen-on-v6 { any; };

Debian 5.07 的 Bind 以「named -v」查看版本訊息,顯示為「BIND 9.6-ESV-R3」,IPv6 的支援設定已為預設選項。

先把 DNS 正解設定妥善即可符合常用需求,反解部份留待日後再新增。正解設定最重要的「Zone File」在「/etc/bind/named.conf.local」裡指向「/etc/bind/db.xxxx.chc.edu.tw」這個檔案, 其中已列出原有的 IPv4 正解設定。IPv6 的寫法除了 IP 位址不同外,另一差別只是將「A」改成「AAAA」,再加上兩列關於這些主機新增的設定:
sudo vi /etc/bind/db.xxxx.chc.edu.tw
加入:
dns             IN      AAAA    2001:288:xxxx::2
www           IN      AAAA    2001:288:xxxx::3

重新啟動 DNS 服務…
sudo /etc/init.d/bind9 restart

【DNS 測試】
到另一部電腦以常用的「nslookup」指令測試 DNS 伺服器,這部電腦同樣需有 IPv6 網路界面。Debian 系統如果沒有 nslookup 指令,需再用「sudo apt-get install dnsutils」指令新增。

nslookup [-option] [FQDN] [server] 是 nslookup 指令的用法,若以學校 DNS 伺服器 IP 為查詢主機,參數「-type=aaaa 」指定 IPv6 為查詢模式,查詢學校網頁伺服器:
user@hostname:~# nslookup -type=aaaa www.xxxx.chc.edu.tw 163.23.114.xxx

Server:         163.23.114.xxx
Address:        163.23.114.xxx#53
www.xxxx.chc.edu.tw     has AAAA address 2001:288:xxxx::3

再用 Hinet 的 DNS 伺服器查詢,確認從學術網路以外的地方也能解析網域名稱。
user@hostname:~# nslookup -type=aaaa www.xxxx.chc.edu.tw 168.95.1.1

Server:         168.95.1.1
Address:       168.95.1.1#53

Non-authoritative answer:
www.xxxx.chc.edu.tw     has AAAA address 2001:288:xxxx::3

Authoritative answers can be found from:
xxxx.chc.edu.tw nameserver = dns.xxxx.chc.edu.tw.
dns.xxxx.chc.edu.tw     internet address = 163.23.114.xxx
dns.xxxx.chc.edu.tw     has AAAA address 2001:288:xxxx::2

DNS 的查詢也可用「dig」指令:
dig [-option] [FQDN] [@server]  改成這一串指令:
dig -t aaaa www.xxxx.chc.edu.tw @168.95.1.1

這樣應該就大功告成了!因為用其他的網域名稱查詢,出現「Can't find ……: No answer」的錯誤訊息。:)

以變動最少的原則,僅僅修改兩個設定檔,暫能達成通過 IPv6 支援檢測的階段目標,後續仍有其他問題需再慢慢研究解決。

【相關網站】
關於IPv6 BIND9 Server Howto 彰化縣IPv6偵測網站 網站IPv6支援檢測 Test your IPv6

Information and Links

Join the fray by commenting, tracking what others have to say, or linking to it from your blog.