hash:net を妨げるかどうか、ポートは 0.0.0.0/0 をサポートします。

hash:net を妨げるかどうか、ポートは 0.0.0.0/0 をサポートします。

ipset型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 は改訂 2 の hash:net,iface に追加されるように見えますが、有効な CIDR 表現としては許可されません。ポートをbitmap:portに保存し、それを独自のiptablesルールに適用できることを知っています。ただし、一部のポートは src IP アドレスに注意を払いますが、他のポートはそうではないため、ポートをハッシュに保存したいと思っています。

ベストアンサー1

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

# 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で使用されているのと同じトリックを使用することです。

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,srcIPとリモート(ソース)ポートを確認するという意味です。唯一の目的は、リモートSSHサーバーからの応答トラフィックを許可することですが、これは通常-m conntrack --ctstate ESTABLISHED他の場所ですでに処理されています。

おすすめ記事