Linuxでipcalcを使ってサブネットマスクを計算する方法

大規模なネットワークをサブネット化すると、セキュリティが強化され、パフォーマンスが向上し、ネットワークが論理的に整理されます。しかし、計算の一部は大変です。Linuxのipcalcコマンドは、計画段階を容易にします。

サブネット化とは何ですか?

サブネット化は、大規模なネットワークを、より小さく接続された部分に分割する方法です。各部分はサブネットと呼ばれます。営業チームが1つのサブネットを使用し、人事部が別のサブネットを使用し、カスタマーサポートがさらに別のサブネットを使用するなど、ネットワークを整理することができます。

これには大きなメリットがあります。最初のメリットは、セキュリティと制御に関係しています。サブネット化がなければ、すべてが1つの大きな「フラット」ネットワークになります。サブネット化を使用すると、どのサブネットが他のサブネットと通信できるかを決定できます。異なるサブネットは異なるIPアドレス範囲を持ち、異なるサブネットマスクを使用します。これについては後で説明します。

ルーターは、あるサブネットから別のサブネットにトラフィックが届くように設定する必要があります。また、ルーターは管理対象デバイスであるため、異なるサブネット間で許可されるトラフィックのタイプと相互作用を制御できます。

サブネット化は、許可されていないユーザーやマルウェアがネットワーク内を自由に移動するのを防ぐのにも役立ちます。あるいは、少なくともそれらを遅くします。潜水艦のようなものだと考えてください。ある区画に船体の破損がある場合、隔壁のドアを閉めて船の残りの部分が浸水しないようにすることができます。サブネットは、そのような隔壁のドアのようなものです。

多くの場合、大規模なネットワークをサブネット化する行為だけで、パフォーマンスが向上します。ネットワークが十分に大きく、十分にビジーであれば、そのパフォーマンスの向上は、各サブネット内のネットワークトラフィックの削減から得られます。ARPトラフィックの低下だけでも、物事がより応答性が高く見えるようになるかもしれません。

もちろん、ネットワークが区画化されると、ITスタッフがインフラストラクチャを理解、維持、サポートすることが容易になります。

IPアドレスとサブネットマスク

それはすべて素晴らしいことのように聞こえ、実際そうです。しかし、それは私たちがIPアドレス指定を非常に特定にする必要があることを意味します。IPアドレスの一部をネットワークIDに使用し、IPアドレスの一部をデバイスアドレスに使用​​する必要があります。サブネットでは、IPアドレスの一部をサブネットにも使用する必要があります。

IPv4 IPアドレスは、ピリオドで区切られた4つの3桁の数字を使用します。ドット10進表記と呼ばれます。これらの数字の範囲は0から255です。最初の2つの数字はネットワークIDです。3番目はサブネットIDを保持するために使用され、4番目の数字はデバイスアドレスを保持するために使用されます。それは単純なケースです。

数字はコンピューター内で2進値のシーケンスとして表されます。サブネット内のデバイスが非常に少なく、デバイスアドレス番号の範囲に未使用の上位ビットがある場合、これらの「予備」の2進ビットをサブネットIDに使用できます。

ルーターまたは他のネットワークデバイスは、IPアドレスの構成をどのように認識するのでしょうか?サブネットIDが3番目の数字に完全に含まれているのか、それとも4番目の数字の上位ビットの一部を侵害しているのかを示すものは何でしょうか?その答えはサブネットマスクです。

サブネットマスクはIPアドレスのように見えます。4つの3桁の数字であり、数字の範囲は0から255です。しかし、それらは本当に2進形式で考える必要があります。

サブネットマスクで1であるすべての2進ビットは、IPアドレスの対応するビットがネットワークIDまたはサブネットIDを参照することを意味します。サブネットマスクで0であるものはすべて、IPアドレスの対応するビットがデバイスアドレスを参照することを意味します。

