參考原文網(wǎng)址:
http://man.lupaworld.com/content/network/iptables-tutorial-cn-1.1.19.html#MANGLETABLE
表
(1)mangle表
可以改變數(shù)據(jù)包的TOS、TTL永乌、MARK等特性:
TOS操作用來設(shè)置或改變數(shù)據(jù)包的服務(wù)類型域沿猜;
TTL操作用來改變數(shù)據(jù)包的生存時間域橄妆,我們可以讓所有數(shù)據(jù)包只有一個特殊的TTL赦拘。它的存在有 一個很好的理由阁猜,那就是我們可以欺騙一些ISP捎谨。為什么要欺騙他們呢?因為他們不愿意讓我們共享 一個連接着绷。那些ISP會查找一臺單獨的計算機是否使用不同的TTL右锨,并且以此作為判斷連接是否被共享 的標志坊夫;
MARK用來給包設(shè)置特殊的標記;
(2)nat表
主要有以下:
DNAT:改變的是目的地址
SNAT:改變的是源地址
MASQUERADE:MASQUERADE的作用和MASQUERADE完全一樣斟或,只是計算機 的負荷稍微多一點萝挤。因為對每個匹配的包怜珍,MASQUERADE都要查找可用的IP地址,而 不象SNAT用的IP地址是配置好的。當然辅甥,這也有好處肆氓,就是我們可以使用通過PPP袍祖、 PPPOE、SLIP等撥號得到的地址,這些地址可是由ISP的DHCP隨機分配的
(3)filter表
過濾數(shù)據(jù)包凳鬓,較為復(fù)雜,常用有DROP患民、ACCEPT缩举、REJECT等
狀態(tài)機制
(1)conntrack
/proc/net/ip_conntrack里的conntrack記錄當前被跟蹤的連接;除了本地產(chǎn)生的包由OUTPUT鏈處理外匹颤,所有連接跟蹤都是在PREROUTING鏈里進行處理的仅孩,意思就是, iptables會在PREROUTING鏈里從新計算所有的狀態(tài)印蓖。如果我們發(fā)送一個流的初始化包辽慕,狀態(tài)就會在OUTPUT鏈 里被設(shè)置為NEW,當我們收到回應(yīng)的包時赦肃,狀態(tài)就會在PREROUTING鏈里被設(shè)置為ESTABLISHED溅蛉。如果第一個包不是本地產(chǎn)生的,那就會在PREROUTING鏈里被設(shè)置為NEW狀 態(tài)他宛。綜上船侧,所有狀態(tài)的改變和計算都是在nat表中的PREROUTING鏈和OUTPUT鏈里完成的
(2)數(shù)據(jù)包在用戶空間的狀態(tài)
NEW
NEW說明這個包是我們看到的第一個 包。意思就是厅各,這是conntrack模塊看到的某個連接第一個包镜撩,它即將被匹配了。比如队塘,我們看到一個SYN 包琐鲁,是我們所留意的連接的第一個包卫旱,就要匹配它。第一個包也可能不是SYN包围段,但它仍會被認為是NEW狀態(tài)
ESTABLISHED
ESTABLISHED已經(jīng)注意到兩個方向上 的數(shù)據(jù)傳輸,而且會繼續(xù)匹配這個連接的包投放。處于ESTABLISHED狀態(tài)的連接是非常容 易理解的奈泪。只要發(fā)送并接到應(yīng)答,連接就是ESTABLISHED的了灸芳。一個連接要從NEW變 為ESTABLISHED涝桅,只需要接到應(yīng)答包即可,不管這個包是發(fā)往防火墻的烙样,還是要由防 火墻轉(zhuǎn)發(fā)的冯遂。ICMP的錯誤和重定向等信息包也被看作是ESTABLISHED,只要它們是我 們所發(fā)出的信息的應(yīng)答
RELATED
RELATED是個比較麻煩的狀態(tài)谒获。當一 個連接和某個已處于ESTABLISHED狀態(tài)的連接有關(guān)系時蛤肌,就被認為是RELATED的了。換句話說批狱,一個連接要想 是RELATED的裸准,首先要有一個ESTABLISHED的連接。這個ESTABLISHED連接再產(chǎn)生一個主連接之外的連接赔硫,這 個新的連接就是RELATED的了炒俱,當然前提是conntrack模塊要能理解RELATED
INVALID
INVALID說明數(shù)據(jù)包不能被識別屬于 哪個連接或沒有任何狀態(tài)。有幾個原因可以產(chǎn)生這種情況爪膊,比如权悟,內(nèi)存溢出,收到不知屬于哪個連接的ICMP 錯誤信息推盛。一般地峦阁,我們DROP這個狀態(tài)的任何東西
iptables語法規(guī)則
書寫規(guī)則的語法格式是:
iptables [-t table] command [match] [target/jump]
target指令必須最后;
table處可以指定自己的表名小槐;
match描述了包的特點拇派,如來源IP地址、網(wǎng)絡(luò)接口凿跳、端口件豌、協(xié)議等
若數(shù)據(jù)包符合所有的match屬性,內(nèi)核就用target來處理它或者把它發(fā)給target