web-dev-qa-db-ja.com

ipsetxからyまでのIP範囲を追加する方法

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

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

私が試したこと:

ipset -A allowiplist 81.212.0.0/14

私が期待したこと:

これにより、81.212.0.0〜81.215.255.255 P.S間の接続が可能になります。これを除いて、他のすべてのルールは正常に機能します。

問題は81.212.0.0/14のIP数が65535よりも多いことだと思います。おそらくidkです。

1
Sezer Toker

問題は81.212.0.0/14のIP数が65535よりも多いことだと思います。おそらくidkです。

あなたはここで正確に正しいかもしれません。タイプhashのIPsetを使用している場合、格納できる要素の最大数があり、IPsetの作成時にmaxelemパラメーターで設定できます...そしてmaxelemのデフォルト値は65536です。タイプのハッシュを使用する場合bitmap、65536アドレスはマップの最大サイズです。

しかし、IPsetを何に使用していますか?/14セグメント全体に対して単純に照合する場合、ハッシュベースのIPセットは、単純なネットワークアドレスとマスクベースの照合よりもはるかに効率が低くなります。

ただし、初期セットを設定し、後で特定のIPアドレスを選択的にノックアウトすることを計画している場合は、IPセットを使用するのが理にかなっています。

それでも、ノックアウトされた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内から来ていないトラフィックは、基本的に2つのアセンブラ命令(1つは32ビットAND、もう1つは32ビットの比較)を使用してメインのINPUTチェーンで処理できます。それよりもはるかに速くなることはできません。

そのセグメント内からのトラフィックはすべてmaybeAllow81_212サブチェーンに転送され、ハッシュ一致が行われ(反転された、できればはるかに小さいセットで一致するようになります!)、すべての人が合格するセットと一致しません

0
telcoM

これは、allowiplistセットがタイプbitmap:ip(そのサブタイプのいずれか)であり、最大で/ 16個のネットワークのみを許可するか、タイプhash:ip(ここでも)であることが原因である可能性があります。そのサブタイプのいずれか)。デフォルトの制限は65535要素です。

セットの正確なタイプを確認できます。

ipset -t list allowiplist

hash:net ipsetタイプ(のいずれか)を使用して、/ 16ネットワークより低くする必要があります。

ただし、hash:netタイプは、たとえば次のような真の範囲を受け入れません。 81.212.5.13-81.212.7.4ビットマップ:ipまたはハッシュ:ipタイプのように。

hash:ipタイプのmaxelem制限を拡張することはできますが、効率的な解決策にはなりません。

したがって、/ 16ネットワークを超えて重複するrangesが本当に必要な場合は、全体的なセットアップで可能であれば、iptables独自の-m iprangeマッチタイプを使用することをお勧めします。

0
LL3