• ベストアンサー

サブネットマスクを用いたIP制限をしたい

TaRSuの回答

  • TaRSu
  • ベストアンサー率66% (40/60)
回答No.1

IPアドレス(IPv4)は4つの数字で書かれますが、内部的には32ケタの二進数です。 そのままでは見にくいので、人間にも分かりやすいように8bitずつの四つに区切り、それぞれを10進法表記したのが210.161.126.144の形式です。 だから各項の最大が255 ( 2の8乗ひく1 ) なんですね。 210.161.126.144 および210.161.126.159を二進数で表すと、 11010010 10100001 1111110 10010000 11010010 10100001 1111110 10011111 となり、はじめの28ケタが共通しているのが分かると思います。 この共通部分の長さをプレフィックス長といいます。 この範囲内にアドレスが含まれるとき、そのアドレスは 11010010 10100001 1111110 1001XXXX という形式をしているはずです。 これに当てはまるかどうか知りたければ、下の4ケタをゼロにしてから 11010010 10100001 1111110 10010000 と同じか判定すればいいですね。 それをするための判定式がサブネットマスクです。 サブネットマスクは、プレフィックス長とおなじ長さだけ1が続き、残りが0の32ケタのビットパターンです。 たとえば今回の例で言えば、初めの28ケタが1で残りがゼロの数字ですから、 11111111 11111111 11111111 11110000 という感じになります。 で、これと元のIPとの「ビットごとのand」を取れば、元のIPの上28ケタはそのままで下4ケタはゼロになります。 「ビットごとのand」というのは、 1 & 1 = 1 1 & 0 = 0 0 & 1 = 0 0 & 0 = 0 で定められる計算を各ケタにやっているだけです。 http://www.net-newbie.com/tcpip/terms.html こちらの「ビットごとのAND」の項目などをご参照のこと。 なお、サブネットマスクの1が続く長さをプレフィックス長というのが元々なので、ちょっと説明が変ですがご容赦を。 またPHPでプレフィックス長を含んだIPアドレスの文字列を扱いやすい形に変換する関数が準備されているかどうかは存じません。自作の必要があるかも知れません。

karace
質問者

お礼

大変わかりやすく、非常に参考になりました! No.1さんの解説を読んだ後にNo.4さんのサンプルコードを見ましたがロジックの理解が得られました。

