天天看點

iptables -L 不顯示結果

作者:蒜末半

閑來無事,今天測試了下列指令。

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
# 如下指令表示把所有10.8.0.0網段的資料包
# SNAT成網卡eth0的ip然後發出去
# MASQUERADE會自動讀取eth0現在的ip位址然後做SNAT出去,
# 這樣就實作了很好的動态SNAT位址轉換。           

上述指令中MASQUERADE,位址僞裝,算是snat中的一種特例,可以實作自動化的snat。

但是我使用iptables -L,啥結果沒有,增加失敗了嗎?

iptables -L 不顯示結果

原來不是如此,正确的指令是

iptables -L -t nat

使用-L, --list 選型可以列出目前防火牆規則,但是需要使用-t,--table指令選項來指定合适的Netfilter表,共有五種,分别為:filter(預設default), nat, mangle, raw 和 security。

iptables --table nat --list
           

或者使用下列簡短形式也行:

iptables -t nat -L
           
iptables -L 不顯示結果

假如沒有指定特定表,那麼預設表就是filter。

為了避免DNS查詢等待,可以使用-n、--numeric選項,直接列印IP位址而不是主機名。

假如需要删除增加的規則,那麼使用下列指令即可,簡單的加-A替換為-D選項即可:

iptables -t nat -D POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE           

使用-v選項可以檢視詳細資訊:

iptables -vL -t filter
iptables -vL -t nat
iptables -vL -t mangle
iptables -vL -t raw
iptables -vL -t security           
iptables -L 不顯示結果

iptables參考圖:

iptables -L 不顯示結果