Windows Server 2022 with PS 第7章

第7章: ネットワーク設定の構成と管理


1. この章で解説する主要な技術・概念(箇条書き)

  1. Windows Server 2022のネットワーク設定の基本
    • NICの確認、IPアドレスの設定、DNSサーバーの指定、ネットワークプロファイル管理
  2. PowerShellを用いたIPアドレスの自動化・変更
    • Get-NetAdapter, Get-NetIPAddress, New-NetIPAddress, Set-DnsClientServerAddress などのコマンド
  3. DNSサーバーの構成とゾーン管理
    • Install-WindowsFeature DNS, Add-DnsServerPrimaryZone, Add-DnsServerResourceRecordA など
  4. ファイアウォールの作成・管理(Windows Firewall with Advanced Security)
    • New-NetFirewallRule, Set-NetFirewallProfile などでルールやプロファイルを制御
  5. ネットワークプロファイルの切り替え(Public/Private/Domain)
    • Set-NetConnectionProfile でプロファイルを変更し、セキュリティレベルを調整
  6. スクリプトによるネットワーク設定の一括適用
    • 大規模環境でのIP割り当てやファイアウォール設定の自動化
  7. トラブルシューティングとネットワーク監視の自動化
    • 接続テスト(Test-Connection, Resolve-DnsName)、イベントログ解析のポイント

2. Windows Server 2022のネットワーク設定の基本

2-1. NIC(ネットワークインターフェース)の種類

  1. 物理NIC: 実サーバーに搭載されたLANポート
  2. 仮想NIC: Hyper-Vなどの仮想環境で定義される仮想ネットワークアダプター
  3. チーミング(NIC Teaming): 複数の物理NICを束ねて冗長化・帯域拡張する手法。PowerShellのNew-NetLbfoTeamなどで構成

2-2. Get-NetAdapter でインターフェース状況を確認

Get-NetAdapter
  • NIC名(InterfaceAlias)、LinkSpeed、Status、MACAddress などが表示。
  • Set-NetAdapter コマンドでNIC名の変更やNICチーミング設定なども可能。

2-3. IPアドレス/ゲートウェイ/DNSの概念復習

  • IPv4アドレス: 例: 192.168.10.50(/24)
  • デフォルトゲートウェイ: ローカルサブネット外に通信するためのルータIP
  • DNSサーバー: 名前解決を担当。Windows環境ではActive Directory DNSを使うケースが多い

3. PowerShellを用いたIPアドレスの自動化・変更

3-1. 基本コマンド:Get-NetIPAddress と New-NetIPAddress

  • Get-NetIPAddress: 現在のIPアドレス設定や既定ゲートウェイ情報を一覧表示
  • Remove-NetIPAddress: 不要なIP設定を削除(DHCP有効だったものを静的に切り替える際に使用)
  • New-NetIPAddress: 静的IPアドレスを新規追加する
# 既存のIP設定を削除(DHCP等)して静的IPを設定する例
Remove-NetIPAddress -InterfaceAlias "Ethernet" -Confirm:$false -ErrorAction SilentlyContinue

New-NetIPAddress -InterfaceAlias "Ethernet" -IPAddress "192.168.10.50" -PrefixLength 24 -DefaultGateway "192.168.10.1"

3-2. DNSサーバーの指定:Set-DnsClientServerAddress

Set-DnsClientServerAddress -InterfaceAlias "Ethernet" -ServerAddresses "192.168.10.10","8.8.8.8"
  • プライマリDNSに「192.168.10.10」、セカンダリDNSに「8.8.8.8」を登録する例。
  • マルチNIC環境では、InterfaceAliasごとに異なる設定が必要な場合も。

3-3. スクリプト化例:ネットワーク初期設定

param(
    [string]$InterfaceAlias = "Ethernet",
    [string]$IPAddress = "192.168.10.50",
    [int]$PrefixLength = 24,
    [string]$Gateway = "192.168.10.1",
    [string[]]$DnsServers = @("192.168.10.10","8.8.8.8")
)

