この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です。
問題は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
サブチェーンに転送され、ハッシュ一致が行われ(反転された、できればはるかに小さいセットで一致するようになります!)、すべての人が合格するセットと一致しません。
これは、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
マッチタイプを使用することをお勧めします。