
この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を作成するときのデフォルト値はmaxelem
65536です。ハッシュタイプを使用している場合は、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つのグループをマッチングして通過します。
答え2
これは、コレクションが最大/ 16ネットワークのみを許可するallowiplist
タイプ(サブタイプの1つ)またはデフォルトの制限が65535要素(サブタイプの1つ)のタイプであるためです。bitmap:ip
hash:ip
コレクションの特定の種類を表示できます。
ipset -t list allowiplist
hash:net
/ 16以下のネットワークにアクセスするには、すべての種類のIPsetタイプを使用する必要があります。
ただし、これらのタイプはbitmap:ipまたはhash:ipタイプhash:net
などの実際の範囲を許可しません。81.212.5.13-81.212.7.4
maxelem型の制限を拡張できますが、hash:ip
これは有効な解決策ではありません。
だから本当に必要なら範囲iptables
/ 16ネットワークを超えて重なる部分の場合は、一意の一致タイプを使用することをお勧めします-m iprange
(すべての設定で可能な場合)。