firewall-cmd對於大多數開發運維人員還是相對陌生,對於特殊端口映射的問題,相信大家還是比較迷茫,特別是對於rich-rule網上也沒有幾個好例子參考,只有官網給出來幾個Example。
先說說需求吧:我們要做對於特定的IP(192.168.1.1)訪問本機80端口時,轉發到另一臺主機(192.168.1.1)的特定端口80,看了很多文章也沒有用的上的,最後只能直接看firewall的文檔。。。查到映射的規則如下:
firewall-cmd --permanent --add-rich-rule 'rule family=ipv4 source address=192.168.1.1 forward-port port=80 protocol=tcp to-port=80 to-addr=192.168.1.2'
但是隻是這個規則完全沒有起作用,牽扯到 to-addr時必須得有雙網卡,如果沒有必須開啓masquerade,
firewall-cmd --permanent --add-masquerade
firewall-cmd --permanent --add-rich-rule 'rule family=ipv4 source address=192.168.1.1 forward-port
port=80 protocol=tcp to-port=80 to-addr=192.168.1.2'
兩步之後大功告成。
最後,還有對於特定IP訪問本地特定端口時,轉到另一個端口命令如下,這個命令則無需開masquerade。
firewall-cmd --permanent --add-rich-rule 'rule family=ipv4 source address=192.168.1.1 forward-port port=80 protocol=tcp to-port=90'
刪除富規則相信大家都知道,上面命令中add改爲remove即可