リバースマスク

IPアドレスの既存のマスクは、IP時代の夜明けのアドレスのクラス分割から生まれました。

クラスA:ネットワーク番号の場合は8ビット、ホスト番号の場合は24ビット

クラスB:ネットワークごとに16ビット、ホストごとに16ビット

クラスC:ネットワークごとに24ビット、ホストごとに8ビット


同様の方法でアドレスを分割するのが無駄になったとき、フィールドの先頭から連続したゼロの後に連続したユニットの32ビット(IPアドレスは同じビット数で構成される)フィールドであるマスクが現れました。 ユニットは、ネットワーク番号を形成するIPアドレスのこれらのビットを定義し、ホスト番号を形成するアドレスのこれらのビットをゼロにします。

  IPアドレス、10進数:10. 10. 0. 1
 IPアドレス、バイナリ:00001010.00001010.00000000.00000001
マスク、バイナリ:11111111.11111111.1111110110000000
マスク、10進数:255.2525.2525 


この方法でのマスクの表現は、ビットマスクという用語と非常に一貫しています。 ユニットとゼロは、元の番号の特定のビットに対するアクションを決定しますが、IPアドレスの形式とはうまく対応しません。ネットワーク番号は常に先頭のビットで、ホスト番号は最後のビットで決定されます。 したがって、マスクを32ビットフィールドとして表すことは冗長です。 マスクを一意に決定するために、0から32までのIPアドレスの先頭から行のユニット数のみを決定できます-通常、IPアドレスの後に小数で書き込まれるプレフィックス指定:上記の例では10.10.0.1/22-22ビットのネットワーク番号と32-22 = 10ビットホスト番号。 IPv6アドレスについて話す場合、プレフィックスマスク/アドレスレコードのみがそこで定義されます-2001:d8:a15e :: 1/48



ここで、ユニットがホスト番号を形成するIPアドレスのビットを決定し、ネットワーク番号を形成するビットをゼロで決定するようにマスクを想像してください。その結果、逆マスクが得られます。

  IPアドレス、10進数:10. 10. 0. 1/22
 IPアドレス、バイナリ:00001010.00001010.00000000.00000001
マスク、バイナリ:11111111.11111111.1111110110000000
逆マスク、バイナリ:00000000.00000000.00000011.11111111
マスク、10進数:255.2525.2525
逆マスク、10進数:0. 0. 3. 255 


これは、ネットワーク計算機が実行できることです。ここでは、バイナリ算術ではなく、算術ではなく、数値システム間で数値を変換する基本的な操作です。



直線からインバースマスクを取得し、ビットフィールドを反転することで逆のアクションを実行します-0を1に、1を0に置き換えます。10進表現を使用する場合、インバースマスクの取得は次のように計算されます。 :

  255.255.255.255
 -255.255.252。  0
 = 0. 0. 3.255 


逆から直接への変換は、対応する逆マスクのオクテット値を255から減算することによっても実行されます。

  255.255.255.255
 -0. 0. 3.255
 = 255.255.252。  0 


逆マスクという用語を使用して、ロシア語の一般的に受け入れられている名前である逆マスク(ワイルドカードマスク)を意図的に歪めました。これは、逆マスクが、IPアドレス内のネットワークとホストに番号を付けるための単なる別のビット指定よりもはるかに強力なメカニズムだからです。 連続したユニットまたはゼロを含めるためにリバースマスクは必要ありません。また、ユニットはIPアドレス内のホスト領域の単なる指定ではありません。 単位はIPアドレス内のビットの指定であり、条件をチェックすると変更される場合があり、ゼロは変更されていないビットを修正します。 つまり、ロシア語の「インバースマスク」という用語は、「インバースマスク」よりも「ワイルドカードマスク」と一致していますが、技術文書では同じ意味で両方が使用されています。



