歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux NAT基本流程與實現技巧

Linux NAT基本流程與實現技巧

日期:2017/2/28 14:43:11   编辑:Linux教程

基於matches的NAT

Linux的NAT是基於match的,即在滿足一系列條件的前提下執行SNAT或者DNAT,因此要求也就比較寬松,唯一的約束就是路由,即路由動作發生的時候,必須是基於最終的目標IP地址,因此DNAT必須發生在路由之前(對於本機發出的數據包,則在路由之後,然後重新路由),如下圖所示

附:Netfilter與ip_conntrack

Netfilter

Linux的協議棧僅僅實現了基本的協議操作,對應TCP/IP標准,Linux的協議棧僅僅實現了一個最小集。其余的所有擴展幾乎(並非所有!還有一部分由net schedule實現)均由Netfilter來實現,包括:IP Firewall,IP NAT,IPSec,IPVS等。

ip_conntrack

ip_conntrack是NAT實現的重中之重,Linux的NAT完全依賴ip_conntrack,依附於ip_conntrack之上。

基本數據結構:

值得注意的是,兩個方向的五元組節點在confirm之後統一處在一個哈希表中,並不區別對待,只要使用一個五元組作為鍵查找到不管哪個方向的五元組節點,都可以找到ip_conntrack結構體本身。五元組節點除了包含五元組信息之外,還包含方向信息。

更多詳情見請繼續閱讀下一頁的精彩內容: http://www.linuxidc.com/Linux/2013-10/91007p2.htm

Copyright © Linux教程網 All Rights Reserved