関連するQ&A

  • サブネットマスクについて質問

    サブネットマスクについて質問 以下のIPアドレスを2つに分けたいですがあっていますか? 10.0.3.0/24 2つにわける。 10.0.3.0/25 10.0.3.128/25 つまり、この範囲に分ける 10.0.3.1-10.0.3.126 10.0.3.129-10.0.3.254 以上

  • IPアドレスのサブネットマスクの設定について教えてください。

    サブネットマスクの設定について教えてください。 【ネットワーク情報】 ・自分のホストがいるネットワーク(A)  10.4.0.0 255.255.0.0 (10.4.0.0/16) ・L3スイッチ  ネットワーク(A)は、VLAN40に属しています。  VLAN40 は、10.4.0.0/16 がIPアドレスの範囲です。  特にVLAN40 内ではアクセスコントロールはしていません。 上記ネットワーク上に、サーバーを立てました。 IPアドレスは、 10.4.255.30 で、MACアドレスにてDHCPサーバの予約で IPを配布しています。 念のため、サーバーにも手動でIPアドレスを振ろうと思っているのですが、 この場合のサブネットマスクは 255.255.255.0 で良いのでしょうか? それとも 255.255.0.0 にした方がよいのでしょうか? 255.255.255.0でサブネットマスクを設定しても、255.255.0.0 からアクセス出来る ような気がするのですが、どうなのでしょうか。 ご教授くださいますようお願い致します。

  • サブネットマスク 255.255.255.1 ?

    本社に出張したとき、出張先の事務所のLANを利用して、自分のパワーブックのメールを処理しようとしました。 DHCPを使っていない部署だったので、IPアドレスを1つもらい、設定しようとしたのですが、サブネットマスクが、255.255.255.1 とのこと。 コンパネのTCP/IPでは、「サブネットマスクとして適切な値ではない」言われてて設定できませんでした。 その事務所の人間も、業者任せで、なぜ、255.255.255.1 なのか知らないそうです。 ちなみに、ウインドウズしか、LANに繋がっていません。 どうするべきでしょう? 1:サブネットマスクを255.255.255.0 に変えてもらう。 2:私のマックが調子悪い(PBG4 OS9.2.2) 3:あきらめる。 4:裏技を使う?

    • ベストアンサー
    • Mac
  • サブネットマスクで複数のIPを指定したい

    こんにちは,閲覧ありがとうございます。 1台のPCから接続を共有する小規模ネットワークで, IPアドレスごとに帯域制限を設けるため, NEGiESというソフトを使っています。 そのソフトのフィルタ設定なのですが, 複数のパソコンをIPアドレスとIPアドレスマスク (サブネットマスク)で指定することはできるのでしょうか。 これまでのソフトでは,192.168.0.1-5等と 直接指定していましたが,このソフトでは 1つのフィルタに1つのIPアドレスと, サブネットマスクとの組み合わせでの設定方法と なっているようで,私はマスクの使い方がよくわからず 質問させていただきました。 具体的なIPアドレスと制限幅は下記の通りです。 192.168.0.xのネットワーク上で, xが1,2は無制限 33から43まで30KB/s 44から64まで1KB/s 65から95まで30KB/s 96から128まで1KB/s 129から151まで30KB/s 152から254まで1KB/s これらをIPアドレスとサブネットマスクとの 適切な組み合わせで,できるだけ少ないフィルタを 生成したいのです。 IPアドレスの切り方が下手だったようにも思えます。 細切れでかえって手間がかかりますが,よろしく お願いいたします。

  • サブネットマスクが255.255.255.255になる

    こんにちは。 WindowsXPPro.でダイヤルアップ接続でリモート接続をしたいのですが、サブネットマスクが255.255.255.255となっているためサーバーにアクセスできません(IPCONFIGコマンドで確認)。そこでダイヤルアップ接続のプロパティでTCP/IPのサブネットマスクを設定する欄が表示されません。サブネットマスクを255.255.255.0にしてサーバーとのやり取りをしたいのですがどのようにすればよろしいでしょうか? ちなみにある人よりブリッジモードになっているのではないかということでしたがブリッジモードにはなっておりませんでした。よろしくお願いいたします。

  • サブネットマスクの拡張について

    いつもお世話になっております。 度々申しわけないですが教えてください。 現在使用している10.167.10.0/24で使用できるIPアドレスの数が足りなくなった場合、 サブネットマスクの拡張を行うことで使用可能なIPアドレスを増やすことができます。 サブネットマスクを24bitから22bitに変更すると、3オクテットの後ろから2bitを使うことになります。 その場合使用できるネットワークの数は以下の通りになると思います。 3オクテットの後ろから2bit借りるため 000000|00・・・ネットワーク1つ 000000|01・・・ネットワーク1つ 000000|10・・・ネットワーク1つ 000000|11・・・ネットワーク1つ 合計4つのネットワークを使用可能になります。 その場合、割り当てるIPアドレスは10.167.10.0/22(範囲:10.167.10.0~10.167.13.255) と考えていますが正しいでしょうか? ※2bit借りているのでそれを10進数であらわすと0,1,2,3となりますがこれをIPアドレスに割り当てるわけではないですよね? 例:10.167.0.0/22(範囲:10.167.0.0~10.167.3.255) 今回の場合は、あくまでもサブネットマスクは使用できるネットワーク数を求めるだけと認識しているのですが正しいでしょうか? 私の認識が正しければ下記のネットワークも作れると思っています。 例:10.167.0.0/24   10.167.1.0/24   10.167.2.0/22   10.167.6.0/23   10.167.8.0/24   10.167.9.0/24   10.167.10.0/24   10.167.11.0/24      10.167.8.0/24を拡張する場合は→10.167.8.0/23(範囲:10.167.8.0~10.167.9.255) 10.167.10.0/24を拡張する場合は→10.167.10.0/23(範囲:10.167.10.0~10.167.11.255)

  • IPアドレスとサブネットマスクについて

    すでに構築されているネットワークを任されることになってしまったのですが、 IPアドレスとサブネットマスクの関係について質問させて頂きます。 現在はパソコンが20台程度なのですが、今後増える予定があります。 実際にあるPCに割り振られているのが、192.168.1.32/26(255.255.255.192)です。 前任者がいなくなってしまったので、なぜサブネットが26なのかがわかりません。 どこかのHPで、クラスCのサブネット26だと、 第4オクテットが、 0~63 64~127 128~191 192~255 になるとの記載がありました。 これは、例えば192.168.1.32のパソコンから 192.168.1.64のパソコンへはアクセスできないという事なのでしょうか? そういう事だとすると、 サブネットが26だと、4つのグループに分けることが出来るということでしょうか? 例えば経理部・総務部・営業部・企画部など部署ごとに分けて、 サーバーなど4つのグループがアクセス可能にさせたい機器に関しては、 サブネット24(255.255.255.0)にするという事で理解してよいのでしょうか?

  • IPアドレスだけでサブネットマスクが無くても何故アクセスできる?

    例えばOKWave『http://okwave.jp』のIPアドレスは210.132.71.10ですが、何故IPアドレスだけでアクセスできるのか疑問を感じました。 理由はサブネットマスクが分からなければ、どこまでがネットワークアドレス部かわからないのに、どのようにルーティングされているかと思いました。どなたか、分かりやすくご教授お願い致します。

  • Perlを使ったアクセス制限方法

    CGIのページにアクセス制限を掛けたいと思い 検索エンジンを使い色々探しまして下記のアクセス制限方法を見つけました。 http://easycgi.xrea.jp/perltips/acclimit.htm を参照して CGIの最初(#!/usr/bin/perl の次の行)に下記スクリプトを埋め込みました。 sub check { @hosts = ('hoge.ne.jp','hoge.co.jp'); $host = gethostbyaddr(pack("C4", split(/\./, $ENV{'REMOTE_ADDR'})), 2) || $ENV{'REMOTE_ADDR'}; foreach $i (@hosts) { if ($host =~ /$i/) { print "アクセスが許可されていません。\n"; exit; } } } リモートホストでアクセス制限を行いたいのですが 上記の方法を試しても、hoge.ne.jpとhoge.co.jpからアクセス出来てしまいました。 htaccessを使わずにCGIページへアクセス制限を掛ける方法はないでしょうか? 何かアドバイス頂けると助かります。

  • サブネットマスクの意義がいまいち掴めません

    サブネットマスクの意義がいまいち掴めません。 192.168.1.0というネットワークを構成する際にあえて、 それぞれの端末のサブネットマスク値を以下のように異なる形にしました。 端末A:192.168.1.2/24 (サブネットマスク:255.255.255.0) ←通常はこっち 端末B:192.168.1.3/25 (サブネットマスク:255.255.255.128) このように192.168.1.0のネットワークを構成するにあたって異なるサブネットマスク値を設定すると 192.168.1.0というネットワーク上で通信的な問題が起きるのでしょうか? 端末Bのネットワーク部を25bitにすることで、ホスト部が7bitと減り このサブネットに所属できるホスト数は128台となりますよね? 「255.255.255.128のサブネットマスク値を持った端末は128台までしか所属できないサブネットワークにいますよ~」という意味ですよね? つまりそのサブネットマスク値とはそのサブネットに所属できるホスト台数を制限するというだけの意味だけなのでしょうか? 通信的な意味は無し?(別のサブネットワークの端末にはパケットを****しない等) ちょっと考えすぎかもしれませんがよろしくお願いします!