8、ISATAP隧道
基本概念
?ISATAP(Intra-SiteAutomatic Tunnel Addressing Protocol)?ISATAP是一種非常容易部署和使用的IPv6過渡機制。在一個IPv4網(wǎng)絡中,我們可以非常輕松的進行ISATAP的部署,首先你的PC需是V4/V6雙棧PC,然后,需要有一臺支持ISATAP的路由器,ISATAP路由器可以在網(wǎng)絡中的任何位置,只要PC能夠ping通它(當然,你要知道路由器的IPv4地址)。那么接下去,我們可以通過在路由器上部署ISATAP,這樣網(wǎng)絡中支持ISATAP的雙棧主機,在需要訪問IPv6資源時,可以與ISATAP路由器建立起ISATAP隧道,ISATAP主機根據(jù)ISATAP路由器下發(fā)的IPv6前綴構(gòu)造自己的IPv6地址(這個IPv6地址是被自動關聯(lián)到ISATAP主機本地產(chǎn)生的一個ISATAP虛擬網(wǎng)卡上),并且將這臺ISATAP路由器設置為自己的IPv6默認網(wǎng)關,如此一來,后續(xù)的這臺主機就能夠通過這臺ISATAP路由器去訪問IPv6的資源。
?這種方法部署起來非常簡單,在許多場合,客戶為了節(jié)省成本,又希望網(wǎng)絡中的IPv6主機能夠訪問V6資源,同時又不愿意對現(xiàn)有網(wǎng)絡做大規(guī)模的變更及設備升級,那么就可以采用這種方法,購買一臺支持ISATAP的路由器,甚至可以將ISATAP路由器旁掛在網(wǎng)絡上,只要它能夠訪問V6資源并且響應ISATAPPC的隧道建立請求。
ISATAP的功能組件如下
1、自動隧道:
ISATAP的隧道機制也是自動的,隧道在主機和ISATAP路由器之間被創(chuàng)建。主機首選需要知道ISATAP路由器的IPv4地址。
2、ISATAP地址格式:
分配給ISATAP路由器的IPv6地址是全局單播地址,該地址的前綴將被ISATAP主機用于自己的IPv6地址構(gòu)造。ISATAP主機通過在IPv4建立起來的ISATAP隧道從ISATAP路由器發(fā)送的消息中接收/64的IPv6前綴,并且使用這個前綴結(jié)合“特殊的接口標識”來構(gòu)造自己的IPv6地址。
3、接口標識:
ISATAP在主機上啟用后,會產(chǎn)生一個ISATAP虛擬網(wǎng)卡,該虛擬網(wǎng)卡會產(chǎn)生一個64bits的特殊接口標識,有點類似EUI-64,但是產(chǎn)生機制不同,它是由專為ISATAP保留的32位的0200:5EFE加上主機上配置的IPv4地址構(gòu)成,如下圖,假設ISATAP主機配置的IPv4地址為1.1.1.1,那么ISATAP虛擬網(wǎng)卡的64bits接口標識就是:
另一方面,在路由器上部署ISATAP后,路由器也會產(chǎn)生一個tunnel接口,用于響應ISATAP主機的隧道建立請求,這個tunnel接口同樣會產(chǎn)生接口標識。地址的格式是IANA保留給ISATAP的32比特的0000:5EFE后追加32比特的IPv4地址。如下圖,假設給ISATAP路由器配置的IPv4地址(用于隧道的)是2.2.2.2,那么ISATAPtunnel的接口標識就是:
這里關于64bits的接口標識中“為ISATAP保留的”高階32bits在維基百科上有這么一段描述:“The link-localaddress is determined by concatenatingfe80:0000:0000:0000:0200:5efe: for global unique andfe80:0000:0000:0000:0000:5efe: for private addresses with the 32bits of the host's IPv4address.”。貌似有全局唯一和私有之分,不過在IETF的相關草案上找到的更多是0200:5efe的描述,在我所作的測試環(huán)境中,windows主機上系統(tǒng)使用的是0200:5ede,而CISCO路由器上用的是0000:5efe。
ISATAP主機和ISATAP路由器產(chǎn)生的這個64btis的接口標識,可進一步用于構(gòu)造隧道接口的Linklocal地址,以及IPv6全局單播地址。這個下面會描述到。
另外,因為ISATAP的操作范圍在站點內(nèi),所以ISATAP主機和ISATAP路由器的IPv4地址可以是私有IP,也可以是公有IP。
工作機制
首先,我們有一個IPv4的網(wǎng)絡,IPv4網(wǎng)絡中絕大部分網(wǎng)路設備都不支持IPv6,除了終端主機,以及一臺路由器,這臺能夠訪問我們需要的IPv6資源。現(xiàn)在,一種最廉價的方式是,在這臺路由器上部署ISATAP,終端ISATAP主機與路由器之間建立一個ISATAPtunnel,這樣一來PC可以直接將IPv6流量放進tunnel傳到ISATAP路由器從而穿越整個IPv4網(wǎng)絡。
1)現(xiàn)在我們在ISATAP路由器上進行相應的配置,給路由器分配的IPv4地址是2.2.2.2/24,同時建立一個tunnel接口用于ISATAP,此時tunnel接口會根據(jù)IPv4地址產(chǎn)生一個64bits的接口標識。這個接口標識搭配上高位的fe80::就形成了tunnel接口的Linklocal地址:fe80::0000:5efe:202:202。另外,還需給ISATAPtunnel接口配置一個全局單播IPv6地址,這里可以手工配置,也可以通過前綴+EUI64的方式來構(gòu)建,這里的EUI-64就是上面所述的特殊的64bits接口標識。如上圖,構(gòu)建出來的IPv6地址就是2001:1111::0000:5efe:0202.0202/64,因此IPv4的前綴為2001:1111::/64,這個前綴稍后會通過tunnel下發(fā)給ISATAP主機,從而使它能夠構(gòu)建自己的IPv6地址。
2)現(xiàn)在我們在ISATAP主機上,配置ISATAP,一般來說,在WIN7系統(tǒng)上默認安裝了IPv6協(xié)議棧,默認就會有一個ISATAP的虛擬網(wǎng)卡。在我們給PC的物理網(wǎng)卡配置IPv4地址如1.1.1.1/24后,ISATAP虛擬網(wǎng)卡就會自動根據(jù)這個IPv4地址計算出上面所講的特殊的接口標識:0200:5efe:1.1.1.1,注意這種格式等同與0200:5efe:0101.0101,在windows系統(tǒng)上我們可以看到前者的簡便寫法。
3)當我們在主機上配置了ISATAP路由器之后(指向的是ISATAP路由器的IPv4地址),ISATAP主機開始向ISATAP路由器發(fā)送RS消息,如下圖:
這個RS消息是通過IPv4隧道傳輸?shù)?#xff0c;外層是IPv4的頭,源地址是ISATAP的IPv4地址1.1.1.1,目的地址是2.2.2.2,也就是ISATAP的IPv4地址。IPv4頭里面裹著IPv6的報文,源地址是ISATAP主機的ISATAP虛擬網(wǎng)卡的Linklocal地址,目的地址是ISATAP路由器的Linklocal地址。
4)ISATAP主機發(fā)出的這個RS消息,會在IPv4網(wǎng)絡中被路由,最終轉(zhuǎn)發(fā)到ISATAP路由器。這將使得路由器立即以一個RA進行回應:
而這個回應的RA消息里,就包含ISATAP上所配置的那個IPv6全局單播地址的/64前綴。
5)ISATAP主機收到這個RA回應后,會拿出里頭的IPv6前綴,隨后在后面加上自己ISATAP虛擬網(wǎng)卡的64bits的接口標識地址,構(gòu)成128bits的IPv6全局單播地址,同時會產(chǎn)生一條默認路由,指向ISATAP路由器的Linklocal地址:
6)從現(xiàn)在起,ISATAP主機需要訪問IPv6資源的時候,將IPv6數(shù)據(jù)包封裝在IPv4的隧道里,也就是說,套上ISATAP
隧道的IPv4頭,然后傳給ISATAP路由器,再由ISATAP路由器解封裝,再幫忙轉(zhuǎn)發(fā)IPv6數(shù)據(jù)。
四、典型實驗
環(huán)境描述
PC是ISATAP主機,它是一臺雙棧PC,這里我們使用的是一臺win7系統(tǒng)的電腦做測試。電腦網(wǎng)卡的IP地址為1.1.1.1/24,網(wǎng)關為1.1.1.254,網(wǎng)關是SW1的interfacevlan10。
SW1創(chuàng)建兩個VLAN:VLAN10及20,分別對應PC及ISATAP路由器。VLAN20的SVI口IP為2.2.2.254,是ISATAP路由器的默認網(wǎng)關。
ISATAPRouter的接口IP為2.2.2.2。該IPv4地址在后續(xù)的ISATAP配置中使用到,ISATAP主機就是通過這個IP找到ISATAPRouter并與之建立ISATAP tunnel。ISATAPRouter同時連接到了一個IPv6網(wǎng)絡,這里我們用loopback模擬:2001:8888::8/64,用于后續(xù)的測試。
最終的實驗結(jié)果是首先PC要能夠ping通ISATAP Router的IPv4地址也就是2.2.2.2。然后PC與ISATAProuter建立隧道并拿到IPv6地址,而且要能夠ping通20001:8888::8
設備配置
PC1的配置:
網(wǎng)卡配置IP地址1.1.1.1/24,網(wǎng)關為1.1.1.254
安裝IPv6協(xié)議棧,此時Win7會自動產(chǎn)生一個ISATAP隧道虛擬接口:
隧道適配器isatap.{0DB7233C-89B7-49DB-A8C0-D1AA005F4E6A}:
vlan 10 vlan 20 interface fast0/1 switchport access vlan 10 interface fast0/15 switchport access vlan 20 interface vlan 10 ip address 1.1.1.254 255.255.255.0 interface vlan 20 ip address 2.2.2.254 255.255.255.0
Router的配置:
注意ISATAP路由器的配置,關鍵部分在于tunnel的配置,tunnel模式是ipv6ipisatap的,同時注意在tunnel這里配置的IPV4地址,就是對應的ISATAP主機上配置的那條CMD命令里ISATAP路由器的地址。我們這個實驗演示的是tunnel直接用fa0/0的地址,當然,tunnel也可以有自己的IPv4地址,只要保證ISATAP主機到這個IPv4地址路由可達就行。另外tunnel的IPv6地址,對應的前綴就是稍后要下發(fā)給ISATAP主機的前綴,這個實驗中,我們tunnel的IPv6全局單播地址使用的是前綴+eui-64的配置方式,這里的eui-64實際上指的就是前面我們介紹的那個特殊的64bits接口標識。
實驗測試
我們首先在路由器上查看一下:
R2#show ipv6 interface brief FastEthernet0/0 Tunnel0 FE80::5EFE:202:202 2001:1111::5EFE:202:202注意,這里的Linklocal地址:FE80::5EFE:202:202就是一個ISATAP格式的地址,最后的64bits是由32bits的0000:5EFE加上32bits的接口IPv4地址(這里是2.2.2.2)構(gòu)成的,如下圖。而IPv6全局單播地址,也是使用64bits的接口標識構(gòu)成的,當然,你也可以手工配置IPv6全局單播地址,不一定要使用接口標識。
接下去,我們在ISATAP主機上,CMD模式下輸入:
netsh interface ipv6 isatap set router 2.2.2.2
PC就會開始發(fā)送RS,報文如下:
我們看到這個RS的ICMPv6報文外是IPv6的頭,IPv6的頭外是IPv4的頭。
注意外層IPv4的頭,源是1.1.1.1,目的是2.2.2.2
然后內(nèi)層IPv6的頭,源是ISATAP主機的Linklocal地址,目的是ISATAP路由器的Linklocal地址
在路由器收到RS后回回應一個RA:
路由器回應的這個RA里,就有一個ICMPv6的Option,其中就包含著ISATAP路由器的IPv6前綴。而ISATAP主機就可以根據(jù)這個前綴,結(jié)合自己的接口標識構(gòu)建IPv6地址。
最終PC獲取到的IPv4地址如下:
我們看到PC首先根據(jù)自己本地配置的IPv4地址:1.1.1.1,生成64bits的接口ID:
這個64bits的接口ID,與從ISATAP路由器獲取到的IPv6全局單播地址前綴2001:1111::的前64bits,構(gòu)成了PC的IPv6全局單播地址:2001:1111::200:5efe:1.1.1.1。
?這個64bits的接口ID,與FE80::/10構(gòu)成了PC的Linklocal地址:fe80::200:5efe:1.1.1.1
同時,PC將ISATAP路由器的Linklocal地址fe80::5efe:2.2.2.2設置為默認網(wǎng)關
?當主機與其它IPv6主機進行通訊時,從隧道接口轉(zhuǎn)發(fā),將從報文的下一跳IPv6地址中取出IPv4地址作為IPv4封裝的目的地址。如果目的主機在本站點內(nèi),則下一跳就是目的主機本身,如果目的主機不在本站點內(nèi),則下一跳為ISATAP路由器的地址。
我們最后再做一個測試,就是ISATAP主機去ping 2008:8888::1。
這個到達ISATAP的loopback的IPv6數(shù)據(jù)包,被套上一個ISATAP的IPv4隧道頭,然后傳給ISATAP路由器,由路由器進行下一步的IPv6轉(zhuǎn)發(fā)。
總結(jié)
以上是生活随笔為你收集整理的8、ISATAP隧道的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: isatap linux,在Fedora
- 下一篇: isatap linux,好奇怪的IPv