ipset xからyまでIP範囲を追加する方法

ipset xからyまでIP範囲を追加する方法

この81.212.0.0/14 IP範囲をipsetに追加する必要があります。ただし、/16 以下では計算されません。 81.212.0.0から81.215.255.255までIPアドレスを追加したいです。 / 14以外に他の方法がありますか?

特定のIP範囲の接続を許可しようとしています。

私が試したこと:

ipset -A ホワイトリスト 81.212.0.0/14

私が期待したもの:

これにより、81.212.0.0 - 81.215.255.255の間の接続が許可されます。 PS:他のすべてのルールは正常に機能します。

問題は、81.212.0.0/14が65535よりもIPが多いことです。たぶんわかるかもしれませんね。

ベストアンサー1

問題は、81.212.0.0/14が65535よりもIPが多いことです。たぶんわかるかもしれませんね。

あなたはおそらくここにいるでしょう。タイプのIPsetを使用している場合、hash保存できる要素の最大数はmaxelemパラメータで設定できます。 IPsetを作成するときのデフォルト値はmaxelem65536です。ハッシュタイプを使用している場合は、bitmap地図の最大サイズである65536の住所があります。

しかし、IPsetをどのような用途に使用していますか?単純に/ 14セグメント全体を一致させると、ハッシュベースのIPsetは単純なネットワークアドレスとマスクベースの一致よりも効率がはるかに低下します。

ただし、初期セットを設定し、後で特定のIPアドレスを選択的に削除したい場合は、IPsetを使用することをお勧めします。

それにもかかわらず、段階的に廃止されると予想されるIPの数が比較的少ない場合は、今やっていることの意味を覆し、マスクベースのマッチングを一般的なルールとして使用し、IPセットベースのマッチングを基本的なルールとして使用することが賢明かもしれません。 。例外。

それは次のとおりです。

iptables -N maybeAllow81_212
iptables -A maybeAllow81_212 -m set --match-set denyiplist_81_212 src -j DROP
iptables -A maybeAllow81_212 -j ACCEPT

iptables -A INPUT -s 81.212.0.0/14 -j maybeAllow81_212

このようにして、81.212.0.0/14内で発生しないすべてのトラフィックは、デフォルトのINPUTチェーンで処理できます。デフォルトでは、32ビットANDと32ビット比較の2つのアセンブリコマンドのみが必要です。これより早く行くことはできません。

そのセグメント内のすべてのトラフィックは、maybeAllow81_212ハッシュマッチングを実行するサブチェーンに切り替わり(反転したはるかに小さいセットを使用してマッチングするように)、誰もが許可するようにします。いいえ1つのグループをマッチングして通過します。

おすすめ記事