在IPv4自動取得IP很簡單,只要透過DHCP的4個步驟就可以取得IP。
- Client發Broadcast的Discover包
- Router發Unicast的Offer包
- Client發Broadcast的Request包,Broadcast用意在於通知其他Router
- Router發Unicast的Ack包
但是IPv6就不是這麼回事了。因為我之前以為應該和IPv4類似,DHCPv6應該也是走這種模式,然後找了Asus的RT-AC68U Router來測試IPv6,但怎麼設定,都沒有收到來自Router的回應。原來在IPv6階段,開啟自動取得IP模式,除了DHCPv6封包之外,之前還必須有一些用來設定檢查的包。以下就是IPv6自動取得IP的流程:
- 首先Client會被設定要以哪種方式取得IPv6,StateLess還是Stateful。而StateLess還可分成要啟動DHCPv6的和不用的。所以總共有三種方式
- Client端發送ICMPv6 RS(Router Solicitation)封包給Router
- Router回覆ICMPv6 RA(Router Advertisement)封包給Client
- Client端檢查Router回覆的RA訊息(type code = 134),若有,分析其ICMP標頭裡頭的M/O Flag,對應表格及代表意義如下:M bitO bit代表意義說明00SLAACStateLess Address AutoConfiguration,一般家用網路簡單的是走這種模式。01StateLess DHCPv6啟動DHCPv6流程,作用是為了取得DNS(接續步驟4,之後作用同DHCP流程)1XStateful DHCPv6啟動DHCPv6流程(接續步驟4)
- Client發送Multicast的Solicit包,若是開啟Rapid Commit option,表示進行快速設定,直接跳至步驟8
- Router發送Unicast的Advertisement包
- Client發送Multicast的Request包
- Router發送Unicast的Reply包
若是之前RA訊息中(M=0, O=1),那這邊可以獲得DNS。若之前RA訊息中(M=1),那這邊可以取得IPv6的DNS以及被分配的位址
到最後,我還是沒用那台RT-68U,在不接WAN的情況下取得Client端的IPv6位址,大概是我設定問題吧。原先認為是可能ISP不提供IPv6環境,所以Router沒辦法取得資訊給Client。後來我設定為IPv6 tunnel in IPv4的方式,好像也無法取得。Router不會發RA包,後來設定到Router可以回應DHCPv6 Advertisement包(設定成Native模式也不會發),但網卡就沒後續的Request,一直無法完成,還要再來學習了。
1 意見:
謝謝
張貼留言