iptables:何時使用 LAN 連接的輸入或輸出?
在後面有 LAN(例如 192.168.2.1/30)的 SSH 伺服器/防火牆(192.168.2.3)中,192.168.2.1/30 網路的內部機器進行的連接嘗試是否會被防火牆解釋為傳入或傳出連接?
如果它們被讀取為傳入或傳出,我是否必須指定目標或源地址塊 (192.168.2.1/30)?或者什麼時候需要 -d 或 -s 選項?
我的理解是:如果我想讓那些內部機器與外部世界建立任何新的連接,規則是這樣的。
iptables -A OUTPUT -s 192.168.2.8/30 -m state --state NEW -j ACCEPT
如果 SSH 伺服器想要與外部世界建立新的 ssh 連接,規則就是這樣
iptables -A OUTPUT -p tcp --sport 22 -m state --state NEW -j ACCEPT
在這種情況下,我應該省略 ssh 伺服器 IP 地址還是將其包含在規則中?
非常感謝。
INPUT
並且OUTPUT
僅針對iptables
正在執行的系統進行定義。換句話說,iptables
不在乎它的任何介面上有什麼樣的系統;它不關心介面是否連接到您信任的 LAN,或 DMZ,或裝有筆記型電腦的裝滿鯊魚的水箱。
INPUT
總是指從外部 進入介面的流量,目的是在本地終止。OUTPUT
指源自本地並即將通過介面 離開的流量。FORWARD
指的是通過一個介面並直接從另一個介面傳出的流量。上面引用的第一個在一個介面上調解從
192.168.2.0/30
LAN 到另一個介面上的外部世界的流量,因此兩者都應該在FORWARD
鏈中。第二個調解從防火牆到世界的流量,所以它就目前而言是可以的。雖然我可以順便補充一下,這不是一個 LAN,你可能應該檢查那個網路遮罩,因為防火牆在 LAN 的上下文中有一個無效的地址(它是廣播地址,不應該分配給單個主機)。請參閱我們關於 ipv4 子網劃分的著名規範問題以進行進一步討論。