何度もグーグルした後、参照が見つからないような、本当に奇妙なことが起こっています。 no iptablesがあるようです。チェーンがフラッシュされたり、すべてACCEPTルールなどであるというわけではなく、テーブル自体は存在しないようです。これが私が意味することです:
話は、私のDockerが過去数か月のある時点で機能を停止し、ついにそれを修正することに取り掛かったということです。エラーの原因は次のコマンドです。
$ iptables -A DOCKER-ISOLATION-STAGE-1 -j RETURN
iptables: No chain/target/match by that name.
起動の一部として実行されるDockerと、デバッグのために手動で実行しようとしたDocker。
それで、私はさまざまな場所にさまざまなチェーンとルールを追加しようとしていじり始めました、そしてすべてがそのエラーを与えていました。だから最後に私はすべてをリストしようとしました
$Sudo iptables -S
iptables: No chain/target/match by that name.
$ Sudo iptables -L
iptables: No chain/target/match by that name.
$ Sudo iptables --list
iptables: No chain/target/match by that name.
何も。だから私はそれぞれのテーブルを見ようとしました
# iptables -vL -t filter
iptables: No chain/target/match by that name.
# iptables -vL -t nat
iptables: No chain/target/match by that name.
# iptables -vL -t mangle
iptables: No chain/target/match by that name.
# iptables -vL -t raw
iptables: No chain/target/match by that name.
# iptables -vL -t security
iptables: No chain/target/match by that name.
それ以上に、実際のテーブル自体がなくなったようなものです。単純なものでも
# iptables -P INPUT ACCEPT
iptables: Bad built-in chain name.
動作しません。
誰かがこれを見たことがありますか?テーブルを元に戻す方法はありますか?
私のシステムはカーネル5.1.8を搭載したUbuntu18.10です
その後、すべてのiptablesモジュールを/etc/modules
に追加し、initramfsを再構築しました。モジュールは起動時にロードされますが、問題は解決しませんでした。
iptables-save
コマンドはエラーになりませんが、以下を出力するだけであることがわかりました。
# Generated by iptables-save v1.6.1 on Tue Jun 11 17:35:52 2019
*nat
COMMIT
# Completed on Tue Jun 11 17:35:52 2019
# Generated by iptables-save v1.6.1 on Tue Jun 11 17:35:52 2019
*mangle
COMMIT
# Completed on Tue Jun 11 17:35:52 2019
# Generated by iptables-save v1.6.1 on Tue Jun 11 17:35:52 2019
*raw
COMMIT
# Completed on Tue Jun 11 17:35:52 2019
# Generated by iptables-save v1.6.1 on Tue Jun 11 17:35:52 2019
*security
COMMIT
# Completed on Tue Jun 11 17:35:52 2019
# Generated by iptables-save v1.6.1 on Tue Jun 11 17:35:52 2019
*filter
COMMIT
# Completed on Tue Jun 11 17:35:52 2019
また、ip6tablesは正常に機能しているように見え、壊れているのはiptablesだけです。
次に、いくつかのiptablesコマンドを冗長モードで実行してみました。
# iptables -S -vv
libiptc vlibxtables.so.12. 0 bytes.
Table `filter'
Hooks: pre/in/fwd/out/post = 7f68/9f6085dd/5616/9f60a8e0/5616
Underflows: pre/in/fwd/out/post = 36e4540/7fff/36e48e8/7fff/0
iptables: No chain/target/match by that name.
# iptables -N DOCKER-ISOLATION-STAGE-1 -vv
詳細モードでは、このコマントは完了せず、出力は膨大です。ファイルにダンプしようとしましたが、ファイルのサイズが8.5GBに達したときに強制終了しました。出力は、次のパターンのすべての繰り返しです。
libiptc vlibxtables.so.12. 1032595540 bytes.
Table `filter'
Hooks: pre/in/fwd/out/post = 7ffe/92c0b5dd/55a7/92c0d8e0/55a7
Underflows: pre/in/fwd/out/post = 3d8c10f0/7ffe/3d8c1498/7ffe/3d8c2854
Entry 0 (0):
SRC IP: 0.0.0.0/0.0.0.0
DST IP: 0.0.0.0/0.0.0.0
Interface: `'/................to `'/................
Protocol: 0
Flags: 00
Invflags: 00
Counters: 0 packets, 0 bytes
Cache: 00000000
Target name: `' [0]
verdict=0
Entry 0 (0):
SRC IP: 0.0.0.0/0.0.0.0
DST IP: 0.0.0.0/0.0.0.0
Interface: `'/................to `'/................
Protocol: 0
Flags: 00
Invflags: 00
Counters: 0 packets, 0 bytes
Cache: 00000000
Target name: `' [0]
verdict=0
うまくいけば、これは誰かにとって意味があります、それは私にとって無意味です。
これはカーネル構成の問題であることが判明しました。通常、パッチを適用して新しいカーネルを構築するときは、以前のバージョンから使用していた構成をコピーします(後から考えると悪い考えかもしれません)。設定を最新のUbuntuカーネル設定とマージしてカーネルを再構築すると、iptablesの出力は再び正常に見えました。
インターネットで検索すると、次のコマンドを使用してLinuxでiptablesを復元できることがわかりました
ただし、kubernetesプロキシiptablesを使用すると、iptables + nodeを再起動した後にルールが失われることを示唆するテクニカルガイドがいくつかあります。
次のファイルは、それに関する有用な情報を提供します。
https://www.cyberciti.biz/faq/how-to-save-restore-iptables-firewall-config-ubuntu/
https://github.com/openshift/Origin/issues/1922
それがお役に立てば幸いです。
Iptablesを手動で再インストールしてみましたか?
./configure --prefix=/usr \
--sbindir=/sbin \
--disable-nftables \
--enable-libipq \
--with-xtlibdir=/lib/xtables &&
make
make install &&
ln -sfv ../../sbin/xtables-legacy-multi /usr/bin/iptables-xml &&
for file in ip4tc ip6tc ipq iptc xtables
do
mv -v /usr/lib/lib${file}.so.* /lib &&
ln -sfv ../../lib/$(readlink /usr/lib/lib${file}.so) /usr/lib/lib${file}.so
done
make install-iptables
ここ から描画。