2008/12/11

[Linux] iptables CHAIN 說明

Linux 底下有一個功能很強大的工具叫做「iptables」,這個工具結合了 Linux Kernel 的設計,在 user mode 底下操作,達成 netfilter 的功能。
(這句話說的有點複雜,簡單的說,就是你在 Linux 上面要擋什麼網路封包,搞什麼封包轉發的,通通都是靠這味啦~)

我寫這篇,就想把 iptables 的功能先介紹到,晚點再來解釋它跟 netfilter 的關係,以及它的親戚 ebtables 的功能。

首先是在指令操作上的幾個名詞:
TABLE﹑ CHAINS﹑ JUMP
以這個指令來說:
iptables -t nat -A POSTROUTING -j DROP

nat 就是 TABLE 名, CHAINS 就是 POSTROUTING , JUMP 就是 DROP 。

來看圖好了:


一個封包由左側進來,先判斷要不要 FORWARD 轉發,要轉發就直接出去了,不轉發就走上面的路線,由本地端來判斷要不要做路由 ROUTING 的動作,要的話就還會轉出去,不要的話當然就本地收下來了。

在 TABLE 上面負責的工作,就是 NAT 負責進出、FILTER 負責本地端的進出,跟轉發的 FORWARD ,還有就是 MANGLE 負責本地端進出的修改, NAT 進出前的修改,判定轉發後的修改。

LOCAL 所有的 CHAINS 就是 INPUT 跟 OUTPUT
FORWARD 的 CHAINS 才有 PREROUTING 跟 POSTROUTING。

JUMP 的部份,就要看各個 JUMP 支援的動作了。

--
參考連結:
iptables 入門導引

沒有留言:

[Windows] git-bash 底下的工具

因為工作轉到 Windows 平台上的關係,所以很多工具改到 Windows 上面運作,跟著在 TortoiseGit 底下使用 git-bash 來維護自己的專案原始碼。結果就是裝了前面提過的 auto-hotkey 使用熱鍵來提昇自己的平台操作速度; 但除了 hotkey...