リバースマスクの範囲は、Ciscoデバイスだけでなく、CiscoのようなインターフェイスとイデオロギーのIPアドレスを使用した条件付き操作です。 これらの領域にはアクセスリスト(ACL)が含まれます-このネットワークからホスト条件だけでなく、ネットワークのはるかに柔軟なルールと定義を作成でき、ルーティングプロトコル(OSPFなど)を構成できます-非連続をアナウンスするためのコンパクトなルールを作成できますネットワーク。



ネットワーク192.168.0.0/24から任意の場所への奇数ホストからのアクセスを拒否する問題を解決します。 直接マスクしか使用できない場合は、このネットワークの奇数ごとにルールを作成する必要があります。 192.168.0.1から192.168.0.253まで。 IP 192.168.0.255はブロードキャストアドレスであり、処理する必要はありません。 以下を受け取ります(Cisco表記):

access-list 101 deny ip 192.168.0.1 255.255.255.255 any



(255.255.255.255はhostという単語に特別に置き換えることができます。それをしましょう)

 アクセスリスト101 deny ip host 192.168.0.1 any
アクセスリスト101 deny ip host 192.168.0.3 any
アクセスリスト101 deny ip host 192.168.0.5 any
アクセスリスト101 deny ip host 192.168.0.7 any
 ...
アクセスリスト101 deny ip host 192.168.0.93 any
 ...
アクセスリスト101 deny ip host 192.168.0.253 any
アクセスリスト101 permit ip any any 


合計:128行。



最終的に、禁止しなかったすべてのものへのアクセスを許可しました。 次に、このACLを目的のインターフェイス、Fa0 / 1に関連付ける必要があります。次に例を示します。

  int fa0 / 1
 ip access-group 101 in 


バイナリ表現の奇数は常にゼロビットの値が1であるというプロパティを使用して、結果のACLを削減してみましょう。

  192.168.0.0 = 11000000.10101000.00000000.0000000 | 0-偶数。
 192.168.0.1 = 11000000.10101000.00000000.0000000 | 1-偶数ではありません。
 192.168.0.2 = 11000000.10101000.00000000.0000001 | 0-偶数
 192.168.0.3 = 11000000.10101000.00000000.0000001 | 1-偶数ではない
 192.168.0.4 = 11000000.10101000.00000000.0000010 | 0-偶数
 192.168.0.5 = 11000000.10101000.00000000.0000010 | 1-偶数ではない
 192.168.0.6 = 11000000.10101000.00000000.0000011 | 0-偶数
 192.168.0.93 = 11000000.10101000.00000000.0101110 | 1-偶数ではない 


インバースマスクを使用します。1-変更できるビット、0では変更できないことを思い出してください。 逆マスクのMask / 24 = 255.255.255.0は0.0.0.255または00000000.00000000.00000000.11111111です。 つまり、最後のオクテットはすべてのビットで変更できますが、0ビットは変更しないでおく必要があることがわかっているため、インバースマスクを00000000.00000000.00000000.11111110または0.0.0.254のように変更します。 このエントリを直接マスクに変換すると、インバースマスクのルールに従って255.255.255.1が得られますが、これはマスクの無効なエントリであり、ネットワーク計算機はこれに対処できません(または表示されません)。



したがって、ネットワーク192.168.0.0/24の最後のオクテットには常に1、ゼロビット、つまり、0.0.0.254のリバースマスクを持つ192.168.0.1が必要です。

 ネットワーク192.168.0.1、バイナリ:11000000.10101000.00000000.00000001
インバースマスク0.0.0.254、バイナリ:00000000.00000000.00000000.11111110 


インバースマスクの単位はアドレスの可変ビットです-これらは1から7までの最後のオクテットのビットであり、ゼロビットは常に1に等しく、1から255までの任意の奇数を作成できます。



ここで、ACLを記述します。 IP値192.168.0.255には特別な意味があり、最初の行で許可します。それ以外の場合も禁止されます。

 アクセスリスト101許可IPホスト192.168.0.255任意
アクセスリスト101 deny ip 192.168.0.1 0.0.0.254 any
アクセスリスト101 permit ip any any 


合計:128行ではなく3行、「Wow!」と言うことができます。



