lxc-containerでiptablesを実装する方法は?

lxc-containerでiptablesを実装する方法は?

Ubuntu 18.04システムにlxc-container(fedora 29 amd64)をインストールしました。 Linuxコンテナにはファイアウォールコマンドラインツールはありません。だから私はコンテナにiptablesをインストールし、正常にインストールされました。

しかし、入って来るすべてのパケットをドロップするようにインターフェイスを設定しようとしましたが、うまくいきませんでした。ここですべての詳細をお知らせします。

コマンドがip \a発行されました。

[root@fedora29~]# ip\a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue status UNKNOWN グループデフォルト qlen 1000
    リンク/ループバック 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 スコープホスト lo
       常に valid_lft 常に優先_lft
    inet6::1/128 スコープホスト
       常に valid_lft 常に優先_lft
7: eth0@if8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue 状態 UP グループ デフォルト qlen 1000
    リンク/エーテル 00:16:3e:4c:d8:bf brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 10.0.3.52/24 brd 10.0.3.255 範囲グローバル動的 eth0
       valid_lft 3456秒 Preferred_lft 3456秒
    inet6 fe80::216:3eff:fe4c:d8bf/64 範囲リンク
       常に valid_lft 常に優先_lft

私のiptablesルールは次のとおりです。

[root@fedora29 ~]# iptables -L
チェーン入力(ポリシー承認)
ターゲット保護の選択ソースターゲット         

チェーン転送(ポリシー承認)
ターゲット保護の選択ソースターゲット         

チェーン出力(ポリシー承認)
ターゲット保護の選択ソースターゲット    

だから、次の2つのルールを追加しました。

iptables --table filter --append INPUT --in-interface eth0@if8 --jump DROP
iptables --table filter --append OUTPUT --out-interface eth0@if8 --jump DROP

最後に設定を保存すると

iptables - 保存

[root@fedora29~]# iptables-save
#2019年2月20日水曜日08:41:43にiptables-save v1.8.0によって作成されました
*フィルター
:入力承認[0:0]
:転送を受け入れる[0:0]
:出力を許可[0:0]
-A 入力 -i eth0@if8 -j 削除
-A 出力 -o eth0@if8 -j 廃棄
犯罪
#2019年2月20日水曜日08:41:43完了

ただし、インターフェイス名がlxcbr0のUbuntuホストシステムでは正しく機能します。

答え1

@if8インターフェイス名の一部ではないため、ルールのインターフェイス名から削除するだけです。インターフェイス名はeth0

@if8接続されたピアインターフェイスの手がかりで動的です。たとえば、コンテナを再起動した後に変更されることがあります。

あなたの意味についてもっと知りたい場合は、@if8私の答えを読んでください。
Ubuntuの「ip address」コマンド出力で、インターフェース名の「if1@if2」とはどういう意味ですか?

答え2

まず、私の問題を解決してくれた@ABの答えに感謝します。操作できるインターフェイスを提供せずに組み込みチェーンの戦略を試してみましたが...

[root@fedora29 ~]# iptables --table filter--ポリシー入力を削除
[root@fedora29 ~]# iptables --table filter --policy 出力の削除
[root@fedora29 ~]# iptables-save > /etc/network/iptables
[root@fedora29 ~]# iptables-apply /etc/network/iptables
新しいルールセットを適用...完了。
デバイスに新たに接続できますか? (y/n) y
…それで私のやり方は終わりました。次にまた会いましょう。

ただし、リストルールを使用しようとすると、新しいiptables -Lルールは作成されませんが、図のようにルールのポリシーが変更されることを確認できます。

[root@fedora29 ~]# iptables -L
チェーン入力(ポリシーDROP)
ターゲット保護の選択ソースターゲット         

チェーン転送(ポリシー承認)
ターゲット保護の選択ソースターゲット         

チェーン出力(戦略DROP)
ターゲット保護の選択ソースターゲット         
[root@fedora29 ~]# ping 10.0.3.1
PING 10.0.3.1(10.0.3.1) 56(84)バイトのデータ。
ping: sendmsg: 操作は許可されません
ping: sendmsg: 操作は許可されません

--- 10.0.3.1 ping統計 ---
2つのデータパケット転送、0つのデータパケット受信、100%パケット損失、時間23ms

[root@fedora29 ~]# iptables -S
-P 入力ダウン
-P配信受付
-P出力低下

関連情報