iptables から nftables への移行

こんにちは、m//t です。

寒くなりましたね。
テレワーク中は起床後、近くのコンビニへ往復1時間近くかけて食料調達に行くのですが、日の出がどんどん遅くなっていきます。
冬至の半月後が一番日の出が遅いらしいです。

iptables と nftables

今回は iptables 運用環境から nftables 運用環境に移行する方法について一例を紹介します。

経緯

業務用サーバを追加するにあたって、「今なら CentOS 8 だよね」ということになり、これまでの CentOS 7 環境とは別に新しく構築を始めたのですが、それまで利用していた iptables の設定がそのまま使えず、対応を検討した結果、nftables に変換できるということを知り、その対応メモとして残します。

firewalld ではないのか?

以前、業務利用しているサーバを CentOS 6 から 7 に更新した際、iptables から firewalld への移行を検討したのですが、設定情報をそのまま利用できるようにと、firewalld を止め、iptables を使うようにしていました。

今回、CentOS 8 を導入するにあたり、firewalld への移行は仕方ないのかと、情報収集してると、内部では nft であり、nftables が使用できると知りました。
そして、iptables の設定を nftables に変換できることも。

であるならば nftables に移行してしまおう、という安直な発想で決定しました。
firewalld が nftables の機能を全て踏襲できてない、とかいう高尚な理由ではありません(苦笑)。

設定情報の変換、投入

設定したい iptables の設定情報が既にあることを前提とします。
それを nft 形式に変換後、nft に食わせます。

  1. 環境設定
     firewalld の停止と、nftables 起動を確認

    systemctl status firewalld
    systemctl status nftables
    systemctl stop    firewalld
    systemctl disable firewalld
    systemctl enable  nftables
    systemctl start   nftables
  2. 作業前の確認

    nft list ruleset
  3. 変換コマンドで設定情報を変換

    cd /etc/sysconfig/
    iptables-restore-translate -f iptables> nftables_from_iptables.txt
  4. nft に食わせる

    nft -i < nftables_from_iptables.txt
  5. 投入後の確認

    nft list ruleset

常用設定

サーバ起動時に読み出されるファイルを更新します。
nftables.conf で includeを有効にしていたり他の設定を入れてないのであればそのまま差し替えていいかもしれません。

cd /etc/sysconfig
cp -p nftables.conf nftables.conf_20201130
nft list ruleset > nftables.conf

nftables.conf で include /etc/nftables/main.nft を有効にしているなら、nft list の出力を /etc/nftables の下に吐き、main.nft から include するのがよいでしょう。

設定の反映

nftables.conf (や、include )を編集した場合、設定の反映が必要です。

systemctl reload nftables

最後に

今回は、既存の iptables 設定を利用して nftables 環境に移行する手法の一つを紹介しました。
各ルールの追加更新については nft の manpage に詳しく記載されていますので、そちらを参照してください。

以上、日照時間が短い盆地の底住みの m//t でした。

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA