冗長iptablesルールの機能は何ですか?

冗長iptablesルールの機能は何ですか?

Dockerがネットワークに接続する方法をよりよく理解しようとしていますが、この問題が発生しました。注:私はこれがDocker自体とは関係がないと思い、Dockerが登場する車両にすぎません。これが私の誤解なら、自由に訂正してください!

Docker が Swarm モードで実行されると、次の iptables コマンドが実行されます。

> iptables -t filter -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:domain
ACCEPT     udp  --  anywhere             anywhere             udp dpt:domain
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:bootps
ACCEPT     udp  --  anywhere             anywhere             udp dpt:bootps

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
DOCKER-ISOLATION  all  --  anywhere      anywhere
DOCKER     all  --  anywhere     (1)     anywhere
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
ACCEPT     all  --  anywhere     (2)     anywhere
ACCEPT     all  --  anywhere     (3)     anywhere
DOCKER     all  --  anywhere     (4)     anywhere
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
ACCEPT     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere

出力に1,2,3,4の数字を追加しました。 1番と4番は重複しているようです。同様に、2と3は互いに同じコピーのように見えます。これらの目的は何ですか?本当に重複ですか?そうでない場合、それを識別するために次の情報層をどのように表示できますか?

そして、最初の部分で誰かdpt:domainvsを説明することができればdpt:bootpsそれも良いと思います!

答え1

見つかったルールは、「ペア」1-4と2-3に対して重複しない可能性が高いですが、使用したコマンドの出力に違いはありません。を使用すると、iptables -L -v違いを明らかにするための追加の出力が得られます。これは、ルールが別のインターフェイスで実行されている場合(私の経験では)頻繁に発生します。

ターゲットポートの仕様が異なりますdpt:domain。宛先ポートは53(ドメインまたはDNS)ですが、宛先ポートは67(DHCP)です。dpt:bootpsdpt:domaindpt:bootps

編集:そうです。この状況はDockerと直接関連していません。これはDockerがユーザーエクスペリエンスにさらされる比較的一般的な状況ですが、Docker環境の外でも頻繁に発生します。

答え2

2番目の質問に対する追加の答え:この実行は、iptables -L -nIPアドレスとポートをホスト名とサービス名に変換するのではなく、数値形式で返します。したがって、dpt:domainandはanddpt:bootpsとして印刷されます。これは、後ろのサービス名がわからないすべてのホスト/ポートに対して機能します。dpt:53dpt:67

関連情報