2021-05-12 14:32:11
RHEL7下firewalls-cmd命令引數詳解
可以通過圖形介面工具 firewall-config或者命令列用戶端 firewall-cmd 啟用或者關閉防火牆特性。
使用firewall-cmd
命令列工具 firewall-cmd 支援全部防火牆特性。對於狀態和查詢模式,命令只返回狀態,沒有其他輸出。
一般應用
獲取 firewalld 狀態:
firewall-cmd --state
在不改變狀態的條件下重新載入防火牆:
firewall-cmd --reload
如果你使用--complete-reload,狀態資訊將會丟失。這個選項應當僅用於處理防火牆問題時,例如,狀態資訊和防火牆規則都正常,但是不能建立任何連線的情況。
獲取支援的區域列表:
firewall-cmd --get-zones
這條命令輸出用空格分隔的列表。
獲取所有支援的服務:
firewall-cmd --get-services
這條命令輸出用空格分隔的列表。
獲取所有支援的ICMP型別:
firewall-cmd --get-icmptypes
這條命令輸出用空格分隔的列表。
列出全部啟用的區域的特性:
firewall-cmd --list-all-zones
輸出格式是:
<zone>
interfaces: <interface1> ..
services: <service1> ..
ports: <port1> ..
forward-ports: <forward port1> ..
icmp-blocks: <icmp type1> ....
輸出區域 <zone> 全部啟用的特性。
省略zone選項則顯示預設區域的資訊:
firewall-cmd [--zone=<zone>] --list-all
獲取預設區域的網路設定:
firewall-cmd --get-default-zone
設定預設區域:
firewall-cmd --set-default-zone=<zone>
流入預設區域中設定的介面的新存取請求將被置入新的預設區域。當前活動的連線將不受影響。
獲取活動的區域:
firewall-cmd --get-active-zones
這條命令將用以下格式輸出每個區域所含介面:
<zone1>:<interface1> <interface2> ..<zone2>: <interface3> ..
根據介面獲取區域:
firewall-cmd --get-zone-of-interface=<interface>
這條命令將輸出介面所屬的區域名稱。
將介面增加到區域:
firewall-cmd [--zone=<zone>] --add-interface=<interface>
如果介面不屬於區域,介面將被增加到區域。如果區域被省略了,將使用預設區域。介面在重新載入後將重新應用。
修改介面所屬區域:
firewall-cmd[--zone=<zone>] --change-interface=<interface>
這個選項與 –add-interface 選項相似,但是當介面已經存在於另一個區域的時候,該介面將被新增到新的區域。
從區域中刪除一個介面:
firewall-cmd [--zone=<zone>] --remove-interface=<interface>
查詢區域中是否包含某介面:
firewall-cmd [--zone=<zone>] --query-interface=<interface>
返回介面是否存在於該區域。沒有輸出。
列舉區域中啟用的服務:
firewall-cmd [--zone=<zone> ] --list-services
啟用應急模式阻斷所有網路連線,以防出現緊急狀況:
firewall-cmd --panic-on
禁用應急模式:
firewall-cmd --panic-off
查詢應急模式:
firewall-cmd --query-panic
此命令返回應急模式的狀態,沒有輸出。可以使用以下方式獲得狀態輸出:
firewall-cmd --query-panic && echo "On" || echo "Off"
處理執行時區域
執行時模式下對區域進行的修改不是永久有效的。重新載入或者重新啟動後修改將失效。
啟用區域中的一種服務:
firewall-cmd [--zone=<zone>] --add-service=<service> [--timeout=<seconds>]
此舉啟用區域中的一種服務。如果未指定區域,將使用預設區域。如果設定了超時時間,服務將只啟用特定秒數。如果服務已經活躍,將不會有任何警告資訊。
例: 使區域中的ipp-client服務生效60秒:
firewall-cmd --zone=home --add-service=ipp-client --timeout=60
例: 啟用預設區域中的http服務:
firewall-cmd --add-service=http
禁用區域中的某種服務:
firewall-cmd [--zone=<zone>] --remove-service=<service>
此舉禁用區域中的某種服務。如果未指定區域,將使用預設區域。
例: 禁止home區域中的http服務:
firewall-cmd --zone=home --remove-service=http
區域種的服務將被禁用。如果服務沒有啟用,將不會有任何警告資訊。
查詢區域中是否啟用了特定服務:
firewall-cmd [--zone=<zone>] --query-service=<service>
如果服務啟用,將返回1,否則返回0。沒有輸出資訊。
啟用區域埠和協定組合:
firewall-cmd [--zone=<zone>] --add-port=<port>[-<port>]/<protocol>[--timeout=<seconds>]
此舉將啟用埠和協定的組合。埠可以是一個單獨的埠 <port> 或者是一個埠範圍<port>-<port> 。協定可以是 tcp 或 udp。
禁用埠和協定組合:
firewall-cmd [--zone=<zone>]--remove-port=<port>[-<port>]/<protocol>
查詢區域中是否啟用了埠和協定組合:
firewall-cmd [--zone=<zone>] --query-port=<port>[-<port>]/<protocol>
如果啟用,此命令將有返回值。沒有輸出資訊。
啟用區域中的IP偽裝功能:
firewall-cmd [--zone=<zone>] --add-masquerade
此舉啟用區域的偽裝功能。私有網路的地址將被隱藏並對映到一個公有IP。這是地址轉換的一種形式,常用於路由。由於核心的限制,偽裝功能僅可用於IPv4。
禁用區域中的IP偽裝:
firewall-cmd [--zone=<zone>] --remove-masquerade
查詢區域的偽裝狀態:
firewall-cmd [--zone=<zone>] --query-masquerade
如果啟用,此命令將有返回值。沒有輸出資訊。
啟用區域的ICMP阻塞功能:
firewall-cmd [--zone=<zone>] --add-icmp-block=<icmptype>
此舉將啟用選中的Internet控制報文協定(ICMP)報文進行阻塞。ICMP報文可以是請求資訊或者建立的應答報文,以及錯誤應答。
禁止區域的ICMP阻塞功能:
firewall-cmd [--zone=<zone>] --remove-icmp-block=<icmptype>
查詢區域的ICMP阻塞功能:
firewall-cmd [--zone=<zone>] --query-icmp-block=<icmptype>
如果啟用,此命令將有返回值。沒有輸出資訊。
例: 阻塞區域的響應應答報文:
firewall-cmd --zone=public --add-icmp-block=echo-reply
在區域中啟用埠轉發或對映:
firewall-cmd [--zone=<zone>]--add-forward-port=port=<port>[-<port>]:proto=<protocol> {:toport=<port>[-<port>] | :toaddr=<address> |:toport=<port>[-<port>]:toaddr=<address> }
埠可以對映到另一台主機的同一埠,也可以是同一主機或另一主機的不同埠。埠號可以是一個單獨的埠 <port> 或者是埠範圍<port>-<port> 。協定可以為 tcp 或udp 。目標埠可以是埠號 <port> 或者是埠範圍<port>-<port> 。目標地址可以是 IPv4 地址。受核心限制,埠轉發功能僅可用於IPv4。
禁止區域的埠轉發或者埠對映:
firewall-cmd [--zone=<zone>]--remove-forward-port=port=<port>[-<port>]:proto=<protocol> {:toport=<port>[-<port>] | :toaddr=<address> |:toport=<port>[-<port>]:toaddr=<address> }
查詢區域的埠轉發或者埠對映:
firewall-cmd [--zone=<zone>] --query-forward-port=port=<port>[-<port>]:proto=<protocol>{ :toport=<port>[-<port>] | :toaddr=<address> |:toport=<port>[-<port>]:toaddr=<address> }
如果啟用,此命令將有返回值。沒有輸出資訊。
例: 將區域home的ssh轉發到127.0.0.2
firewall-cmd --zone=home --add-forward-port=port=22:proto=tcp:toaddr=127.0.0.2
處理永久區域
永久選項不直接影響執行時的狀態。這些選項僅在過載或者重新啟動服務時可用。為了使用執行時和永久設定,需要分別設定兩者。選項 –permanent 需要是永久設定的第一個引數。
獲取永久選項所支援的服務:
firewall-cmd --permanent --get-services
獲取永久選項所支援的ICMP型別列表:
firewall-cmd--permanent --get-icmptypes
獲取支援的永久區域:
firewall-cmd --permanent --get-zones
啟用區域中的服務:
firewall-cmd --permanent [--zone=<zone>] --add-service=<service>
此舉將永久啟用區域中的服務。如果未指定區域,將使用預設區域。
禁用區域中的一種服務:
firewall-cmd --permanent [--zone=<zone>] --remove-service=<service>
查詢區域中的服務是否啟用:
firewall-cmd --permanent [--zone=<zone>] --query-service=<service>
如果服務啟用,此命令將有返回值。此命令沒有輸出資訊。
例: 永久啟用 home 區域中的 ipp-client 服務
firewall-cmd --permanent --zone=home --add-service=ipp-client
永久啟用區域中的一個埠-協定組合:
firewall-cmd --permanent [--zone=<zone>]--add-port=<port>[-<port>]/<protocol>
永久禁用區域中的一個埠-協定組合:
firewall-cmd --permanent [--zone=<zone>]--remove-port=<port>[-<port>]/<protocol>
查詢區域中的埠-協定組合是否永久啟用:
firewall-cmd --permanent [--zone=<zone>]--query-port=<port>[-<port>]/<protocol>
如果服務啟用,此命令將有返回值。此命令沒有輸出資訊。
例: 永久啟用 home 區域中的 https (tcp443) 埠
firewall-cmd --permanent --zone=home --add-port=443/tcp
永久啟用區域中的偽裝:
firewall-cmd --permanent [--zone=<zone>] --add-masquerade
此舉啟用區域的偽裝功能。私有網路的地址將被隱藏並對映到一個公有IP。這是地址轉換的一種形式,常用於路由。由於核心的限制,偽裝功能僅可用於IPv4。
永久禁用區域中的偽裝:
firewall-cmd --permanent [--zone=<zone>] --remove-masquerade
查詢區域中的偽裝的永久狀態:
firewall-cmd --permanent [--zone=<zone>] --query-masquerade
如果服務啟用,此命令將有返回值。此命令沒有輸出資訊。
永久啟用區域中的ICMP阻塞:
firewall-cmd --permanent [--zone=<zone>] --add-icmp-block=<icmptype>
此舉將啟用選中的 Internet 控制報文協定(ICMP)報文進行阻塞。 ICMP 報文可以是請求資訊或者建立的應???報文或錯誤應答報文。
永久禁用區域中的ICMP阻塞:
firewall-cmd --permanent [--zone=<zone>] --remove-icmp-block=<icmptype>
查詢區域中的ICMP永久狀態:
firewall-cmd --permanent [--zone=<zone>] --query-icmp-block=<icmptype>
如果服務啟用,此命令將有返回值。此命令沒有輸出資訊。
例: 阻塞公共區域中的響應應答報文:
firewall-cmd --permanent --zone=public --add-icmp-block=echo-reply
在區域中永久啟用埠轉發或對映:
firewall-cmd --permanent [--zone=<zone>]--add-forward-port=port=<port>[-<port>]:proto=<protocol> {:toport=<port>[-<port>] | :toaddr=<address> |:toport=<port>[-<port>]:toaddr=<address> }
埠可以對映到另一台主機的同一埠,也可以是同一主機或另一主機的不同埠。埠號可以是一個單獨的埠 <port> 或者是埠範圍<port>-<port> 。協定可以為 tcp 或udp 。目標埠可以是埠號 <port> 或者是埠範圍<port>-<port> 。目標地址可以是 IPv4 地址。受核心限制,埠轉發功能僅可用於IPv4。
永久禁止區域的埠轉發或者埠對映:
firewall-cmd --permanent [--zone=<zone>]--remove-forward-port=port=<port>[-<port>]:proto=<protocol> {:toport=<port>[-<port>] | :toaddr=<address> |:toport=<port>[-<port>]:toaddr=<address> }
查詢區域的埠轉發或者埠對映狀態:
firewall-cmd --permanent [--zone=<zone>] --query-forward-port=port=<port>[-<port>]:proto=<protocol>{ :toport=<port>[-<port>] | :toaddr=<address> |:toport=<port>[-<port>]:toaddr=<address> }
如果服務啟用,此命令將有返回值。此命令沒有輸出資訊。
例: 將 home 區域的 ssh 服務轉發到 127.0.0.2
firewall-cmd --permanent --zone=home --add-forward-port=port=22:proto=tcp:toaddr=127.0.0.2
直接選項
直接選項主要用於使服務和應用程式能夠增加規則。規則不會被儲存,在重新載入或者重新啟動之後必須再次提交。傳遞的引數 <args> 與 iptables,ip6tables 以及 ebtables 一致。
選項--direct需要是直接選項的第一個引數。將命令傳遞給防火牆。引數 <args> 可以是 iptables,ip6tables 以及 ebtables 命令列引數。
firewall-cmd --direct --passthrough { ipv4 | ipv6 | eb } <args>
為表 <table> 增加一個新鏈 <chain> 。
firewall-cmd --direct --add-chain { ipv4 | ipv6 | eb } <table> <chain>
從表 <table> 中刪除鏈 <chain> 。
firewall-cmd --direct --remove-chain { ipv4 | ipv6 | eb } <table> <chain>
查詢 <chain> 鏈是否存在與表 <table>. 如果是,返回0,否則返回1.
firewall-cmd --direct --query-chain { ipv4 | ipv6 | eb } <table> <chain>
如果啟用,此命令將有返回值。此命令沒有輸出資訊。
獲取用空格分隔的表 <table> 中鏈的列表。
firewall-cmd --direct --get-chains { ipv4 | ipv6 | eb } <table>
為表 <table> 增加一條引數為 <args> 的鏈 <chain> ,優先順序設定為<priority>。
firewall-cmd --direct --add-rule { ipv4 | ipv6 | eb } <table> <chain><priority> <args>
從表 <table> 中刪除帶引數 <args> 的鏈 <chain>。
firewall-cmd --direct --remove-rule { ipv4 | ipv6 | eb } <table> <chain><args>
查詢帶引數 <args> 的鏈 <chain> 是否存在表 <table> 中. 如果是,返回0,否則返回1.
firewall-cmd --direct --query-rule { ipv4 | ipv6 | eb } <table> <chain><args>
如果啟用,此命令將有返回值。此命令沒有輸出資訊。
獲取表 <table> 中所有增加到鏈 <chain> 的規則,並用換行分隔。
firewall-cmd --direct --get-rules { ipv4 | ipv6 | eb } <table> <chain>
本文永久更新連結地址:http://www.linuxidc.com/Linux/2016-06/132148.htm
相關文章