【コピペで使える】プレフィクス表記のIP帯域情報から長整数型のネットワークアドレスとブロードキャストアドレスを得るサンプルコード

今回はプレフィクス表記のIP帯域情報から長整数型のネットワークアドレス(先端)とブロードキャストアドレス(終端)の数値を得るPHPスクリプトについて紹介します。

アクセスしてきたIPアドレスがその帯域に含まれるかどうかを調べる際、そのままの形式では大小比較ができないためプレフィクス表記から一度長整数型のネットワークアドレス(先端)とブロードキャストアドレス(終端)を取得すデータベース化しておくことを想定したスクリプトとなります。
 


<?php
// IP帯域(プレフィクス表記)
$ipv4 = "153.177.38.0/23";

// ip部・Prefix部分割
list($ip, $prefix) = explode('/', $ipv4);

// Prefix部からサブネットマスク(2進数)生成
$str = "";
$j=0;
for($i=1; $i<=32; $i++){
  $j++;
  if($j <= $prefix){
    $str .= "1";
  } else {
    $str .= "0";
  }
}
$address = array();
$address = stringSplitArray($str, 0, 8);
$address1 = bindec($address[0]);
$address2 = bindec($address[1]);
$address3 = bindec($address[2]);
$address4 = bindec($address[3]);
$netmask = $address1.".".$address2.".".$address3.".".$address4;

// networkアドレスとbroadcastアドレス算出
$network2 = ip2long($ip) & ip2long($netmask);
$broadcast2 = ip2long($ip) | (ip2long($netmask) ^ ip2long('255.255.255.255'));
$network1 = long2ip($network2);
$broadcast1 = long2ip($broadcast2);

echo "networkアドレス:".$network1." broadcastアドレス:".$broadcast1;
exit;

}

function stringSplitArray($str, $position, $number, $encode = "utf-8")
{
    $results = array();
    do
    {
        $cut_str = mb_substr($str, $position, $number, $encode);
        if($cut_str != '')
        {
            $results[] = $cut_str;
        }

        $position += $number;
    } while($cut_str != '');
    return $results;
}
?>

上記スクリプトもネット情報を調べつつアレンジしたものですので、コードはもしかするともっとシンプルにできるかもしれません。

あまり使う機会のないスクリプトからしれませんがお役に立てば幸いです。
 

投稿者プロフィール

たーさん代表者
東海大学工学部を卒業後、東芝情報システム株式会社(旧グループ会社含む)に入社。半導体(SRAM)の開発チームにて、Unix環境でのPerlを用いた業務自動化プログラムの開発など、エンジニアとしての確かな基礎と緻密な論理的思考力を培う。

その後、東証上場企業である株式会社ザッパラスへ。Web・モバイルの最前線で、数多くのユーザーに愛されるコンテンツ制作業務に従事。ここで「ユーザー目線に立った魅力的なWebコンテンツの企画・制作ノウハウ」を深く学ぶ。

開発・システム側から見た「堅牢なロジック」と、制作・ユーザー側から見た「伝わるコンテンツ」の双方を実務で経験した強みを活かし、フリーランスとして独立。

現在は、ウイングアーク1st株式会社の「データのじかん」運営チームに参画するなど、大手・中小企業のWeb運営・開発パートナーとして活動。完全在宅でありながら、固定IPの完備や厳格なセキュリティポリシーの遵守を徹底し、企業のインフラや本番環境を安全に支える「チームの一員」として高い信頼を得ています。

見た目の美しさはもちろんのこと、内部の構造やWordPressのカスタマイズ、運用・セキュリティまでを見据えた、技術的バックボーンのある高品質なWebサイト・システム制作をワンストップでご提供しています。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA