在TE的課程中會講到ipsec配置NAT穿越的問題,因為NAT會修改報文的源IP地址,導致報文在交給接收方進行時,接收方通過IPSEC對報文進行安全檢查,因為IP地址修改過了,導致報文不能正確驗證的問題。具體為什么IPSEC不兼容NAT的原因因為篇幅有限,大家可以參考一些資料。
我們今天主要講IPSEC NAT的特殊實驗,老版的SE教材上有一個NAT穿越的實驗,但是那個實驗只有一臺NAT設備。我們今天要介紹的實驗是有兩個NAT設備的實驗,也是實踐當中可以會遇到的IPSEC穿越NAT的情況。
拓撲圖如下圖所示:
需求:RT1和RT4分別作為一家公司的總部與分部的私網(wǎng)路由器,兩臺設備分別連接兩個私網(wǎng)IP地址,分別是192.168.1.1和192.168.4.1。這兩個地址需要跨越公網(wǎng)互通。其中RT1設備出口連接一臺NAT設備RT2,這個設備會把私網(wǎng)的源IP地址替換成RT2自身G0/0/1接口公網(wǎng)IP地址20.1.1.1/24;同理RT4連接的NAT出口設備RT3也會把私網(wǎng)源IP地址替換成出接口的公網(wǎng)IP地址20.1.1.2。此時要求私網(wǎng)IP192.168.1.1和192.168.4.1能夠跨越公網(wǎng)互通,同時報文要通過ipsec進行加密驗證。
此時為了理解這個實驗,我們把兩個loopback地址通信的報文報文格式與協(xié)商過程通過圖示的形式進行演示:
1
左邊loopback的PC機向右側(cè)發(fā)送的普通報文的格式,如下圖所示:
此報文交給RT1之后RT1對報文進行IPSEC封裝,交給IPSEC設備進行封裝時,因為IPSEC是在RT1的出接口生效,所以封裝的報文源IP地址是RT1的G0/0/0接口的IP地址192.168.2.1,目的地址指向RT3的公網(wǎng)出接口地址20.1.1.2因為是配置了nat穿越功能,所以在ESP頭前封裝UDP頭。
2
上圖的報文交給RT2設備之后,因為RT2是NAT設備,此設備會把報文頭最外層的私網(wǎng)源IP地址192.168.2.1替換成RT2出接口的公網(wǎng)地址20.1.1.1。如下圖所示:
3
替換完成的報文變成公網(wǎng)報文可以發(fā)送給RT3設備,RT3收到的公網(wǎng)報文如下圖所示:
4
那么RT3設備收到報文之后查看目的地址是20.1.1.2這個地址,是它自身的公網(wǎng)地址,同時在RT3上配置了NAT server功能,把20.1.1.2這個公網(wǎng)目的地址映射成私網(wǎng)地址,如下圖所示:
5
此時RT3發(fā)送給RT4的報文如下圖所示:
6
RT4收到上圖所示報文之后,發(fā)現(xiàn)報文目的地址就是自身接口IP地址,去掉新IP頭,RT4設備配置ipsec的NAT穿越,去掉UDP頭后,對報文進行校驗、解密,發(fā)現(xiàn)一致,露出內(nèi)層私網(wǎng)地址,目的地址是192.168.2.1是自身loopback接口地址,發(fā)送成功;依次類推,接收的過程類似發(fā)送的過程,就不再贅述。
7
配置命令如下圖所示:
RT1配置如下圖所示:
RT2配置如下圖所示:
Ping過后的檢測結(jié)果如下圖所示:
RT1上通過display ipsec sa和display ike sa命令查看結(jié)果如下圖所示:
在RT2上開啟debugging功能,查看debugging nat packet結(jié)果如下圖所示:
因為NAT穿越使用的是UDP的500和4500兩個端口號,所以在NAT映射時不僅要允許IP地址映射,也要允許相應的端口號映射,RT3的配置如下圖所示:
這就是我們這一期給大家介紹的ipsec特殊的NAT穿越實驗。