一般的なIPアドレスを取り上げて、サブネットマスクを適用してみましょう。サブネットマスクは、最初の3つの数字がそれぞれ255で、4番目の数字が0です。

  • IPアドレス: 192.168.1.0
  • サブネットマスク: 255.255.255.0 = 11111111.11111111.11111111.00000000

2進数では255は11111111です。サブネットマスクビットが1に設定されている場合、IPアドレスの対応するビットはネットワークIDとサブネットIDを参照します。サブネットマスクの255は、IPアドレスの対応する番号のすべてのビットがネットワークIDまたはサブネットIDを参照することを意味します。

4番目の数字はゼロなので、ビットは1に設定されていません。そのため、その数字はネットワークデバイスアドレスを参照します。したがって、255.255.255.0のサブネットマスクは、IPアドレスの最初の3つの数字がネットワークIDとサブネットIDを持ち、最後の数字はネットワークデバイスアドレス用に予約されていることを意味します。

つまり、これらすべての副作用は、サブネットマスクがIPアドレス内のどのビットを個々のデバイスの識別に使用できるかを決定するということも意味します。言い換えれば、サブネットマスクは、IPアドレス内のどのビットがサブネットを識別し、そのサブネットがどのくらいの数のデバイスを保持できるかを決定します。

サブネットマスクを変更すると、ネットワークに大きな影響を与えます。それが私たちがそれを正しくする必要がある理由です。

ipcalcコマンド

ipcalcを使用すると、ネットワークを正しくサブネット化するためにサブネットマスクとIPアドレスをどのように設定する必要があるかを簡単に理解できます。ipcalcはFedora 36にすでにインストールされていました。Ubuntu 22.04とManjaro 21にインストールする必要がありました。

Ubuntuのコマンドは次のとおりです。

sudo apt install ipcalc

Manjaroにipcalcをインストールするには、次を使用します。

sudo pacman -Sy ipcalc

最低限、ipcalcにIPアドレスを渡す必要があります。それがすべてである場合、ipcalcはサブネットマスクを255.255.255.0と想定します。ネットワークとIPアドレスに関する情報を提供します。

ipcalc 192.168.1.0

出力にはドット10進値とその2進値が含まれています。これは、各情報ビットの意味です。

  • アドレス: 192.168.1.0。私たちが提供したIPアドレスです。
  • ネットマスク: 255.255.255.0 = 24。サブネットマスク。コマンドラインでサブネットマスクが提供されなかった場合、255.255.255.0が使用されます。24は、サブネットマスクで24ビットが1に設定されていたことを意味します。これらは、ネットワークIDとサブネットIDに使用されます。これらは左から数えます。1に設定されたビットは、連続した1のシーケンスになります。その中には0ビットは存在しません。2進数で1に設定された8ビットは10進数で255になるとわかっています。そのため、24は、すべて1に設定された8ビットの3つのセットを意味します。ドット10進表記では、255.255.255になります。残りのビットは0になり、255.255.255.0になります。したがって、1に設定されたビットをカウントし、それを24のような10進数として提示することで、サブネットマスク全体を伝えることができます。これは、クラスレスドメイン間ルーティング表記と呼ばれます。
  • ワイルドカード: 0.0.0.255。これは、許可リスト/ブロックリスト設定の一部として、Ciscoネットワークデバイスで使用されます。
  • ネットワーク: 192.168.1.0/24。これは、CIDR表記で記述されたネットワークIPアドレスとサブネットです。このサブネットにルーターが接続されている場合、多くの場合、許可される範囲内で最も低いIPアドレスが割り当てられます。
  • HostMin: 192.168.1.1。このサブネットに接続されたデバイスが持つことができる最も低いIPアドレス。
  • HostMax: 192.168.1.254。このサブネットに接続されたデバイスが持つことができる最も高いIPアドレス。
  • ブロードキャスト: 192.168.1.255。これはブロードキャストアドレスです。このIPアドレスに送信されたネットワークパケットは、サブネット内のすべてのデバイスにエコーされます。
  • Hosts/Net: 254。このサブネットに接続できるデバイスの最大数。この例では、デバイスのIPアドレス範囲は0から255であるため、256の異なるIPアドレス(0から255)を識別できます。しかし、ネットワークIPアドレス(「.0」アドレス)で1つのIPアドレスを失い、ブロードキャストIPアドレス(「.255」アドレス)で1つを失います。
  • クラスC、プライベートインターネット: ネットワークのクラス。

