Linux系統(tǒng)Iptables端方執(zhí)行詳細講解
Linux系統(tǒng)Iptables端方執(zhí)行詳細講解如下:
準(zhǔn)備知識(轉(zhuǎn)): iptable有三種行列隊伍(表)端方,mangle queue, filter queue, nat queue。
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
#p#
個人私家總結(jié):
iptables執(zhí)行端方時,是從從端方表中從上至下按次執(zhí)行的,如果沒碰著婚配的端方,就一條一條往下執(zhí)行,如果碰著婚配的端方后,那么就執(zhí)行本端方,執(zhí)行后按照本端方的舉動(accept, reject, log等),決定下一步執(zhí)行的情形,后續(xù)執(zhí)行一樣往常有三種情形。
1。一種是繼續(xù)執(zhí)行今后端方行列隊伍內(nèi)的下一條端方。歧執(zhí)行過Filter行列隊伍內(nèi)的LOG后,還會執(zhí)行Filter行列隊伍內(nèi)的下一條端方。
2。一種是中綴今后端方行列隊伍的執(zhí)行,轉(zhuǎn)到下一條端方行列隊伍。歧從執(zhí)行過accept后就中綴Filter行列隊伍內(nèi)別的端方,跳到nat行列隊伍端方去執(zhí)行
3。一種是中綴一切端方行列隊伍的執(zhí)行。
iptables 是采用端方堆棧的方式來進行過濾,當(dāng)一個封包進上鉤卡,會先搜檢 Prerouting,然后搜檢目標(biāo) IP 鑒定可否需求轉(zhuǎn)送出去,接著就會跳到 INPUT 或 Forward 進行過濾,如果封包需轉(zhuǎn)送處置責(zé)罰則搜檢 Postrouting,如果是來自本機封包,則搜檢 OUTPUT 以及 Postrouting。歷程中如果切合某條端方將會進行處置責(zé)罰,處置責(zé)罰舉動除了 ACCEPT、REJECT、DROP、REDIRECT 和 MASQUERADE 以外,還多出 LOG、ULOG、DNAT、SNAT、MIRROR、QUEUE、RETURN、TOS、TTL、MARK 等,此中某些處置責(zé)罰舉動不會中綴過濾法度,某些處置責(zé)罰舉動則會中綴統(tǒng)一端方煉的過濾,并遵照前述流程繼續(xù)進行下一個端方煉的過濾(當(dāng)心:這一點與 ipchains 不同),不停到堆棧中的端方搜檢終了為止。透過這種機制所帶來的益處是,我們可以進行重年夜、多重的封包過濾,重年夜的說,iptables 可以進行犬牙交織式的過濾(tables)而非煉狀過濾(chains)。
ACCEPT 將封包放行,進行完此處置責(zé)罰舉動后,將不再比對別的端方,間接跳往下一個端方煉(nat:postrouting)。
REJECT 攔阻該封包,并傳送封包報告對方,可以傳送的封包有幾個選擇:ICMP port-unreachable、ICMP echo-reply 或是 tcp-reset(這個封包會要求對方封閉聯(lián)機),進行完此處置責(zé)罰舉動后,將不再比對別的端方,間接 中綴過濾法度。 范例范比方下:
iptables -A FORWARD -p TCP --dport 22 -j REJECT --reject-with tcp-reset
DROP 甩失封包不予處置責(zé)罰,進行完此處置責(zé)罰舉動后,將不再比對別的端方,間接中綴過濾法度。
REDIRECT 將封包從新導(dǎo)向到另一個端口(PNAT),進行完此處置責(zé)罰舉動后,將 會繼續(xù)比對別的端方。 這個后果可以用來實作通透式 porxy 或用來保護 web 效力器。比方:iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
MASQUERADE 改寫封包來歷 IP 為防火墻 NIC IP,可以指定 port 對應(yīng)的范圍,進行完此處置責(zé)罰舉動后,間接跳往下一個端方煉(mangle:postrouting)。這個后果與 SNAT 略有不同,當(dāng)進行 IP 假裝時,不需指定要假裝成哪個 IP,IP 會從網(wǎng)卡間接讀取,當(dāng)運用撥繼續(xù)線時,IP 幾次是由 ISP 公司的 DHCP 效力器指派的,這個時分 MASQUERADE 特別有效。范例范比方下:
iptables -t nat -A POSTROUTING -p TCP -j MASQUERADE --to-ports 1024-31000
LOG 將封包相干訊息記載在 /var/log 中,過細地位請查閱 /etc/syslog.conf 組態(tài)檔,進行完此處置責(zé)罰舉動后,將會繼續(xù)比對別的端方。比方:
iptables -A INPUT -p tcp -j LOG --log-prefix "INPUT packets"
SNAT 改寫封包來歷 IP 為某特定 IP 或 IP 范圍,可以指定 port 對應(yīng)的范圍,進行完此處置責(zé)罰舉動后,將間接跳往下一個端方煉(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 改寫封包目標(biāo)地 IP 為某特定 IP 或 IP 范圍,可以指定 port 對應(yīng)的范圍,進行完此處置責(zé)罰舉動后,將會間接跳往下一個端方煉(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 與目標(biāo)地 IP 對換后,將封包送回,進行完此處置責(zé)罰舉動后,將會中綴過濾法度。
QUEUE 中綴過濾法度,將封包放入行列隊伍,交給別的法度處置責(zé)罰。透過自行斥地的處置責(zé)罰法度,可以進行別的運用,比方:計較聯(lián)機用度.......等。
RETURN 終了在目前端方煉中的過濾法度,前去主端方煉繼續(xù)過濾,如果把自訂端方煉看成是一個子法度,那么這個舉動,就相稱于延長終了子法度并前去到主法度中。
MARK 將封包標(biāo)上某個代號,以便提供作為后續(xù)過濾的條件鑒定按照,進行完此處置責(zé)罰舉動后,將會繼續(xù)比對別的端方。范例范比方下:
iptables -t mangle -A PREROUTING -p tcp --dport 22 -j MARK --set-mark 2
通過文章的描寫,我們知道了Linux系統(tǒng)Iptables端方執(zhí)行詳細資料。希望本文對大家有用!
【編輯推薦】