IPTABLESのタグマッチングの重要性は何ですか?

IPTABLESのタグマッチングの重要性は何ですか?

Rancherサイトを設定し、ネットワークが機能するようにします。私のヘルスチェックコンテナが「ホストへのパスなし」のため失敗します。 IPTABLEルールを実行中のRancherサイトと比較した結果、実行中のRancherサイトに設定された次のルールが見つかりました。

Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
DOCKER-USER  all  --  anywhere             anywhere
DOCKER-ISOLATION  all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
DOCKER     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
DOCKER     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
CATTLE_NETWORK_POLICY  all  --  10.42.0.0/16         10.42.0.0/16
CATTLE_FORWARD  all  --  anywhere             anywhere

Chain CATTLE_FORWARD (1 references)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere            mark match 0x1068
ACCEPT     all  --  anywhere             anywhere            mark match 0x4000

$ iptables-save | grep mark

-A CATTLE_RAW_PREROUTING ! -i docker0 -p udp -m udp --dport 500 -j MARK --set-xmark 0x1068/0xffffffff`
-A CATTLE_RAW_PREROUTING ! -i docker0 -p udp -m udp --dport 4500 -j MARK --set-xmark 0x1068/0xffffffff
-A CATTLE_FORWARD -m mark --mark 0x1068 -j ACCEPT
-A CATTLE_FORWARD -m mark --mark 0x4000 -j ACCEPT

私の質問:

  1. このルールは何ですか?mark match 0x168そして何ですかmark match 0x4000
  2. 私のiptablesにこれらのルールを追加するには? iptablesで標準のtcp / udpポートを追加または削除する方法だけを知っていますが、それに関連するものが見つかりませんか?これらのルールをどのように追加しますか?

答え1

Linuxホスト内のIPパケットには、次のパケットがあります。パッケージタグ。それは数字だけです。

PREROUTINGこれらのルールは、0x1068または0x4000(またはチェーン内)のパケットタグ値が割り当てられたmangleパケットを受け入れます。rawnat

このルールを追加してください

私はあなたがテーブルCATTLE_FORWARDでルールを見つけ、テーブルでルールを見つけたとfilter仮定します。CATTLE_RAW_PREROUTINGraw

# create the chain CATTLE_FORWARD
iptables -N CATTLE_FORWARD
iptables -t raw -N CATTLE_RAW_PREROUTING

# add the rules
iptables -A CATTLE_FORWARD -m mark --mark 0x1068 -j ACCEPT
iptables -A CATTLE_FORWARD -m mark --mark 0x4000 -j ACCEPT

iptables -t raw -A CATTLE_RAW_PREROUTING ! -i docker0 -p udp -m udp --dport 500 -j MARK --set-xmark 0x1068/0xffffffff
iptables -t raw -A CATTLE_RAW_PREROUTING ! -i docker0 -p udp -m udp --dport 4500 -j MARK --set-xmark 0x1068/0xffffffff

しかし、これだけでは十分ではありません。値を設定するには、他のテーブルのルールも必要です。それ以外の場合、上記のルールは適用されません。

関連情報