タスクを複雑にするために、192.168.0.0 / 16サブネットの最後から2番目のオクテットは奇数でなければなりません。 つまり、ネットワーク192.168.1.0/24、192.168.3.0/24などの場合 アクセスを閉じる必要があります。 インバースマスクを変更します。最後のオクテットである/ 16 = 0.0.255.255のインバースマスクは、最初の例と同様に254になるため、0.0.254.255になります。 また、ネットワークには、0.0.254.255のリバースマスクと192.168.1.0のオクテットという奇妙な前提条件が必要です。

 ネットワーク192.168.1.0、バイナリ:11000000.10101000.00000001.00000000
インバースマスク0.0.254.255、バイナリ:00000000.00000000.11111110.11111111 


そして、特別な意味を持つIP 192.168.255.255を事前に解決するACL:

  access-list 101 permit ip host 192.168.255.255 any
 access-list 101 deny ip 192.168.1.0 0.0.254.255 any
アクセスリスト101 permit ip any any 


そして、奇数のサブネットでは最後から2番目のオクテット192.168.0.0/16でホストを1から63まで禁止する必要があります(最後のオクテットの数字)。上記の例で奇数から2番目のオクテットを禁止する問題を解決しました。バイナリ表現の63は111111であるため、00000001から00111111までの数字を選択する必要があります。前のリターンマスク0.0.254.255は最後のオクテットのすべての数字を選択しました。つまり、8ビットすべてを変更できます。 0から63までの数字、エントリ00111111がある最後のオクテットの合計 全体マスク0.0.254.63。

 ネットワーク192.168.1.0、バイナリ:11000000.10101000.00000001.00000000
インバースマスク0.0.254.63、バイナリ:00000000.00000000.11111110.00111111 


ホスト値は0です。奇数の最後から2番目のオクテットについては、タスクの条件によって禁止されるべきではないため、個別のACLルールを許可します。 この場合、最後のオクテットのインバースマスクは1つの数値を厳密に設定する必要があります。つまり、どのビットも変更すべきではないため、インバースマスクのこのオクテットは0になります。

 ネットワーク192.168.1.0、バイナリ:11000000.10101000.00000001.00000000
逆マスク0.0.254.0、バイナリ:00000000.00000000.11111110.00000000 


そして、ACL、最後のオクテットに255の値を持つルールを許可します。 この値は禁止規則に該当しません。

  access-list 101 permit ip 192.168.1.0 0.0.254.0 any
 access-list 101 deny ip 192.168.1.0 0.0.254.255 any
アクセスリスト101 permit ip any any 


素材を統合する方法として、インバースマスクのみを使用して最後のACLを作成しようとすることができます(つまり、0と1が厳密に連続して、記録の最初と最後に行く場合)、行数の利点を計算します。



可能性のある質問は、偶数ネットワークを禁止する必要がある場合にどうするかです。偶数では、0を設定するのではなく、ゼロビットはそれぞれ常に0です。最初の例では、すべて同じですが、ホストでも:

 ネットワーク192.168.0.0、バイナリ:11000000.10101000.00000000.00000000
インバースマスク0.0.0.254、バイナリ:00000000.00000000.00000000.11111110 


IP 192.168.0.255は禁止に該当しないため、ACLは短くなります。

 アクセスリスト101 deny ip 192.168.0.1 0.0.0.254 any
アクセスリスト101 permit ip any any 


このメカニズムが実際にどのくらいの頻度で適用されるかについて、多くの議論がありました。 業界での4年間の作業で1回しか使用しませんでしたが、今回は標準マスク(または標準マスクの反転)が1つに使用された場合、ACLを数千のエントリから減らすことができました。



この投稿はhabrahabr.ru/blogs/sysadm/129664から着想を得たもので、インスピレーションをくれた著者のおかげで、説明したトピックの開示を自分自身で見つけることができませんでした。 ciscoのWebサイトで、CiscoルーターのACLとマスクについて読むことができます(英語): www.cisco.com/en/US/products/sw/secursw/ps1018/products_tech_note09186a00800a5b9a.shtml



All Articles