IPサブネット計算機 - IPv4・IPv6 CIDR計算機 オンライン
IPv4・IPv6のサブネットマスク、ネットワークアドレス、ブロードキャストアドレス、IPレンジを計算。無料オンラインCIDR計算機 — 100%クライアントサイド。
計算結果
よくある質問
IPサブネット計算機とは何ですか?
IPサブネット計算機は、IPアドレスとサブネットマスク(またはCIDRプレフィックス長)を入力すると、詳細なネットワーク情報を計算するツールです。ネットワークアドレス、ブロードキャストアドレス、使用可能なホスト範囲、総アドレス数、ワイルドカードマスク、IPクラスを計算します。IPv4(32ビット)とIPv6(128ビット)の両方に対応しています。
このIPサブネット計算機の使い方は?
ネットワークプロトコルに応じてIPv4またはIPv6タブを選択します。IPアドレスを入力します(IPv4: 192.168.1.100、IPv6: 2001:db8::1)。CIDRプレフィックス長を入力します(IPv4: 24、IPv6: 64)。結果は即座に計算され、ネットワークアドレス、ブロードキャストアドレス、使用可能なホスト範囲などが表示されます。各結果の横にあるコピーボタンでクリップボードにコピーできます。
データは安全ですか?サーバーに送信されますか?
完全に安全です。このIPサブネット計算機は100%ブラウザ内でクライアントサイドJavaScriptで実行されます。IPアドレスや計算結果がサーバーに送信されることは一切ありません。すべての計算はJavaScriptのビット演算(IPv4)とBigInt(IPv6)を使用してローカルで実行されます。本番ネットワークのサブネット計算も安心して行えます。
CIDR表記とは何ですか?サブネットマスクとの関係は?
CIDR(Classless Inter-Domain Routing)表記は、IPアドレスとネットワークプレフィックスを簡潔に表現する方法です。IP/プレフィックスの形式で記述します(例:192.168.1.0/24)。プレフィックス番号は、アドレスの何ビットがネットワーク部分を定義するかを示します。IPv4では/24プレフィックスはサブネットマスク255.255.255.0に対応します。CIDRは従来のクラスフルアドレス体系に代わり、より柔軟で効率的なIPアドレス空間の割り当てを可能にしました。
IPv4とIPv6のサブネット分割の違いは?
IPv4は32ビットアドレス(例:192.168.1.1)を使用し、/0から/32のプレフィックス長で約43億のアドレスをサポートします。IPv6は128ビットアドレス(例:2001:db8::1)を使用し、/0から/128のプレフィックス長で約3.4×10^38のアドレスをサポートします。IPv4サブネットではネットワークアドレスとブロードキャストアドレスにより使用可能なホストが2つ減りますが、IPv6はブロードキャストを使用しません(マルチキャストを使用)。標準的なIPv6サブネットサイズは/64で、サブネットあたり2^64のアドレスを提供します。
ワイルドカードマスクとは何ですか?
ワイルドカードマスクはサブネットマスクのビット反転です。例えば、サブネットマスクが255.255.255.0の場合、ワイルドカードマスクは0.0.0.255です。主にCisco IOSルーターのACL(アクセス制御リスト)やOSPFルーティングプロトコルの設定で使用されます。ワイルドカードマスクの0ビットは「一致必須」、1ビットは「任意」を意味します。
プライベートIPアドレスとは何ですか?
プライベートIPアドレスはRFC 1918で定義された予約範囲で、パブリックインターネットでルーティングされません。ローカルネットワーク(家庭、オフィス、データセンター)で使用されます。3つのプライベートIPv4範囲は:10.0.0.0/8(クラスA、1670万)、172.16.0.0/12(クラスB、100万)、192.168.0.0/16(クラスC、65,536)です。このツールは入力されたIPv4アドレスがプライベートかパブリックかを自動的に検出して表示します。
コード例
// IP Subnet Calculator in JavaScript
function ipv4ToInt(ip) {
const parts = ip.split('.').map(Number);
return ((parts[0] << 24) | (parts[1] << 16) | (parts[2] << 8) | parts[3]) >>> 0;
}
function intToIpv4(num) {
return [
(num >>> 24) & 0xFF,
(num >>> 16) & 0xFF,
(num >>> 8) & 0xFF,
num & 0xFF,
].join('.');
}
function calculateSubnet(ip, cidr) {
const ipInt = ipv4ToInt(ip);
const mask = cidr === 0 ? 0 : (~0 << (32 - cidr)) >>> 0;
const wildcard = (~mask) >>> 0;
const network = (ipInt & mask) >>> 0;
const broadcast = (network | wildcard) >>> 0;
const totalAddresses = Math.pow(2, 32 - cidr);
const usableHosts = cidr >= 31 ? (cidr === 32 ? 1 : 2) : totalAddresses - 2;
return {
networkAddress: intToIpv4(network),
broadcastAddress: intToIpv4(broadcast),
subnetMask: intToIpv4(mask),
wildcardMask: intToIpv4(wildcard),
firstUsable: intToIpv4(cidr >= 31 ? network : network + 1),
lastUsable: intToIpv4(cidr >= 31 ? broadcast : broadcast - 1),
totalAddresses,
usableHosts,
};
}
// Example
const result = calculateSubnet('192.168.1.100', 24);
console.log('Network:', result.networkAddress); // 192.168.1.0
console.log('Broadcast:', result.broadcastAddress); // 192.168.1.255
console.log('Mask:', result.subnetMask); // 255.255.255.0
console.log('Hosts:', result.usableHosts); // 254