IPv6 auto config 原理详解之-----前缀公告
人們常說,IPv6的一大特性就是移動性。
那么對于IP終端來說,如何去理解他的移動性呢?
其實就是IPv6的無狀態自動配置。
前段時間有幸一個同事給我演示了一下這個功能,但是更多的疑問產生了。
IPv4中,比如說電腦,在網卡中設置自動獲取IP地址和DNS.那么就可以自動從DHCP服務器上面獲得IP地址和DNS還有網關了。
下面是IPv4的設置界面:
那么按照這個邏輯,IPv6就應該是沒有這些選項,最終達到即插即用的目的嘛?答案是否,下面的截圖IPv6也有:
那么為什么還需要自動配置?
意義在哪里?
如何實現呢?
帶著這些問題,我們慢慢來看看IPv6這個自動配置auto config到底是個什么原理。
RFC2462上面寫到,無狀態自動配置是IPv6最有吸引力和最有用的新特性之一。他允許本地鏈路上得節點根據路由器在本地鏈路上公告信息自己配置單播IPv6地址。
PS:路由器可是不能用無狀態自動配置來實現,無狀態自動配置僅僅適用于IP終端.這點一定要記得。
所以換句話說,路由器上面是不能實現這個功能的,這個是RFC上面定義的。沒有原因。可能主要的目的是統一規劃,方便管理的目的。
這個就是從auto config延伸出來的幾個子工作機制。
第一個知識點是前綴公告。
前綴公告是無狀態自動配置中的初始機制。前綴公告機制使用路由器公告信息ICMPv6 type=134和所有節點的多播地址FF02::1,路由器公告機制在本地鏈路上周期性的發送到所有節點的多播地址。
在CISCO路由器上面公告IPv6前綴.
只要在接口上面配置了一個本地站點或者全球可聚合單播IPv6地址還有掩碼,實際上就啟用了cisco路由器上面的IPv6前綴公告。
IPv6前綴公告原理:
路由器周期性的發送ICMPv6 type=134的路由器前綴公告,用她得本地鏈路地址link-local FE80::250:3EFF:FEE4:4C00作為源,所有節點的多播地址FF02::1作為目的。
路由器公告消息公告的前綴是FEC0:0:0:1::/64,生存周期首選無窮大.
當本地鏈路多播地址FF02::1的節點A和B得到路由器公告消息,可以自己配置他們的IPv6地址.
這里我犯了一個錯誤,感覺這個是IPv6 前綴通告是配置了地址以后就自己有的一個機制。
實驗結果并不是這樣,我在R1和R2之間抓包,沒有抓到ICMPv6 type = 134的報文,然后我又在網上查閱相關資。
為什么會這樣,因為我忽略了一點很重要的,自動配置這個功能是僅僅限于路由器對PC終端之間的行為,路由器都不能支持這個auto config,所以為什么路由器要發前綴通告給鄰居直連路由器呢?
后來我用路由器直連PC,得到了我想要的結果,PC自動獲取到了IP地址,并且前綴和2012::/64是一樣的.
:) 到這個時候我的心才穩下來。呵呵。下面是詳細的實驗結果:
在R1上面,用命令show ipv6 interface giga 1/0 prefix:
可以看到,R1有一個AD,是自己的前綴2012::/64:
呵呵,特意把giga 1/0的配置也show出來,2012::/64就是接口1/0的前綴。
在cisco上面,默認情況下有效生存期是30天.首選生存期是7天(604800s).
然后我做了一個實驗,用邁普的路由器連接一個PC.
然后在PC機上面使能IPv6的功能(xp需要安裝相關IPv6協議,默認是沒有的,win7默認就加載了IPv6的協議棧了)
圖譜圖:
MAIPU router------------PC
后來在PC上面成功獲取到了IP地址,前綴為2012::/64,可以ping通路由器接口FE0 : 2012::1
我在路由器上面FE0配置的地址是:2012::1/64.
最后在PC機上獲得的地址是:
在PC機接電腦以前,我就一直用wireshark進行抓包。抓到了ICMPv6 type=134的報文,下面是報文的具體格式:
當然也可以用一個命令來修改前綴公告:
ipv6 nd prefix.
還有一個小功能就是在接口上面禁止路由器公告。
在cisco 2011年1月的IOS上面,這個命令有點不一樣:
命令是: ipv6 nd ra suppress.
而以前老得IOS上面,命令卻是:
其實無所謂,我們關注的是原理,命令行只是實現原理的一個手段罷了。
其實這里關于auto config還有幾個參數,下面把幾個參數都融合進行了一個接口中。
關于DAD和前綴重新編址,將在后續的文檔中做實驗進行驗證。
轉載于:https://blog.51cto.com/361531/637924
總結
以上是生活随笔為你收集整理的IPv6 auto config 原理详解之-----前缀公告的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 日志打印
- 下一篇: 一位从业20年的程序员分享积累的20条编