Remove-NetIPAddress -InterfaceAlias $InterfaceAlias -Confirm:$false -ErrorAction SilentlyContinue
New-NetIPAddress -InterfaceAlias $InterfaceAlias -IPAddress $IPAddress -PrefixLength $PrefixLength -DefaultGateway $Gateway
Set-DnsClientServerAddress -InterfaceAlias $InterfaceAlias -ServerAddresses $DnsServers
  • これにより、複数サーバーへ同様の設定を展開する際も簡単に使い回せる。

4. DNSサーバーの構成とゾーン管理

4-1. DNSサーバーロールのインストール

Install-WindowsFeature -Name DNS -IncludeManagementTools
  • サーバーコアでもGUIツール(DNS Manager)を使いたい場合はクライアント側からRSATなどを利用する。

4-2. プライマリゾーンの作成とレコード追加

# プライマリゾーン (example.local) を作成
Add-DnsServerPrimaryZone -Name "example.local" -ReplicationScope "Domain"

# Aレコード (webserver.example.local -> 192.168.10.100)
Add-DnsServerResourceRecordA -Name "webserver" -ZoneName "example.local" -IPv4Address "192.168.10.100"
  • DNSサーバーをドメインコントローラーと同一マシンに配置する場合、-ReplicationScope "Domain" としてAD統合DNSを利用することが多い。

4-3. 一括レコード登録:PowerShellスクリプト例

$records = Import-Csv "C:\DnsRecords.csv"  # HostName, IP
foreach ($r in $records) {
    Add-DnsServerResourceRecordA -Name $r.HostName -ZoneName "example.local" -IPv4Address $r.IP
}
  • CSVにホスト名とIPを列挙しておけば、大量のDNSレコードも瞬時に登録可能。

5. ファイアウォールの作成と管理

5-1. Windows Firewall with Advanced Securityの概要

  • Windows Firewallは、ドメイン/パブリック/プライベート 3種のネットワークプロファイルごとにルールセットを持つ。
  • 既定設定は比較的厳しめ(Inboundがほぼブロック)であるため、SQL ServerやIISなどを導入する際は必要なポートを明示的に許可する必要がある。

5-2. 代表的なコマンド:New-NetFirewallRule

