目的:通過雙向NAT來更深的理解NAT在思科IOS中的數據包處理順序
前提:在真實環境中不會出現
環境:
將R1和R3模擬成PC,在不加網關的情況下,使兩者能夠正常通信。
定義R2的f0/0為ip nat inside;f1/0為ip nat outside。
我先貼出思科IOS的數據包處理的順序
NAT Overview | |
In this table, when NAT performs the global to local, or local to global, translation is different in each flow. | |
Inside-to-Outside | Outside-to-Inside |
If IPSec then check input access list | If IPSec then check input access list |
decryption - for CET (Cisco Encryption Technology) or IPSec | decryption - for CET or IPSec |
check input access list | check input access list |
check input rate limits | check input rate limits |
input accounting | input accounting |
redirect to web cache | redirect to web cache |
policy routing | NAT outside to inside (global to local translation) |
routing | policy routing |
NAT inside to outside (local to global translation) | routing |
crypto (check map and mark for encryption) | crypto (check map and mark for encryption) |
check output access list | check output access list |
inspect (Context-based Access Control (CBAC)) | inspect CBAC |
TCP intercept | TCP intercept |
encryption | encryption |
Queueing | Queueing |
可以看到在不同方向上的NAT是有區別的:1、inside source static是要先路由,然后才能NAT
2、outside source static是要先NAT,然后才路由
我們先來配置R2:
當R1的數據從inside去往outside的時候會首先檢查路由表,然后查看NAT條目,轉換成172.16.1.101這個ip地址
試想一下,如果要訪問R3的ip地址:172.16.1.1肯定要找網關,因為沒有網關,所以,我們將172.16.1.1這個ip地址轉換成192.168.1.101,這時候R1區訪問的就不是172.16.1.1而是192.168.1.101
這時候我們看看arp緩存表
如果是在juniper或者check point防火墻上就需要配置proxy-arp,手動添加ARP條目
這時候讓R1如訪問192.168.1.101,因為要從R2的接口上獲取到了ARP條目,所以將源:192.168.1.1目的:192.168.1.101的數據包丟給了R2的f0/0,R2會首先查看是否有到192.168.1.101的路由,但是因為有一條直連路由192.168.1.0直連在f0/0上的,R2會認為這是“無理取鬧”的數據丟棄。因為丟棄了所以不進行下一步將192.168.1.1轉換成172.16.1.101;將192.168.1.101轉換成172.16.1.1。
可以看到R2的f0/0因為有ARP條目回應了R1但是卻沒有將數據轉換,沒有讓telnet通過
正好我們來看看R3訪問172.16.1.101的時候是不是先進行NAT轉換的
可以看到172.16.1.1訪問172.16.1.101的時候轉換成192.168.1.101,之后172.16.1.101轉換成了192.168.1.1,同時R2也將該數據包轉發給了R1,但是因為R1回數據的時候沒有路由,也不能進行轉換,所以回話沒有成立。
所以,讓回話沒有成立的根源就在于,R2上沒有沒有到192.168.1.101的路由,那么我們在R2上添加192.168.1.101的路由,下一跳從f1/0轉發出去。
這時候我們再從R1發送數據到192.168.1.101
可以看到收到了192.168.1.101的回包,并且成功telnet
再看看R2上的轉換
192.168.1.1去訪問192.168.1.101,R2看到有路由是通往f1/0的,然后查看NAT條目
192.168.1.1轉換成172.16.1.101,然后目的192.168.1.101轉換成172.16.1.1,就變成了源地址:172.16.1.101,目的地址:172.16.1.1,接著從f1/0轉發出去。
172.16.1.1收到了包,看到源地址是:172.16.1.101,然后回包給172.16.1.101,轉換成192.168.1.101,再將172.16.1.101轉換成192.168.1.1,就變成了源地址:192.168.1.101,目的地址:192.168.1.1,然后從f0/0轉發出去。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。