ネットワークのクラスは、ネットワークIDとサブネットIDに使用されるビット数と、ネットワークのクラスを格納するために使用されるビット数(先行ビットと呼ばれる)によって示されます。

  • クラスA: 先行ビット0。IPアドレスは0で始まります。デフォルトのサブネット: 255.0.0.0。CIDR表記は/8です。
  • クラスB: 先行ビット10。IPアドレスは128で始まります。デフォルトのサブネット: 255.255.0.0。CIDR表記は/16です。
  • クラスC: 先行ビット110。IPアドレスは192で始まります。デフォルトのサブネット: 255.255.255.0。CIDR表記は/24です。
  • クラスD: 先行ビット1110。IPアドレスは224で始まります。デフォルトのサブネット: 未定義。CIDR表記は/4です。

サブネットマスクの変更

ipcalcコマンドでは設定を変更できないため、何も影響を与えないことを恐れることなく、何でも試すことができます。サブネットマスクを変更するとネットワークにどのような影響があるかを見てみましょう。

CIDR表記またはドット10進表記のいずれかを使用できます。CIDRでは、スペースはオプションです。これらのコマンドはすべて同等です。

ipcalc 192.168.1.0/16

ipcalc 192.168.1.0 /16

ipcalc 192.168.1.0 255.255.0.0

これにより、そのネットワークに接続できるデバイスの数が大幅に増加します。このネットワークのネットワークデバイスのアドレス指定は192.168.0.0で始まり、192.168.255.254で終わります。

以前と同様に、ネットワークアドレスとブロードキャストアドレスのアドレスを1つ失います。しかし、それでも65,534のデバイスが使用できます。

しかし、それらはすべて1つのサブネットに含まれます。

サブネットを使用したipcalcの使用

ネットワークに3つのサブネットを追加し、それぞれ20、15、80のホストを収容できるようにするとします。-s(分割)オプションを使用し、目的のサブネットサイズを指定します。

ipcalc 192.168.1.0 -s 20 15 80

最初のセクションは、以前に見たものと同じで、ipcalcがコマンドラインで提供するIPアドレスを含むネットワークの分析を提供しています。私たちのサブネットは、次の3つのセクションで説明されています。

要約すると、提供された情報は次のとおりです。

最初のサブネット:

  • サブネットマスク: 255.255.255.224
  • 最初のデバイスアドレス: 192.168.0.129
  • 最後のデバイスアドレス: 192.168.0.158
  • サブネット容量: 30デバイス

2番目のサブネット:

  • サブネットマスク: 255.255.255.224
  • 最初のデバイスアドレス: 192.168.0.161
  • 最後のデバイスアドレス: 192.168.0.190
  • サブネット容量: 30デバイス

3番目のサブネット:

  • サブネットマスク: 255.255.255.128
  • 最初のデバイスアドレス: 192.168.0.1
  • 最後のデバイスアドレス: 192.168.0.126
  • サブネット容量: 126デバイス

2進値の緑色のエントリに注目してください。これらはサブネット用に予約されているビットです。

また、1番目と2番目のサブネットが同じサブネットマスク27を持っているため、ハードウェアフィールドの3ビットがサブネットインジケーターに使用されていることに注意してください。1番目のサブネットではビットは100で、2番目のサブネットでは101です。この違いにより、ルーターはネットワークトラフィックを正しくルーティングできます。

すぐにエスカレートする可能性があります

より大規模で複雑なネットワークでは、間違いが入り込むのは非常に簡単であることが明らかです。ipcalcを使用すると、値が正しいことを確認できます。ネットワークを構成する必要がありますが、少なくとも使用している値が正しいことを知ることができます。