New-NetFirewallRule -Name "AllowHTTP" -DisplayName "Allow HTTP (TCP 80)" `
  -Protocol TCP -LocalPort 80 -Action Allow -Profile "Domain,Private"
  • ドメイン/プライベートネットワークでTCP80を許可する例。
  • もしパブリックネットワークでも必要なら-Profile Any-Profile Domain,Private,Public を指定。

5-3. ファイアウォールプロファイルの有効化・無効化

# ドメインプロファイルを無効化する例(推奨はされないが)
Set-NetFirewallProfile -Profile Domain -Enabled False
  • 実際にはセキュリティリスクが高いため、有効化状態を保ち、必要最小限のルールを追加するのがベストプラクティス。

6. ネットワークプロファイルの管理(Public/Private/Domain)

6-1. Get-NetConnectionProfile と Set-NetConnectionProfile

Get-NetConnectionProfile
# 出力例:
# Name                : Network 1
# InterfaceAlias      : Ethernet
# NetworkCategory     : Public
# PublicからPrivateに切り替えたい場合
Set-NetConnectionProfile -InterfaceAlias "Ethernet" -NetworkCategory Private
  • ドメインに参加している場合は自動でDomainAuthenticatedプロファイルとなることが多い。

6-2. プロファイルの切り替えによるセキュリティ強化

  • Publicネットワーク: より厳格なファイアウォールルールが適用される(あらゆる受信トラフィックをブロックする設定が多い)。
  • Privateネットワーク: ある程度信頼できるLAN内で使用する想定。
  • Domainネットワーク: ドメインコントローラーと通信可能な社内ネットワーク環境。

7. スクリプトによるネットワーク設定の一括適用

7-1. 大規模環境での活用例

  • CSVやJSONファイルに各サーバーのホスト名、IP、ゲートウェイ、DNSなどをまとめ、PowerShellスクリプトでループを回してInvoke-Commandを実行すれば、複数サーバーへの設定が一度に展開可能。
  • 例:
  $servers = Import-Csv "C:\Servers.csv"  # Fields: Name, IP, Gateway, ...

  foreach ($s in $servers) {
      Invoke-Command -ComputerName $s.Name -ScriptBlock {
          param($ip, $gw)
          # 省略: Remove-NetIPAddress, New-NetIPAddress など実行
      } -ArgumentList $s.IP, $s.Gateway
  }

7-2. テンプレートファイルを使った柔軟な運用

  • 複数ネットワークセグメントやVLANが混在する大規模サイトでは、JSON/YAMLなどで階層的に定義し、スクリプト側でパースして設定を切り替える工夫が役立つ。
  • グループポリシー と組み合わせ、DNSサフィックスやプロキシ設定を自動適用するシナリオも多い。

8. トラブルシューティングとネットワーク監視の自動化

8-1. 接続テストと名前解決

Test-Connection -ComputerName "Server01" -Count 4
Resolve-DnsName -Name "server01.example.com"
  • ICMP疎通が成功するか、DNSエントリが正しく登録されているかを検証。
  • ファイアウォールがICMPをブロックしている場合、Test-Connection結果が失敗でも通信できるケースもあるため要注意。

8-2. イベントログ・ネットワークログの確認

  • Systemログにネットワーク周りのエラーが記録される(例: イベントID 4199, 4200 など、NICリンクダウン時)。
  • ネットワーク特化したログとして“Microsoft-Windows-NetworkProfile/Operational”“Microsoft-Windows-WinRM/Operational”などがある。
  • Netsh trace コマンドを使って詳細なネットワークトレースを取る手法もあるが、上級者向け。

8-3. 継続的監視の自動化

  • タスクスケジューラでTest-ConnectionResolve-DnsName を実行し、障害検知時にメール通知を送るスクリプトを組む例などがある。
  • 大規模環境ならZabbix, Nagios, SCOMなどの監視ツールとの連携が一般的だが、PowerShellでJSON出力→Webhook送信などカスタム連携も可能。

9. 章末まとめと次章へのつながり

9-1. 学習のまとめ

  • NIC(ネットワークインターフェース) の確認やIPアドレス設定DNSサーバー指定など、基本のTCP/IP構成をPowerShellコマンド(Get-NetIPAddress, New-NetIPAddress, Set-DnsClientServerAddress)で自動化する手順を学びました。
  • DNSサーバーの導入Install-WindowsFeature DNS)やゾーン管理Add-DnsServerPrimaryZone, Add-DnsServerResourceRecordA)を通じて、オンプレミス環境でDNSを自前運用するシナリオを把握。
  • ファイアウォールルールNew-NetFirewallRuleで簡単に追加・管理できることを確認し、ネットワークプロファイル(Domain/Private/Public)の違いと切り替えも実例で紹介。
  • スクリプトによる一括適用トラブルシューティングのポイント(Test-Connection, Resolve-DnsName, イベントログ)を示し、大規模運用や自動監視への応用イメージを具体化。

9-2. 次章へのつながり

  • 次章(第8章)では、ストレージ管理とバックアップの自動化にフォーカスします。
  • 本章で整えたネットワーク基盤を活かし、リモートからストレージ構成を一元管理したり、バックアップデータを遠隔地に送信するシナリオも出てきます。
  • Windows Server 2022におけるディスクの初期化、パーティション、ボリューム管理Windows Server Backupの自動化といった内容を学び、ネットワーク越しにも安全で効率的なデータ保護を実現できるようにしていきましょう。