


Linux系統(tǒng)Iptables規(guī)則執(zhí)行順序詳細(xì)講解
1。The first is the mangle table which is responsible for the alteration of quality of service bits in the TCP header.
2。The second table is the filter queue which is responsible for packet filtering.
* Forward chain: Filters packets to servers protected by the firewall.
* Input chain: Filters packets destined for the firewall.
* Output chain: Filters packets originating from the firewall.
3。The third table is the nat queue which is responsible for network address translation. It has two built-in chains; these are:
* Pre-routing chain: NATs packets when the destination address of the packet needs to be changed.
* Post-routing chain: NATs packets when the source address of the packet needs to be changed
個(gè)人總結(jié):
iptables執(zhí)行規(guī)則時(shí),是從從規(guī)則表中從上至下順序執(zhí)行的,如果沒遇到匹配的規(guī)則,就一條一條往下執(zhí)行,如果遇到匹配的規(guī)則后,那么就執(zhí)行本規(guī)則,執(zhí)行后根據(jù)本規(guī)則的動(dòng)作(accept, reject, log等),決定下一步執(zhí)行的情況,后續(xù)執(zhí)行一般有三種情況。
1。一種是繼續(xù)執(zhí)行當(dāng)前規(guī)則隊(duì)列內(nèi)的下一條規(guī)則。比如執(zhí)行過Filter隊(duì)列內(nèi)的LOG后,還會(huì)執(zhí)行Filter隊(duì)列內(nèi)的下一條規(guī)則。
2。一種是中止當(dāng)前規(guī)則隊(duì)列的執(zhí)行,轉(zhuǎn)到下一條規(guī)則隊(duì)列。比如從執(zhí)行過accept后就中斷Filter隊(duì)列內(nèi)其它規(guī)則,跳到nat隊(duì)列規(guī)則去執(zhí)行
3。一種是中止所有規(guī)則隊(duì)列的執(zhí)行。
iptables 是采用規(guī)則堆棧的方式來進(jìn)行過濾,當(dāng)一個(gè)封包進(jìn)入網(wǎng)卡,會(huì)先檢查 Prerouting,然后檢查目的 IP 判斷是否需要轉(zhuǎn)送出去,接著就會(huì)跳到 INPUT 或 Forward 進(jìn)行過濾,如果封包需轉(zhuǎn)送處理則檢查 Postrouting,如果是來自本機(jī)封包,則檢查 OUTPUT 以及 Postrouting。過程中如果符合某條規(guī)則將會(huì)進(jìn)行處理,處理動(dòng)作除了 ACCEPT、REJECT、DROP、REDIRECT 和 MASQUERADE 以外,還多出 LOG、ULOG、DNAT、SNAT、MIRROR、QUEUE、RETURN、TOS、TTL、MARK 等,其中某些處理動(dòng)作不會(huì)中斷過濾程序,某些處理動(dòng)作則會(huì)中斷同一規(guī)則煉的過濾,并依照前述流程繼續(xù)進(jìn)行下一個(gè)規(guī)則煉的過濾(注意:這一點(diǎn)與 ipchains 不同),一直到堆棧中的規(guī)則檢查完畢為止。透過這種機(jī)制所帶來的好處是,我們可以進(jìn)行復(fù)雜、多重的封包過濾,簡單的說,iptables 可以進(jìn)行縱橫交錯(cuò)式的過濾(tables)而非煉狀過濾(chains)。
ACCEPT 將封包放行,進(jìn)行完此處理動(dòng)作后,將不再比對其它規(guī)則,直接跳往下一個(gè)規(guī)則煉(nat:postrouting)。
REJECT 攔阻該封包,并傳送封包通知對方,可以傳送的封包有幾個(gè)選擇:ICMP port-unreachable、ICMP echo-reply 或是 tcp-reset(這個(gè)封包會(huì)要求對方關(guān)閉聯(lián)機(jī)),進(jìn)行完此處理動(dòng)作后,將不再比對其它規(guī)則,直接 中斷過濾程序。 范例如下:
iptables -A FORWARD -p TCP --dport 22 -j REJECT --reject-with tcp-reset
DROP 丟棄封包不予處理,進(jìn)行完此處理動(dòng)作后,將不再比對其它規(guī)則,直接中斷過濾程序。
REDIRECT 將封包重新導(dǎo)向到另一個(gè)端口(PNAT),進(jìn)行完此處理動(dòng)作后,將 會(huì)繼續(xù)比對其它規(guī)則。 這個(gè)功能可以用來實(shí)作通透式 porxy 或用來保護(hù) web 服務(wù)器。例如:iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
MASQUERADE 改寫封包來源 IP 為防火墻 NIC IP,可以指定 port 對應(yīng)的范圍,進(jìn)行完此處理動(dòng)作后,直接跳往下一個(gè)規(guī)則煉(mangle:postrouting)。這個(gè)功能與 SNAT 略有不同,當(dāng)進(jìn)行 IP 偽裝時(shí),不需指定要偽裝成哪個(gè) IP,IP 會(huì)從網(wǎng)卡直接讀取,當(dāng)使用撥接連線時(shí),IP 通常是由 ISP 公司的 DHCP 服務(wù)器指派的,這個(gè)時(shí)候 MASQUERADE 特別有用。范例如下:
iptables -t nat -A POSTROUTING -p TCP -j MASQUERADE --to-ports 1024-31000
LOG 將封包相關(guān)訊息紀(jì)錄在 /var/log 中,詳細(xì)位置請查閱 /etc/syslog.conf 組態(tài)檔,進(jìn)行完此處理動(dòng)作后,將會(huì)繼續(xù)比對其它規(guī)則。例如:
iptables -A INPUT -p tcp -j LOG --log-prefix "INPUT packets"
SNAT 改寫封包來源 IP 為某特定 IP 或 IP 范圍,可以指定 port 對應(yīng)的范圍,進(jìn)行完此處理動(dòng)作后,將直接跳往下一個(gè)規(guī)則煉(mangle:postrouting)。范例如下:
iptables -t nat -A POSTROUTING -p tcp-o eth0 -j SNAT --to-source 194.236.50.155-194.236.50.160:1024-32000
DNAT 改寫封包目的地 IP 為某特定 IP 或 IP 范圍,可以指定 port 對應(yīng)的范圍,進(jìn)行完此處理動(dòng)作后,將會(huì)直接跳往下一個(gè)規(guī)則煉(filter:input 或 filter:forward)。范例如下:
iptables -t nat -A PREROUTING -p tcp -d 15.45.23.67 --dport 80 -j DNAT --to-destination 192.168.1.1-192.168.1.10:80-100
MIRROR 鏡射封包,也就是將來源 IP 與目的地 IP 對調(diào)后,將封包送回,進(jìn)行完此處理動(dòng)作后,將會(huì)中斷過濾程序。
QUEUE 中斷過濾程序,將封包放入隊(duì)列,交給其它程序處理。透過自行開發(fā)的處理程序,可以進(jìn)行其它應(yīng)用,例如:計(jì)算聯(lián)機(jī)費(fèi)用.......等。
RETURN 結(jié)束在目前規(guī)則煉中的過濾程序,返回主規(guī)則煉繼續(xù)過濾,如果把自訂規(guī)則煉看成是一個(gè)子程序,那么這個(gè)動(dòng)作,就相當(dāng)于提早結(jié)束子程序并返回到主程序中。
MARK 將封包標(biāo)上某個(gè)代號(hào),以便提供作為后續(xù)過濾的條件判斷依據(jù),進(jìn)行完此處理動(dòng)作后,將會(huì)繼續(xù)比對其它規(guī)則。范例如下:
iptables -t mangle -A PREROUTING -p tcp --dport 22 -j MARK --set-mark 2
關(guān)鍵字:Linux Iptables 規(guī)則 執(zhí)行
新文章:
- CentOS7下圖形配置網(wǎng)絡(luò)的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統(tǒng)后丟失windows啟動(dòng)項(xiàng)
- CentOS單網(wǎng)卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗(yàn)證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網(wǎng)打印機(jī)IP講解
- CentOS7使用hostapd實(shí)現(xiàn)無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網(wǎng)絡(luò)重啟出錯(cuò)
- 解決Centos7雙系統(tǒng)后丟失windows啟動(dòng)項(xiàng)
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統(tǒng)有什么不同呢
- Centos 6.6默認(rèn)iptable規(guī)則詳解