Armadilloフォーラム

iptablesではなく、iptables-legacyでしょうか?

mori.k

2024年1月27日 8時40分

お世話になります。

表題のコマンド(iptables)を実行すると、
# Warning: iptables-legacy tables present, use iptables-legacy to see them

と表示されます。iptables-legacyが適当でしょうか?

その場合、
https://manual.atmark-techno.com/armadillo-iot-a6/armadillo-iota6_produ…

root@armadillo:~# iptables --policy input drop
iptables: Bad policy name. Run `dmesg' for more information.
root@armadillo:~# iptables-legacy --policy input drop
iptables: Bad built-in chain name.
root@armadillo:~#

どのように対応するかをアドバイスお願いします。
また、マニュアルの改定が必要であれば、適宜お願いします。

コメント

at_dominique.m…

2024年1月29日 10時25分

mori.kさん

お世話になっています、
マルティネです。

> 表題のコマンド(iptables)を実行すると、
> # Warning: iptables-legacy tables present, use iptables-legacy to see them
>
> と表示されます。iptables-legacyが適当でしょうか?

Armadillo Base OS では iptables コマンドは legacy の実装を使っているはずですが、何か iptables コマンドの切り替えを行った可能性がありますね。

裏の実装は関係ないので、いつも同じコマンドを使用する場合に問題ありません。
iptables-nft -S / iptables-legacy -S の二つのコマンドでルールを確認できます。どれかのルールで何かをフィルターするとちゃんとブロックされますので、基本的にはどれかを無視していいです。
表示されているワーニングも、ルールがあるかどうかまで確認してませんので、ルールが片方にしか無ければ無視していいです。

> root@armadillo:~# iptables --policy input drop
> iptables: Bad policy name. Run `dmesg' for more information.
> root@armadillo:~# iptables-legacy --policy input drop
> iptables: Bad built-in chain name.
> root@armadillo:~#
>
> どのように対応するかをアドバイスお願いします。

バージョンと関わらず、iptables では大文字と小文字の区別をしていますので、 input drop ではなく INPUT DROP として書いてください。

よろしくお願いします。

マルティネさま

お返事ありがとうございます。

> iptables-nft -S / iptables-legacy -S の二つのコマンドでルールを確認できます。
> どれかのルールで何かをフィルターするとちゃんとブロックされますので、基本的にはどれかを無視していいです。
> 表示されているワーニングも、ルールがあるかどうかまで確認してませんので、ルールが片方にしか無ければ無視していいです。

承知しました。

> バージョンと関わらず、iptables では大文字と小文字の区別をしていますので、
> input drop ではなく INPUT DROP として書いてください。

承知しました。
別件で不具合が発生し、確認が進みません。

取り急ぎ、お礼まで。

at_dominique.m…

2024年1月30日 10時02分

mori.kさん

マルティネです。

> Armadillo Base OS では iptables コマンドは legacy の実装を使っているはずですが、何か iptables コマンドの切り替えを行った可能性がありますね。

すみません、ここは Armadillo Base OS の話していましたが Armadillo-IoT A6 は debian を使ってますのでこの行だけを訂正させてください。
debian のデフォルトは iptables-nft で問題ありません、お騒がせしました。

「iptables-legacy tables present」のワーニングは先日の返事どおりに、モジュールではなく built-in でカーネルに組み込まれているのでどうしようもなく表示されますが、「iptables-legacy -S」が空(3つのポリシー ACCEPT)で無視できます。
ポリシーやルールは nft/legacy のどれかで設定すれば実施されますので、デフォルトの iptables コマンドだけでいいです。

大文字・小文字の説明もその通りで、「iptables --policy INPUT DROP」で正常に処理されるはずです。

> 別件で不具合が発生し、確認が進みません。

確認の際にまた何か疑問に思う点がございましたらマニュアルの改善にも参考しますので、ご連絡ください。

よろしくお願いします。

マルティネさん

お返事ありがとうございます。

> ポリシーやルールは nft/legacy のどれかで設定すれば実施されますので、デフォルトの iptables コマンドだけでいいです。

iptables-saveが機能しませんでした。iptables-legacy-saveで機能しました。
最新のアップデートを適用しています。

別の不具合は、御社マニュアルやフォーラムを解読することで、なんとか対処できました。
よろしくお願いします。

at_dominique.m…

2024年1月30日 12時00分

mori.kさん

(「マニュアル記載の気になる点について」で iptables の話も上げてますが、話題で別けた方が処理しやすいのでこの点はここだけで返事します)

> > ポリシーやルールは nft/legacy のどれかで設定すれば実施されますので、デフォルトの iptables コマンドだけでいいです。
>
> iptables-saveが機能しませんでした。iptables-legacy-saveで機能しました。

「機能しませんでした」というのは、ルールが反映されてなかったということでしょうか?

iptables で設定したポリシー・ルールは iptables-save に反映されて、iptables-legacy で追加した物が iptables-legacy-save で反映されます。
機能としてはどれでも処理されますので iptables(-nft) か iptables-legacy のどれでもにフィルターを設定しても問題ありませんが、保存や確認は個別でする必要がありますので、推奨としては iptables だけを使っていただければ分かりやすいかと考えています。

