iptables OUTPUTチェーンでREJECTポリシーが利用できないのはなぜですか?

iptables OUTPUTチェーンでREJECTポリシーが利用できないのはなぜですか?

現在、OUTPUTチェーンはDROPに設定されています。アクセスしようとしているサービスに問題があるのではなく(タイムアウトではなくすぐに拒否)、ファイアウォールが私をブロックしていることがわかるようにREJECTに変更したいと思います。しかし、iptablesはこれを気にしないようです。保存したルールファイルを手動で編集して復元しようとすると、ルールのiptables-restore v1.4.15: Can't set policy 'REJECT' on 'OUTPUT' line 22: Bad policy nameロードが拒否されます。手動で設定しようとすると(iptables -P OUTPUT REJECTiptables: Bad policy name. Run 'dmesg' for more information.dmesgに出力が表示されません。

適切なルールがカーネルにコンパイルされたことを確認し、再起動してロードされたことを確認しました。

# CONFIG_IP_NF_MATCH_TTL is not set
CONFIG_IP_NF_FILTER=y
***
CONFIG_IP_NF_TARGET_REJECT=y
***
CONFIG_IP_NF_TARGET_LOG=y
CONFIG_IP_NF_TARGET_ULOG=y

(該当するルールを強調するには、アスタリスクを追加してください)

私が見つけることができるすべては、REJECTが有効な戦略/目標(一般的に)であると言いますが、INPUT、FORWARD、またはOUTPUTチェーンには無効であることがわかりません。私のGoogle-fuは役に立ちませんでした。私はGentooを使用しています。違いがあれば。ここに洞察力のある人はいますか?

答え1

REJECT目標の延長、チェーンポリシーは次のとおりです。ターゲット。マニュアルページにはそのように記載されていますが(明確ではありませんが)、一部は明らかに間違っています。

戦略はオンチェーンでのみ可能またはACCEPT組み込みDROP可能です。前のルールと一致しないすべてのパケットを拒否する効果が必要な場合は、最後のルールがすべてのエントリと一致することを確認し、宛先REJECT拡張を含むルールを追加するだけです。つまり、そのルールをすべて追加してから実行しますiptables -t filter -A OUTPUT -j REJECT

よりトピック「可能なチェーンポリシーは何ですか?」詳しくは、ネットフィルターのリストをご覧ください。

答え2

記録は見つかりませんでしたが、参考にしてくださいここ許可される唯一のポリシーはACCEPTまたはDROPであることを示します。これは以下を見ると確認できる。源泉of libiptc(規則操作担当) は 2429 行付近にあり、ここでコードは次のとおりです。

2429         if (strcmp(policy, LABEL_ACCEPT) == 0)
2430                 c->verdict = -NF_ACCEPT - 1;
2431         else if (strcmp(policy, LABEL_DROP) == 0)
2432                 c->verdict = -NF_DROP - 1;
2433         else {
2434                 errno = EINVAL;
2435                 return 0;
2436         }

オリジナルワイヤー最善の方法はチェーンの末尾にREJECTを追加することですiptables -A OUTPUT -j REJECT

この以前のコードは次のとおりです。

2423         if (!iptcc_is_builtin(c)) {
2424                 DEBUGP("cannot set policy of userdefinedchain `%s'\n", chain);
2425                 errno = ENOENT;
2426                 return 0;
2427         }
2428 

したがって、カスタムチェーンのポリシーをまったく設定できません。

答え3

REJECTOUTPUT言うことができませんREJECTICMPパケットこれを行うにはネットワークを通過する必要があります。

チェーンに何があるかを確認するには、新しいルールを-j LOG最後のルール(ポリシーの前に)として追加します。DROPOUTPUT

関連情報