upset hash:net,port は 0.0.0.0/0 をサポートしていますか?

upset hash:net,port は 0.0.0.0/0 をサポートしていますか?

ipset type hash:net,port に 0.0.0.0/0 を追加する方法はありますか? 1~32 のプレフィックス長のみをサポートしているようですが、ipset ハッシュのエントリで特定のポートのすべての IP トラフィックをサポートしたい場合はどうすればよいですか? たとえば、

ipset create testset hash:net,port
ipset add testset 0.0.0.0,22
iptables -I INPUT 1 -m set --match-set testset src, src -j ACCEPT
iptables -I INPUT 2 -j LOG --log-prefix "** FIREWALL **"

何もしません。SSH トラフィックはファイアウォールにヒットし、ログを生成します。0.0.0.0/0 は有効な CIDR 表記として受け入れられませんが、リビジョン 2 で hash:net,iface に追加されたようです。ポートを bitmap:port に保存して、独自の iptables ルールに適用できることはわかっています。ただし、ポートによっては src ip アドレスを気にするものと気にしないものがあり、0.0.0.0/0 用に別のセットを維持したくないため、ポートをハッシュに保存したいと考えています。

答え1

正しい構文は 0.0.0.0/0 を使用することです。0.0.0.0 はデフォルトで 0.0.0.0/32 になります。残念ながら、これはサポートされていません。

# ipset add testset 0.0.0.0/0,22
ipset v7.3: The value of the CIDR parameter of the IP address is invalid

代わりに、ルートを上書きするときに OpenVPN で使用されるのと同じ種類のトリックを使用できます。0.0.0.0/0 を半分に分割します。0.0.0.0/1 と 128.0.0.0/1 です。

ipset add testset 0.0.0.0/1,22
ipset add testset 128.0.0.0/1,22

注記:

通常、地元SSHサーバー、iptablesパラメータはおそらく次のようになります:

iptables -I INPUT 1 -m set --match-set testset src,dst -j ACCEPT

私たちは入力チェーン、意味受け取るは、src,dstリモート (送信元) IP とローカル (送信先) ポートを確認することを意味し、 は、src,srcリモート (送信元) IP とリモート (送信元) ポートを確認することを意味します。 この唯一の用途は、リモート SSH サーバーからの応答トラフィックを許可することですが、これは通常、-m conntrack --ctstate ESTABLISHED他の場所で既に処理されています。

関連情報