CentOSサーバ内でIPv6のポート間転送を行う必要が生じたのだが、普通にfirewall-cmdでadd-forward-portの設定

 

firewall-cmd --add-forward-port=port=443:proto=tcp:toport=8443

 

を行ってもIPv4への適用となりIPv6には適用されない。

 

ネットで検索してもIPv6用の設定方法がなかなか見つからず、そのためかネット上の情報からそれっぽい回答を生成するChatGPTでもデタラメな回答が返ってくる始末。

 

実直にmanコマンドで調べてみると

 

For IPv6 forward ports, please use the rich language.

 

と書いてあるだけで詳細不明なため、firewalldのドキュメントを読んでようやく設定方法が判明した。

 

次のようにrich languageを用いruleを指定して設定すれば良い。

 

firewall-cmd --add-rich-rule='rule family="ipv6" forward-port port="443" protocol="tcp" to-port="8443"'