在介紹原理之前调炬,首先需要知道Linux內(nèi)核設(shè)置的5個(gè)相關(guān)hook點(diǎn)乔夯。如下圖:
image.png
說(shuō)明:
- 1.數(shù)據(jù)包從網(wǎng)卡進(jìn)來(lái)库说,會(huì)進(jìn)入到PREROUTING. 在PREROUTING階段藏斩,會(huì)去檢查raw,mangle,nat這幾個(gè)表是否會(huì)有相關(guān)的規(guī)則。有則會(huì)執(zhí)行相關(guān)的規(guī)則
- 2.然后進(jìn)行路由選擇判斷菇存,如果是發(fā)往本機(jī)的夸研,就會(huì)進(jìn)入到INPUT階段。如果不是則進(jìn)入FORWARD依鸥,匹配相關(guān)的規(guī)則表后亥至,進(jìn)入到POSTROUTING階段。
- 3.進(jìn)入到INPUT后贱迟,就會(huì)進(jìn)入到上層應(yīng)用程序姐扮。
- 4.如果是應(yīng)用程序發(fā)出去的包,就會(huì)進(jìn)入OUTPUT->POSTROUTING.
1.iptables基本語(yǔ)法(表和鏈配合使用)
image.png
上圖可以這么理解衣吠,iptables 的某個(gè)表(table)茶敏,對(duì)應(yīng)的是那一條鏈(chain),對(duì)這條鏈上的什么內(nèi)容(Parameter Xmatch)進(jìn)行什么樣的操作(target).
command:
-A:表示的是追加一個(gè)什么規(guī)則缚俏。
-D:表示的是刪除一個(gè)規(guī)則惊搏。
-L:表示列出所有的規(guī)則。
-F:表示清空對(duì)應(yīng)的規(guī)則忧换√窆撸‘
-P:設(shè)置默認(rèn)規(guī)則。
-I:插入第一行包雀,最為第一個(gè)規(guī)則宿崭。
-R:替換亲铡。
-n:把對(duì)應(yīng)的域名轉(zhuǎn)換成ip地址才写。