IPv6協議的轉換與封裝
很多人多會對IPv6的使用存在疑慮,不少的網絡構建中都會對IPv4到IPv6的轉換覺得頭疼。但是,其實這個任務并不是很難,對于從v4到IPv6協議的轉換就是隧道技術的體現和應用。介于這方面的內容,讓我們從長計議。
從IPv4轉換到IPv6的技術其實主要是隧道技術的應用;這是一項將IPv6數據包裝入IPv4數據包的技術,因此這樣的數據包可以在僅限IPv4的網絡中進行傳輸。這些隧道也可以用于企業網絡中(如穿越一些不支持IPv6的傳統網絡設備)。
當然,網絡運營商和安全團隊對并不贊成這樣的提議。主要的原因是隧道技術可以將真正的IPv6數據包以及網絡流分析器給出的與之相關的4層及以上的信息,還有安全ACL,QoS設置等統統隱藏起來。有傳言稱,使用IPv6 in IPv4的隧道技術作為一種控制方法會導致僵尸網絡。簡而言之,企業網絡中,如果這樣的通道不是刻意為之,那么就應該將其關閉。(注意:上面的表述僅限于企業網絡,因為個人用戶可能非常樂意將其操作系統連接至IPv6網絡。)
所以,對于網管而言,最根本的問題在于是否能阻止所有通道。
就一些6to4或ISATAP通道來說,要回答這個問題并不難:只需用訪問控制列表(ACL)阻止所有41協議即可,如:
- access-list deny 41 any any
另一種通道是Teredo,它需要依賴UDP封裝技術。Teredo使用的默認端口是3544。或許有人想使用如下的訪問控制列表來解決:
- access-list deny udp any any eq 3544
- access-list deny udp any eq 3544 any
但是,上面的訪問控制列表會被恰好需要使用3544端口的普通數據包錯誤攔截。此外,不法用戶也可以改變UDP。這種情況下,思科Flexible Pattern Matching的功能和靈活性就有了用武之地:FPM可以根據指定的偏移量來檢查任意數據包,且要在***平臺的軟件中完成;也就是說,FPM只在合適的位置使用。找出Teredo數據包的技巧就是要搜索所有UDP數據包,目的是獲取所有以2001::/32開頭的Teredo IPv6協議的地址;請注意,此處我們使用的是/32,而不是/16,實際上,應該是2001:0::/32。還要對IP數據做進一步的檢查。
完整的FPM配置如下:
- class-map type stack match-all cm-ip-udp
- match field IP protocol eq 17 next UDP
- class-map type access-control match-all cm-teredo1
- match start udp payload-start offset 0 size 1 eq 0x60 mask 15
- match start udp payload-start offset 8 size 4 eq 0x20010000
- class-map type access-control match-all cm-teredo2
- match start udp payload-start offset 0 size 1 eq 0x60 mask 15
- match start udp payload-start offset 24 size 4 eq 0x20010000
- policy-map type access-control pm-teredo
- class cm-teredo1
- drop
- class cm-teredo2
- drop
- policy-map type access-control pm-udp-teredo
- class cm-ip-udp
- service-policy pm-teredo
***一個步驟是將這一服務策略應用到界面:
- interface GigabitEthernet1/36
- service-policy type access-control in pm-udp-teredo
***,要請大家注意,另一種阻止所有通道的方法是指定所有網絡主機上的配置以禁用通道。當然,這僅適用于企業網絡。例如,在使用Vista系統IPv6協議的電腦中可以使用如下命令:
- netsh interface 6to4 set state state=disabled undoonstop=disabled
- netsh interface isatap set state state=disabled
- netsh interface teredo set state type=disabled