Windows DHCPで新しいスコープを作成しようとした際に「The scope parameters are incorrect. Either the scope already exists or its subnet address and mask is inconsistent with the subnet address and mask of an existing scope」と表示される問題について、原因の見極めから安全な修復、検証、再発防止までをGUIとPowerShellの両面で解説します。
エラーの意味と起きる条件
エラー本文が示すのは、次のいずれかです。
- 同一サブネット(ネットワークID+サブネットマスク)のスコープが既に存在している。
- サブネットの整合性が取れない(マスクの違いにより、既存スコープと論理的に重なる)。
Windows DHCP サーバーは、同一サブネットに複数の IPv4 スコープを持てません。たとえば、既存に 10.0.0.0/23(= 10.0.0.0~10.0.1.255)があれば、10.0.1.0/24 の追加は「同一ネットワーク領域が重複」と判断され、今回のエラーになります。逆に、既存が 10.0.1.0/24 のときに 10.0.1.0/25 を足そうとしても同様に拒否されます。
また、無効化(Inactive)のスコープが残っているだけでも重複とみなされる点にも注意してください。
まず押さえるべき前提(よくある勘違い)
- 同一サブネット内で用途別にスコープを分ける設計は不可です。オプションや配布先の切り分けは「スコープポリシー」で行います。
- 排他範囲(Exclusion)はスコープ配布範囲を削るだけで、重複の許容にはなりません。
- フェールオーバー(DHCP Failover)構成では、片側で作成したスコープが相手にレプリケートされます。相手側で同じスコープを手動作成すると重複の原因になります。
- スーパースコープは「同一物理セグメントに複数サブネットを同居させる」ための器であり、同一サブネットを二重定義できる仕組みではありません。
事例シナリオ(10.0.1.0/24 の追加で失敗)
今回のケース(10.0.1.1–10.0.1.50 / サブネット 10.0.1.0/24)では、次のシナリオが典型です。
| シナリオ | 典型的な兆候 | 確認ポイント |
|---|---|---|
既存に 10.0.1.0/24 がある | GUIの「IPv4 > スコープ」に同名・近似名がある/状態が無効 | GUIの一覧、PowerShell Get-DhcpServerv4Scopeの結果 |
10.0.0.0/23 等の広いスコープが存在 | 一覧に直接の衝突スコープが見当たらない | 既存スコープのマスクを精査(/23 が /24 を包含) |
| フェールオーバー相手からのレプリケーション | 片側の作成直後、相手にも同スコープが現れる | Get-DhcpServerv4Failover で関係性を確認 |
| 古い検証用スコープが休眠状態で残存 | 状態:Inactive/アドレス範囲が一部重複 | 稼働履歴が古い、リースが残っていないか |
| スーパースコープ内部での重複 | スーパースコープ配下に同一ネットワークIDが2つ | Get-DhcpServerv4Superscope で構成を確認 |
安全第一の調査フロー(GUI/CLI併記)
バックアップの取得(必須)
操作前に必ずエクスポートして、万一に備えます。
# PowerShell 推奨(役割・オプション・リースまで含めやすい)
Export-DhcpServer -ComputerName <DHCPサーバ名> `
-Leases -File "\\ファイルサーバ\バックアップ\dhcp_export.xml" `
-Force
# 互換性重視(netsh)
netsh dhcp server export \ファイルサーバ\バックアップ\dhcp.bak all
既存スコープの全件確認
まずは全貌を把握します。
# 一覧とマスクを可視化
Get-DhcpServerv4Scope -ComputerName <DHCPサーバ名> |
Select-Object ScopeId, SubnetMask, StartRange, EndRange, State |
Sort-Object ScopeId |
Format-Table -Auto
rem netsh でも可
netsh dhcp server show scope
netsh dhcp server dump > C:\dhcp_dump.txt
C:\dhcp_dump.txt を開き、subnet 10.0.1.0 や 255.255. をキーワードに重複や近い設定が無いか検索します。
重複(論理包含)の自動検出スクリプト
スコープ同士が論理的に重なるかを簡易チェックする PowerShell 例です。/23 と /24 のような包含関係も発見できます。
$scopes = Get-DhcpServerv4Scope -ComputerName <DHCPサーバ名> |
Select-Object ScopeId, SubnetMask, StartRange, EndRange
function ConvertTo-UInt32IP {
param([string]$ip)
$bytes = [System.Net.IPAddress]::Parse($ip).GetAddressBytes()
[Array]::Reverse($bytes)
[BitConverter]::ToUInt32($bytes,0)
}
function Get-NetworkID {
param([string]$ip,[string]$mask)
$ip32 = ConvertTo-UInt32IP $ip
$mask32 = ConvertTo-UInt32IP $mask
[System.BitConverter]::ToString([BitConverter]::GetBytes($ip32 -band $mask32))
}
# 重複マトリクス
for($i=0;$i -lt $scopes.Count;$i++){
for($j=$i+1;$j -lt $scopes.Count;$j++){
$a = $scopes[$i]; $b = $scopes[$j]
$aNet = Get-NetworkID $a.ScopeId $a.SubnetMask
$bNet = Get-NetworkID $b.ScopeId $b.SubnetMask
# ネットワークIDが一致、もしくは片方のネットワークが他方の範囲を包含
$aStart = ConvertTo-UInt32IP $a.StartRange; $aEnd = ConvertTo-UInt32IP $a.EndRange
$bStart = ConvertTo-UInt32IP $b.StartRange; $bEnd = ConvertTo-UInt32IP $b.EndRange
$overlap = -not(($aEnd -lt $bStart) -or ($bEnd -lt $aStart))
if($aNet -eq $bNet -or $overlap){
[PSCustomObject]@{
A_Scope = "$($a.ScopeId)/$($a.SubnetMask)"
B_Scope = "$($b.ScopeId)/$($b.SubnetMask)"
A_Range = "$($a.StartRange)-$($a.EndRange)"
B_Range = "$($b.StartRange)-$($b.EndRange)"
Overlap = $overlap
}
}
}
} | Format-Table -Auto
スーパースコープとフェールオーバーの確認
# スーパースコープ:同一物理セグメントに複数サブネットを束ねていないか
Get-DhcpServerv4Superscope -ComputerName <DHCPサーバ名> |
Sort-Object Name | Format-Table -Auto
# フェールオーバー:相手と同期されるスコープを把握
Get-DhcpServerv4Failover -ComputerName |
Select-Object Name, Mode, PartnerServer, State, AutoStateTransition
NICバインディングの確認(配布元IFの誤り対策)
配布するインターフェースのバインディングが誤っていると、想定外のセグメントに影響します。
Get-DhcpServerv4Binding -ComputerName <DHCPサーバ名> |
Format-Table InterfaceAlias, IPAddress, BindingState -Auto
原因別の対処と判断基準
| 原因 | 対処方針 | 具体的手順 | 影響範囲を抑えるコツ |
|---|---|---|---|
| 同一サブネットのスコープが既存(Active/Inactive問わず) | 不要なら削除。必要なら1つに統合 | Remove-DhcpServerv4Scope -ScopeId 10.0.1.0 -Force(削除)/範囲統合は Set-DhcpServerv4Scope | リースが残る場合は即削除せず、無効化→期限後に削除 |
| 広いマスク(/23等)が包含している | 広い側を分割 or 設計見直し | Set-DhcpServerv4Scope で範囲縮小→新規 /24 を作成 | 計画停止を避けるなら、まず既存側に十分な Exclusion を設定 |
| フェールオーバーの二重作成 | 片側のみ作成し、同期に任せる | 相手側の重複スコープは削除。Failover の状態を確認 | 運用手順書に「新規は必ずプライマリで実施」を明記 |
| 検証用/旧担当者の休眠スコープが残存 | バックアップ後に棚卸し・廃止 | Get-DhcpServerv4Scope の State と最終更新を確認して削除 | 削除前に Export-DhcpServer で完全退避 |
| スーパースコープ内の重複 | 同一ネットワークIDの二重定義を解消 | 重複スコープを統合/片方を別サブネットへ再設計 | スーパースコープの目的(複数サブネット同居)を再確認 |
設計リカバリー:同一サブネットで用途を分けたい場合
「開発PCは短いリース、サーバーは長いリース」「特定ベンダーの機器に別ゲートウェイ」などの要件は、1つのスコープ+スコープポリシーで実現します。
# 例:特定のMACベンダー(OUI)に別のGWを配布
Add-DhcpServerv4Policy -ScopeId 10.0.1.0 -Name "VendorA" -Condition OR `
-VendorClass EQ "VendorA"
Set-DhcpServerv4OptionValue -ScopeId 10.0.1.0 -PolicyName "VendorA" `
-Router 10.0.1.254
スコープを増やさずともポリシーで柔軟に配布内容を変えられるため、重複エラーの根本回避になります。
重複の解消から新規スコープ作成まで(手順書)
1) 不要スコープの停止・削除
# 直ちに削除できない場合(リースが残る等)
Set-DhcpServerv4Scope -ScopeId 10.0.1.0 -State Inactive
# メンテナンス期間後に削除
Remove-DhcpServerv4Scope -ScopeId 10.0.1.0 -Force
2) アドレスプールの再設計(必要時)
既存の /23 を /24 に分割する例:
# まず既存 /23 の範囲を縮小(重複を避ける Exclusion を設定してから実施)
Set-DhcpServerv4Scope -ScopeId 10.0.0.0 -StartRange 10.0.0.10 -EndRange 10.0.0.200 -SubnetMask 255.255.254.0
# 設計が固まったら /24 の新規スコープを追加
Add-DhcpServerv4Scope -Name "VLAN10_10.0.1.0_24" `
-StartRange 10.0.1.1 -EndRange 10.0.1.50 -SubnetMask 255.255.255.0 -State Inactive
3) スコープオプションの設定
- 003 ルーター(デフォルトゲートウェイ)
- 006 DNS サーバー
- 015 DNS サフィックス(必要時)
- 042 NTP(必要時)
Set-DhcpServerv4OptionValue -ScopeId 10.0.1.0 -Router 10.0.1.254
Set-DhcpServerv4OptionValue -ScopeId 10.0.1.0 -DnsServer 10.0.1.10,10.0.1.11
Set-DhcpServerv4OptionValue -ScopeId 10.0.1.0 -DnsDomain "corp.example.local"
4) スコープの有効化とフェールオーバー
# 有効化
Set-DhcpServerv4Scope -ScopeId 10.0.1.0 -State Active
# フェールオーバー環境の場合、片側で作成後に Failover へ追加
Add-DhcpServerv4FailoverScope -Name "" -ScopeId 10.0.1.0
5) クライアント側の検証
ipconfig /release
ipconfig /renew
ipconfig /all
期待する 10.0.1.x が割り当てられ、DNS・ゲートウェイが正しく設定されているか確認します。サーバー側では「アクティブ リース」を監視し、エラーや重複がないかを数日観察します。
「それでも追加できない」時の深掘りチェック
データベース断片化や整合性不良の疑い
長年運用した DHCP ではデータベースが断片化することがあります。次の手順で「エクスポート → 再インポート」によるリビルドを検討します(必ずメンテナンス時間に実施)。
- 現在の設定とリースを
Export-DhcpServerで退避。 - サービス停止:
Stop-Service DhcpServer - DB退避(
%systemroot%\System32\dhcp配下のdhcp.mdbなどを別場所へ)。 - サービス開始:
Start-Service DhcpServer(空DBが生成)。 Import-DhcpServerで戻す。
Import-DhcpServer -ComputerName <DHCPサーバ名> `
-File "\\ファイルサーバ\バックアップ\dhcp_export.xml" -Leases -BackupPath "C:\DHCP_Backup" -Force
VLAN と DHCP リレー設定(ip helper)の再確認
同じサーバーで複数 VLAN を扱うとき、L3 スイッチ/ルータ側の DHCP Relay(ip helper-address 等)が正しく宛先を向いているか、VLANとサブネットの対応に齟齬がないかを再確認してください。誤った VLAN へスコープを作ってもエラーは出ませんが、意図しない配布が起こり、後続のトラブルにつながります。
複数NICバインドの誤り
DHCP サービスが「配布すべきでない NIC」にバインドされていると、重複検出の見落としや、想定外ネットワークへの配布が発生します。前述の Get-DhcpServerv4Binding で有効 NIC を点検し、不要な NIC は無効化します。
GUIでの操作手順(再掲/要点)
- 「DHCP マネージャー」→ サーバー名 →「IPv4」→「スコープ」で既存のサブネットを確認。
- 不要なスコープは「右クリック → 無効化」→ しばらく運用確認 → 問題なければ削除。
- 重複がなければ「新しいスコープの作成」を実行し、
10.0.1.1–10.0.1.50、255.255.255.0を指定。 - 「排他範囲」「リース期間」「オプション 003/006/015」などを要件に合わせて設定。
- スコープを有効化。フェールオーバー構成の場合は片側のみ作成し、同期を確認。
コマンド集(現場でそのまま使える最小セット)
# 1) 現状把握
Get-DhcpServerv4Scope -ComputerName <DHCPサーバ名> |
Select ScopeId,SubnetMask,StartRange,EndRange,State | ft -Auto
# 2) バックアップ
Export-DhcpServer -ComputerName -Leases `
-File "\\backup\dhcp_export.xml" -Force
# 3) 目的のスコープが残っていないか検索
netsh dhcp server dump | findstr /i "subnet 10.0.1.0 255.255.255.0"
# 4) 不要スコープを無効化/削除
Set-DhcpServerv4Scope -ScopeId 10.0.1.0 -State Inactive
Remove-DhcpServerv4Scope -ScopeId 10.0.1.0 -Force
# 5) 新規スコープ作成(まずは無効状態で)
Add-DhcpServerv4Scope -Name "10.0.1.0_24" -StartRange 10.0.1.1 `
-EndRange 10.0.1.50 -SubnetMask 255.255.255.0 -State Inactive
# 6) オプション設定
Set-DhcpServerv4OptionValue -ScopeId 10.0.1.0 -Router 10.0.1.254
Set-DhcpServerv4OptionValue -ScopeId 10.0.1.0 -DnsServer 10.0.1.10,10.0.1.11
Set-DhcpServerv4OptionValue -ScopeId 10.0.1.0 -DnsDomain "corp.example.local"
# 7) 有効化
Set-DhcpServerv4Scope -ScopeId 10.0.1.0 -State Active
チェックリスト(作業直前/直後)
- バックアップ(
Export-DhcpServerまたはnetsh export)を取得済みか。 - 重複スコープ(Active/Inactive 含む)が存在しないか。
- 包含関係(/23 などの広いマスク)が紛れていないか。
- フェールオーバーの相手に同名スコープが自動同期される設計か(手動重複作成していないか)。
- スコープポリシーで要件を満たせるのに、不要なスコープを増やそうとしていないか。
- NIC バインディングは適切か(不要な NIC が有効になっていないか)。
- VLAN と DHCP リレーの設定が図面どおりか。
- クライアントで
ipconfig /release→renewによる検証を実施したか。
よくある質問(FAQ)
Q. 既存スコープを誤って削除してしまいました。戻せますか?
A. バックアップを取得していれば Import-DhcpServer または netsh dhcp server import で復元できます。復元前に現在の DB を別名で保存しておくと安全です。
Q. 一時的に同一サブネットで別スコープを作れますか?
A. できません。緊急時は「既存スコープを維持したまま Exclusion を広げて一時回避」→「計画停止で範囲再設計」がセーフです。用途分割はスコープポリシーを使います。
Q. 無効化しているだけのスコープは重複判定されますか?
A. はい。Active/Inactive に関わらず、同一ネットワークIDが存在するだけで今回のエラーの原因になり得ます。
Q. 同一サブネットでゲートウェイを配布先により変えたい場合は?
A. スコープポリシーで条件(MAC OUI、ベンダークラス、リレエージェント情報等)に応じて 003 Router を出し分けできます。スコープを増やす必要はありません。
Q. DHCP Failover で新規スコープが片側にだけ現れます。
A. フェールオーバーへの参加設定(Add-DhcpServerv4FailoverScope)を忘れていないか、同期状態(Get-DhcpServerv4Failover)を確認してください。両側で手動作成は不要です。
まとめ(実務のコア手順)
- バックアップ → 全件把握 → 論理重複の特定が第一。
- 重複が確定したら、不要スコープの停止・廃止または範囲の再設計で解消。
- 用途の出し分けはスコープポリシーを活用し、スコープの濫立を防止。
- 作業後はクライアント検証と数日間のリース監視で安定性を確認。
以上を順に実施すれば、「The scope parameters are incorrect…」エラーは必ず原因に辿り着け、再発しない形で修復できます。
クイックリファレンス(貼って使える要点)
- 調査:
Get-DhcpServerv4Scope/netsh dhcp server show scope - バックアップ:
Export-DhcpServer -Leases/netsh ... export ... all - 衝突検出:前掲の PowerShell スクリプト(包含も検出)
- 解消:
Set-DhcpServerv4Scope(範囲調整)、Remove-DhcpServerv4Scope(廃止) - 作成:
Add-DhcpServerv4Scope→ オプション(003/006/015)→ 有効化 - 検証:
ipconfig /release→renew、サーバー側アクティブリース監視

コメント