2012年5月3日 星期四

架設IPv6 無狀態位址自動配置環境--以cisco路由器和Linux radvd為例

IPv6提供了下列機制來指定一部IPv6設備的IP位址:
  • 手動設定(Manual Configuration)
  • IPv6無狀態位址自動配置(RFC2462)
  • DHCP for IPv6
    • 無狀態 DHCP(Stateless DHCP)
    • 全狀態 DHCP (Stateful DHCP)
IPv6 無狀態位址自動配置(RFC2462)環境為一最直接而簡化的配置主機IP位址方式,因為這種方式只需要支援IPv6的路由器透過芳鄰探索協定的路由器公告方式,即可讓主機獲得IPv6首碼,再加上符合EUI-64技術(Linux、Windows XP)或隨機的(Windows7/Windows Server 2008)介面識別碼即可自動生成主機128位元的IP位址,無需架設額外的服務與協定。
要設計一個企業無狀態位址自動配置的IPv6 環境,最主要設備是一部支援RFC 2461、RFC2462的路由器,例如:CIsco或Juniper路由器,Linux Router Advertisement Daemon (radvd)。
不過目前市面上的IPv6路由器支援的無狀態位址自動配置方主要的問題在於並無法直接支援DNS等選項參數的提供,而目前的這一部份的規格定義在RFC6106文件內,但大部份的設備和主機均尚未支援此規格(radvd除外)。

使用CISCO 路由器支援IPv6無狀態位址自動配置
下表將R1路由器的 FastEthernet0/0 介面的IPv6 位址設定為 2002:1111:1111::1/64,並且在此介面利用RA封包公告2002:1111:1111::/64首碼
R1>enable
R1#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
R1(config)#ipv6 unicast-routing
R1(config)#interface FastEthernet0/0
R1(config-if)#ipv6 address 2002:1111:1111::1/64
R1(config-if)#ipv6 nd prefix 2002:1111:1111::/64
R1(config-if)#


設定 CentOS Linux radvd為IPv6路由器以支援無狀態位址自動配置
Router Advertisement Daemon (radvd)為一支援IPv6芳鄰探索協定(Neighbor Discovery Protocol)的開放原始碼軟體,可設定為支援IPv6自動位址配置的路由器。
底下示範如何在CentOS 6 Linux 下安裝並設定radvd的步驟。
  1. Linux 利用radvd做為IPv6路由器時,請先將自己設定為靜態指定的IPv6位址 (編輯 /etc/sysconfig/network-scripts/ifcfg-eth0,新增或變更IPV6_AUTOCONF=No 和 IPV6ADDR=……………這二行)
  2. 安裝radvd套件
    • # yum –y install radvd
  3. 編輯radvd組態檔 (/etc/radvd.conf)

    interface eth0
    {
         AdvSendAdvert on;        #啟用路由器公告(RA)功能
         MinRtrAdvInterval 30;     #每隔30-100秒間送出公告訊息
         MaxRtrAdvInterval 100;
         prefix 2002:1234:5678:9abc::/64   #送出的首碼
        {
              AdvOnLink on;
              AdvAutonomous on;  #公告的首碼可用來自動位置配置
              AdvRouterAddr off;  #強制radvd送出首碼而非介面位址
         };
    #RDNSS
    RDNSS 2002:1234:5678::1    #提供RADNS選項,目前RFC6106支援的普遍性不高
         {
              AdvRDNSSPreference 8;
              AdvRDNSSLifetime   180;
         };
    };
  4. 啟用IPv6 forwarding功能 
    編輯檔案 /etc/sysctl.conf,新增下列一行: 

    net.ipv6.conf.all.forwarding=1


    或執行下列命令:
  5. echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
  6. 啟動radvd
    #service radvd start
    # chkconfig –level 2345 radvd on
  7. 測試
    將一部Windows 7 電腦設定IPv6自動指定IP,然後再以ipconfig可得知已順利取得路由器RA的IPv6首碼並產生IP,值得一提的是Default Gateway 設定為Linux radvd機器自已己產生的Link-Local Address,而非手動設定的IP,此外,由於Windows 7尚未支援RFC6106,所以並沒有取得RA的DNS選項 (這部份恐需透過DHCPv6來解決)。
    radvd1

radvd2