iptables-save と iptables-legacy-save の出力自体に適合性がありますので、
iptables-legacy-save でルールを /etc/iptables/rules.v4 か rules.v6 に保存しても次の再起動で iptables-save で表示されると思います
(Debian buster で netfilter-persistent がデフォルトの iptables の実装を使ってますので、切り替えられます。その点もマニュアルではまだ iptables-persistent として記載されてますね、それもこれから更新します…お手数をかけしています…)

よろしくお願いします。

お返事ありがとうございます。

> 「機能しませんでした」というのは、ルールが反映されてなかったということでしょうか?

以下にコマンド実行結果(ログ抜粋)を提示します。

root@armadillo:/etc/iptables# iptables-save > /etc/iptables/rules.v4
# Warning: iptables-legacy tables present, use iptables-legacy-save to see them
root@armadillo:/etc/iptables# iptables-legacy-save > /etc/iptables/rules.v4
root@armadillo:/etc/iptables# ls
rules.v4

iptables-saveで上記メッセージを表示したことから、
「機能しませんでした」と解釈してしまいました。
コマンドは連続して実施しており確認不足がありますので、私の勘違いかもしれません。

> iptables で設定したポリシー・ルールは iptables-save に反映されて、
> iptables-legacy で追加した物が iptables-legacy-save で反映されます。
> 推奨としては iptables だけを使っていただければ分かりやすいかと考えています。

iptables-legacy で追加した設定が、iptables にも反映されていました。
手順変更などの詳細確認は実施していませんので、結果まで。

> (「マニュアル記載の気になる点について」で iptables の話も上げてますが、

ご確認、よろしくお願いします。

at_dominique.m…

2024年1月30日 14時19分

mori.kさん

ご確認ありがとうございます。

> iptables-saveで上記メッセージを表示したことから、
> 「機能しませんでした」と解釈してしまいました。
> コマンドは連続して実施しており確認不足がありますので、私の勘違いかもしれません。

この iptables-save のワーニングは誤解しやすいですが、機能としては影響ありません。
メッセージのとおりに「legacy のテーブルもあります」ので、フィルターされないはずの物がフィルターされた場合に legacy のルールも確認するようにという警告です。iptables と iptables-legacy のルールはメモリ上で別のテーブルで保存されますので、解析などの場合に iptables-save / iptables-legacy-save の両方の出力を確認する必要があります。

Armadillo IoT A6 で使用している Linux カーネルは普通の Linux パソコンと違って iptables (legacyの実装)も nft(新しくデフォルトで使用されている実装)の両方が一つのファイルに組み込まれているためこの警告は常に表示されてしまいますが、iptables のコマンドだけを使用すれば完全に無視していいです。
(「普通」の Linux パソコンでしたら、iptables と nft の実装はモジュールになっていますので、使用しなければロードされません。残念ですが一つのファイルで組み込む場合にはどうしようもなく表示されてしまいます。)

今回は iptables-legacy で設定を追加されたようですので、おそらく以下の流れになったと思います:
* iptables-legacy でルールの設定
* iptables-legacy-save で rules.v4 でルールを保存 (ファイルを上書きしましたので、iptables-save の結果は失われたが、iptables で設定してなかったため空だったはずです)
* 再起動か netfilter-persistent のサービスリスタートで iptables でルール読み取り
* 結果、iptables-save で表示されるようになった (が再起動の場合に iptables-legacy-save で表示されなくなったはずです)ので、このまま iptables だけを使用続けていただいて問題ありません。

確認のため、再起動の後に iptables-save と iptables-legacy-save を二つのファイルに保存して、/etc/iptables/rules.v4 に比べてみてください。

ややっこしいことになってしまってすみませんが、今から再びルールを追加する場合にルールを別けないようにだけをご注意ください。

よろしくお願いします。

お返事ありがとうございます。

> この iptables-save のワーニングは誤解しやすいですが、機能としては影響ありません。
> メッセージのとおりに「legacy のテーブルもあります」ので、
> (中略) legacy のルールも確認するようにという警告です。

承知しました。
Warning(英語)だからと、よく意図を読まずに反応してしまいました。
申し訳ありません。

> 今回は iptables-legacy で設定を追加されたようですので、
> * iptables-legacy でルールの設定
> * iptables-legacy-save で rules.v4 でルールを保存
> * 再起動のサービスリスタートで iptables でルール読み取り

その通りです。
結果、iptables --list で表示されるようになった、と解釈しています。

iptables --listは、設定が反映されている。(INPUT DROPとなっている)
iptables-nft --list も、上記同様。
iptables-legacy --list は、設定が反映されない状態、すべてACCEPTとなっていました。

片方(iptables)だけ設定・確認する、という解釈でよいでしょうか?

よろしくお願いします。

at_dominique.m…

2024年1月30日 16時01分

> Warning(英語)だからと、よく意図を読まずに反応してしまいました。
> 申し訳ありません。

こちらこそ説明が分かりにくくてすみません。
おかげさまでマニュアルにその警告の説明を追加する予定です。

> 片方(iptables)だけ設定・確認する、という解釈でよいでしょうか?

はい、これからは iptables だけを使ってください。
厳密で説明すると、両方のフィルター(iptables-nft / iptables-legacy) が重なっています。片方で DROP 等された場合にパケットを DROP することになりますので、iptables-legacy がすべて ACCEPT で正常です。
分からない理由で接続できなかった場合は両方を確認した方がいいと思いますが、通常の使い方としては iptables だけを使っていただければ一番分かりやすいと思います。

よろしくお願いします。