Iptables
使用 firewall-cmd 在 iptables 中添加永久 PREROUTING 規則
我正在嘗試
firewall-cmd
在 RHEL 7 上使用的 iptables (NAT) 中的 PREROUTING 鏈中添加新規則:
$ firewall-cmd --permanent --direct --add-rule ipv4 nat PREROUTING 0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8161
然後我通過以下方式檢查 iptables
$ iptables -t nat -L
:... Chain PREROUTING (policy ACCEPT) target prot opt source destination PREROUTING_direct all -- anywhere anywhere PREROUTING_ZONES_SOURCE all -- anywhere anywhere PREROUTING_ZONES all -- anywhere anywhere ... Chain PREROUTING_direct (1 references) target prot opt source destination REDIRECT tcp -- anywhere anywhere tcp dpt:http redir ports 8161 ...
但是,如果我執行一個等效的 iptables 命令,如下所示:
... Chain PREROUTING (policy ACCEPT) target prot opt source destination PREROUTING_direct all -- anywhere anywhere PREROUTING_ZONES_SOURCE all -- anywhere anywhere PREROUTING_ZONES all -- anywhere anywhere REDIRECT tcp -- anywhere anywhere tcp dpt:http redir ports 8161 ... Chain PREROUTING_direct (1 references) target prot opt source destination REDIRECT tcp -- anywhere anywhere tcp dpt:http redir ports 8161
我得到了這個附加規則,
Chain PREROUTING
即使防火牆被禁用(即禁用防火牆守護程序並執行iptables
命令),它也允許預路由工作。所以,我的問題有兩個:
- 是否有
firewall-cmd
與上述命令完全相同的iptables
命令?firewall-cmd
即使在禁用防火牆守護程序後,是否可以通過永久添加並保留該規則?
您正在使用
firewall-cmd
with--direct
選項,這意味著它接受 iptables 命令。因此,您可以使用相同的選項iptables -t nat
來獲得相同的效果,但有一個例外。使用firewall-cmd
這種方式將 NAT 規則添加到PREROUTING_direct
鏈中,而iptables
直接使用添加規則到PREROUTING
鏈。在 的輸出中
iptables -t nat -L
,您添加了兩次規則:每個鏈一次。至於問題的第二部分,firewalld 服務將在停止時刪除所有定義的鏈。因此,添加到的規則
PREROUTING_direct
將不再可用。簡短的回答是不。