WindowsServer 2025 総合ガイド 第06回

記事内に広告が含まれています。

WindowsServer 2025 総合ガイド 第06回
ネットワーク設定の基礎 ― IPアドレスとDNSを理解する

第5回では、Windows Serverの心臓部ともいえる「サービス」について学びました。サービスの状態確認、起動・停止、スタートアップの種類の変更など、サーバー管理の基本スキルを習得しました。第6回となる今回は、サーバーが外部と通信するための基盤である「ネットワーク設定」を学びます。IPアドレス、サブネットマスク、DNS(Domain Name System)の概念を理解し、PowerShellで設定の確認・変更・トラブルシューティングを行えるようになりましょう。

6.1 この記事で学ぶこと

  • TCP/IPの基本概念(IPアドレス、サブネットマスク、デフォルトゲートウェイ)を理解する
  • ネットワークアダプターとIPアドレスの設定をPowerShellで確認・変更できる
  • DNSの設定と名前解決の確認ができる
  • 接続テストによる疎通確認とトラブルシューティングの基礎を身につける

6.2 前提条件

  • 第5回完了(Windowsサービスの管理を理解)
  • Windows Server 2025にリモートデスクトップ接続できる状態
  • PowerShell 7.4を管理者として起動できる状態

6.3 TCP/IPの基礎知識

ネットワーク設定を行う前に、通信の基盤となるTCP/IP(Transmission Control Protocol / Internet Protocol)の基本概念を理解しておきましょう。TCP/IPは、コンピュータ同士がネットワーク上で通信するためのルール(プロトコル)の集まりです。

6.3.1 IPアドレスとは

IPアドレスは、ネットワーク上のコンピュータを識別するための「住所」のようなものです。電話番号がなければ電話をかけられないのと同じように、IPアドレスがなければサーバー同士は通信できません。

IPv4アドレスの構造

現在最も広く使われているのはIPv4(Internet Protocol version 4)アドレスです。IPv4アドレスは32ビット(4バイト)の数値で、人間が読みやすいように8ビット(1バイト)ずつドットで区切って10進数で表記します。この8ビットの各区切りを「オクテット」と呼びます。

例:192.168.1.100

  192     .  168     .    1     .  100
[第1オクテット].[第2オクテット].[第3オクテット].[第4オクテット]

各オクテットの範囲:0〜255(8ビットで表現できる範囲)

プライベートアドレスとパブリックアドレス

IPアドレスには「プライベートアドレス」と「パブリックアドレス」の2種類があります。プライベートアドレスは組織内のネットワーク(LAN)で自由に使えるアドレスで、インターネット上では使用できません。一方、パブリックアドレスはインターネット上で一意に割り当てられるアドレスです。

種類 アドレス範囲 CIDR表記 用途
クラスA プライベート 10.0.0.0 〜 10.255.255.255 10.0.0.0/8 大規模な組織内ネットワーク
クラスB プライベート 172.16.0.0 〜 172.31.255.255 172.16.0.0/12 中規模な組織内ネットワーク
クラスC プライベート 192.168.0.0 〜 192.168.255.255 192.168.0.0/16 小規模な組織内ネットワーク・家庭
パブリックアドレス 上記以外 インターネット上の通信

ConoHa VPS環境での注意: ConoHa for Windows Serverでは、サーバーにパブリックIPアドレスが直接割り当てられています。自宅のルーター配下の環境(192.168.x.x など)とは異なり、インターネットから直接アクセス可能な状態です。そのため、セキュリティ設定(ファイアウォールなど)がより重要になります。

特殊なIPアドレス

いくつかのIPアドレスは特別な意味を持っています。

アドレス 名称 用途
127.0.0.1 ループバックアドレス 自分自身を指す。ネットワークに出ずに自分のコンピュータ内で通信をテストする際に使用
0.0.0.0 すべてのアドレス サーバーが「すべてのネットワークインターフェースでリッスンする」ことを示す場合などに使用
255.255.255.255 ブロードキャストアドレス 同一ネットワーク内のすべてのホストに一斉送信する際に使用

6.3.2 サブネットマスクの役割

サブネットマスクは、IPアドレスのうち「どこまでがネットワークの識別部分で、どこからがホスト(個々のコンピュータ)の識別部分か」を決める値です。

ネットワーク部とホスト部

IPアドレスは「ネットワーク部」と「ホスト部」の2つの部分に分かれています。たとえば、住所で例えると「東京都千代田区」がネットワーク部(地域の識別)、「丸の内1-1」がホスト部(その地域内の特定の場所)に相当します。

IPアドレス:    192.168.1.100
サブネットマスク:255.255.255.0

ネットワーク部:192.168.1   (同じネットワークに属する機器は全て同じ)
ホスト部:      100          (同じネットワーク内で機器ごとに異なる)

サブネットマスクが「255」の部分がネットワーク部、「0」の部分がホスト部です。同じネットワーク部を持つコンピュータ同士は、ルーター(後述するゲートウェイ)を介さずに直接通信できます。

CIDR表記

サブネットマスクは「255.255.255.0」のように書く代わりに、「/24」のようにネットワーク部のビット数で表記することもあります。これをCIDR(Classless Inter-Domain Routing、サイダー)表記と呼びます。

サブネットマスク CIDR表記 ネットワーク部のビット数 利用可能なホスト数
255.0.0.0 /8 8ビット 約1677万台
255.255.0.0 /16 16ビット 約6万5千台
255.255.255.0 /24 24ビット 254台
255.255.255.128 /25 25ビット 126台
255.255.255.192 /26 26ビット 62台
255.255.255.224 /27 27ビット 30台
255.255.255.240 /28 28ビット 14台
255.255.255.252 /30 30ビット 2台

補足: 「利用可能なホスト数」が2のホスト部ビット数乗より2つ少ないのは、ネットワークアドレス(ホスト部がすべて0)とブロードキャストアドレス(ホスト部がすべて1)の2つが予約されているためです。たとえば /24 では 2^8 – 2 = 254台となります。

6.3.3 デフォルトゲートウェイ

デフォルトゲートウェイは、異なるネットワークへ通信する際の「出口」となる機器(通常はルーター)のIPアドレスです。

同じネットワーク部を持つコンピュータ同士は直接通信できますが、異なるネットワーク(たとえばインターネット上のサーバー)と通信するには、デフォルトゲートウェイを経由する必要があります。たとえるなら、同じ建物内の人には直接話しかけられますが、別の建物の人と話すには受付(ゲートウェイ)を通す必要があるようなものです。

自分のサーバー:192.168.1.100 / 255.255.255.0
ゲートウェイ:  192.168.1.1

通信先が 192.168.1.x → 直接通信(同じネットワーク)
通信先が 10.0.0.x   → ゲートウェイ(192.168.1.1)経由で転送
通信先が 8.8.8.8    → ゲートウェイ(192.168.1.1)経由で転送

6.3.4 IPv6について

IPv4アドレスは32ビットのため約43億個しか割り当てられず、インターネットの普及に伴い枯渇が進んでいます。その後継として開発されたのがIPv6(Internet Protocol version 6)です。IPv6は128ビットのアドレス空間を持ち、事実上無限に近い数のアドレスを使用できます。

IPv4の例:192.168.1.100
IPv6の例:fe80::d4a8:6435:d2d8:d9f3

Windows Server 2025ではIPv6がデフォルトで有効になっています。本シリーズではIPv4を中心に解説しますが、コマンド実行時にIPv6のアドレスが表示されることがありますので、驚かないでください。IPv6の詳細な設定については、IPv4の基礎を十分に理解してから学ぶことをお勧めします。

6.4 ネットワークアダプターの確認

ネットワーク設定を確認する最初のステップは、サーバーに搭載されているネットワークアダプター(NIC:Network Interface Card)の状態を確認することです。ネットワークアダプターは、サーバーをネットワークに物理的(または仮想的に)接続するためのハードウェアです。

6.4.1 Get-NetAdapterコマンドレット

Get-NetAdapterコマンドレットを使うと、サーバーに搭載されているすべてのネットワークアダプターの情報を取得できます。

[実行環境: PowerShell 7.4 (管理者)]

# ネットワークアダプターの一覧を取得
Get-NetAdapter

実行結果の例

Name                      InterfaceIndex ifIndex Status       MacAddress             LinkSpeed
----                      -------------- ------- ------       ----------             ---------
Ethernet0                             6       6 Up           00-50-56-A1-2B-3C        10 Gbps
Loopback Pseudo-Interface 1              1       1 Up           00-00-00-00-00-00-00      1.2 Gbps

各列の意味は以下のとおりです。

プロパティ 説明
Name アダプターの名前。設定変更時にこの名前で指定する
InterfaceIndex アダプターを一意に識別する番号
Status Up(接続中)またはDown(切断)。Upでなければ通信できない
MacAddress 物理アドレス。ネットワークアダプター固有の識別子(MACアドレス)
LinkSpeed リンク速度。ネットワークの物理的な接続速度

特定のプロパティだけを確認したい場合は、Select-Objectで絞り込むことができます。

[実行環境: PowerShell 7.4 (管理者)]

# 主要な情報だけを表示
Get-NetAdapter | Select-Object -Property Name, Status, MacAddress, LinkSpeed, InterfaceDescription

6.4.2 Get-NetAdapterAdvancedPropertyコマンドレット

ネットワークアダプターの詳細なプロパティ(速度設定、VLAN設定など)を確認するには、Get-NetAdapterAdvancedPropertyを使用します。通常の運用ではあまり変更する必要はありませんが、トラブルシューティング時に役立つことがあります。

[実行環境: PowerShell 7.4 (管理者)]

# Ethernet0アダプターの詳細プロパティを確認
Get-NetAdapterAdvancedProperty -Name "Ethernet0"

実行結果の例

Name      DisplayName                    DisplayValue   RegistryKeyword RegistryValue
----      -----------                    ------------   --------------- -------------
Ethernet0 IPv4 Checksum Offload          Rx & Tx Enabled *IPChecksumOff… {3}
Ethernet0 Large Send Offload V2 (IPv4)   Enabled        *LsoV2IPv4      {1}
Ethernet0 Large Send Offload V2 (IPv6)   Enabled        *LsoV2IPv6      {1}
...

Tips: Get-NetAdapterGet-NetAdapterAdvancedPropertyの詳細なパラメータを調べるには、Get-Help Get-NetAdapter -Detailedを実行するか、Microsoft Docsを参照してください。

6.5 IPアドレス設定の確認

ネットワークアダプターの状態を確認したら、次はIPアドレスの設定を確認しましょう。PowerShellにはIPアドレス設定を確認するためのコマンドレットが複数用意されています。

6.5.1 Get-NetIPConfigurationコマンドレット

Get-NetIPConfigurationは、ネットワーク設定の概要を一覧表示するコマンドレットです。IPアドレス、デフォルトゲートウェイ、DNSサーバーなど、主要な設定を一目で確認できるため、最もよく使うコマンドレットのひとつです。

[実行環境: PowerShell 7.4 (管理者)]

# ネットワーク設定の概要を表示
Get-NetIPConfiguration

実行結果の例

InterfaceAlias       : Ethernet0
InterfaceIndex       : 6
InterfaceDescription : VMware VMXNET3 Ethernet Adapter
NetProfile.Name      : ネットワーク
IPv4Address          : 198.51.100.10
IPv6DefaultGateway   :
IPv4DefaultGateway   : 198.51.100.1
DNSServer            : 8.8.8.8
                       8.8.4.4

この出力から、以下の情報がわかります。

  • InterfaceAlias:ネットワークアダプターの名前(Ethernet0)
  • IPv4Address:このサーバーに割り当てられているIPv4アドレス
  • IPv4DefaultGateway:デフォルトゲートウェイのIPアドレス
  • DNSServer:DNSサーバーのIPアドレス(詳細は後述)

より詳細な情報を確認するには、-Detailedパラメータを追加します。

[実行環境: PowerShell 7.4 (管理者)]

# 詳細なネットワーク設定を表示
Get-NetIPConfiguration -Detailed

6.5.2 Get-NetIPAddressコマンドレット

Get-NetIPAddressは、サーバーに設定されているすべてのIPアドレスの詳細情報を取得するコマンドレットです。IPv4とIPv6の両方が表示されます。

[実行環境: PowerShell 7.4 (管理者)]

# すべてのIPアドレスを表示
Get-NetIPAddress

IPv4アドレスだけに絞り込むには、-AddressFamilyパラメータを使用します。

[実行環境: PowerShell 7.4 (管理者)]

# IPv4アドレスのみ表示
Get-NetIPAddress -AddressFamily IPv4

実行結果の例

IPAddress         : 198.51.100.10
InterfaceIndex    : 6
InterfaceAlias    : Ethernet0
AddressFamily     : IPv4
Type              : Unicast
PrefixLength      : 23
PrefixOrigin      : Manual
SuffixOrigin      : Manual
AddressState      : Preferred
ValidLifetime     : Infinite ([TimeSpan]::MaxValue)
PreferredLifetime : Infinite ([TimeSpan]::MaxValue)
SkipAsSource      : False
PolicyStore       : ActiveStore

IPAddress         : 127.0.0.1
InterfaceIndex    : 1
InterfaceAlias    : Loopback Pseudo-Interface 1
AddressFamily     : IPv4
Type              : Unicast
PrefixLength      : 8
PrefixOrigin      : WellKnown
SuffixOrigin      : WellKnown
AddressState      : Preferred
ValidLifetime     : Infinite ([TimeSpan]::MaxValue)
PreferredLifetime : Infinite ([TimeSpan]::MaxValue)
SkipAsSource      : False
PolicyStore       : ActiveStore

ここで確認すべき主なプロパティは以下のとおりです。

プロパティ 説明
IPAddress 割り当てられているIPアドレス
PrefixLength サブネットマスクのCIDR表記(例:23 は /23 = 255.255.254.0)
PrefixOrigin アドレスの取得方法。Manual(手動設定)、Dhcp(DHCP取得)、WellKnown(予約済み)など
AddressState アドレスの状態。Preferred(有効)が正常

6.5.3 Get-NetRouteコマンドレット

Get-NetRouteは、ルーティングテーブル(通信先ごとにどのゲートウェイを経由するかの一覧表)を表示するコマンドレットです。デフォルトゲートウェイの設定が正しいかどうかを確認する際に使用します。

[実行環境: PowerShell 7.4 (管理者)]

# IPv4のルーティングテーブルを表示
Get-NetRoute -AddressFamily IPv4 | 
    Select-Object -Property DestinationPrefix, NextHop, RouteMetric, InterfaceAlias

実行結果の例

DestinationPrefix  NextHop        RouteMetric InterfaceAlias
-----------------  -------        ----------- --------------
255.255.255.255/32 0.0.0.0                256 Ethernet0
198.51.100.0/23    0.0.0.0                256 Ethernet0
198.51.100.10/32   0.0.0.0                256 Ethernet0
127.0.0.1/32       0.0.0.0                256 Loopback Pseudo-Interface 1
127.0.0.0/8        0.0.0.0                256 Loopback Pseudo-Interface 1
0.0.0.0/0          198.51.100.1           16  Ethernet0

最も重要な行は0.0.0.0/0(デフォルトルート)です。これは「特定のルートが定義されていない通信先すべて」に対するルートで、NextHopに表示されているアドレスがデフォルトゲートウェイです。

6.6 IPアドレスの設定

IPアドレスの設定状況を確認する方法がわかったところで、次はIPアドレスの設定を変更する方法を学びます。

⚠️ 重要な警告(VPS環境をお使いの方へ): ConoHa VPSなどのリモート環境でIPアドレスやゲートウェイの設定を変更すると、リモートデスクトップ(RDP)接続が切断され、サーバーに接続できなくなる可能性があります。IPアドレス設定の変更は、以下の点を必ず確認してください。

  • 変更前の設定値を必ず控えておく
  • VPSのコントロールパネルからコンソール接続ができることを確認しておく(RDP以外の接続手段)
  • 設定を誤った場合にVPSの再起動やコンソールからの復旧が可能か確認しておく

本セクションでは操作手順を解説しますが、VPS環境では実際にIP設定を変更せず、確認コマンドの実行にとどめることを強く推奨します。設定変更の練習は、ローカルの仮想環境(Hyper-Vなど)で行うのが安全です。

6.6.1 静的IPアドレスの設定

新しいIPアドレスを手動で設定するには、New-NetIPAddressコマンドレットを使用します。サーバーは一般的に、DHCPによる自動割り当てではなく、静的(固定)IPアドレスを使用します。サーバーのIPアドレスが変わると、クライアントからの接続先が変わってしまい、サービスに影響が出るためです。

[実行環境: PowerShell 7.4 (管理者)]

# 静的IPアドレスを設定する(例)
New-NetIPAddress `
    -InterfaceAlias "Ethernet0" `
    -IPAddress "192.168.1.100" `
    -PrefixLength 24 `
    -DefaultGateway "192.168.1.1"

各パラメータの意味は以下のとおりです。

パラメータ 説明
-InterfaceAlias 設定対象のネットワークアダプター名 “Ethernet0”
-IPAddress 設定するIPアドレス “192.168.1.100”
-PrefixLength サブネットマスクのCIDR表記 24(= 255.255.255.0)
-DefaultGateway デフォルトゲートウェイのIPアドレス “192.168.1.1”

6.6.2 既存設定の変更と削除

既に設定されているIPアドレスを変更する場合はSet-NetIPAddress、削除する場合はRemove-NetIPAddressを使用します。

[実行環境: PowerShell 7.4 (管理者)]

# 既存のIPアドレスのプレフィックス長を変更する
Set-NetIPAddress -InterfaceAlias "Ethernet0" -IPAddress "192.168.1.100" -PrefixLength 25

# IPアドレスを削除する(確認プロンプトが表示される)
Remove-NetIPAddress -InterfaceAlias "Ethernet0" -IPAddress "192.168.1.100" -Confirm:$false

注意: Set-NetIPAddressはIPアドレスそのものやデフォルトゲートウェイの変更はできません。IPアドレスを変更する場合は、いったんRemove-NetIPAddressで削除してからNew-NetIPAddressで再設定する手順になります。デフォルトゲートウェイの変更にはRemove-NetRouteNew-NetRouteを使用します。

6.6.3 DHCPへの切り替え

静的IPアドレスからDHCP(Dynamic Host Configuration Protocol、IPアドレスの自動割り当て)に切り替えるには、以下のコマンドを使用します。

[実行環境: PowerShell 7.4 (管理者)]

# DHCPを有効にする
Set-NetIPInterface -InterfaceAlias "Ethernet0" -Dhcp Enabled

# DNSもDHCPから取得するように設定
Set-DnsClientServerAddress -InterfaceAlias "Ethernet0" -ResetServerAddresses

DHCPを有効にすると、ネットワーク上のDHCPサーバーからIPアドレス、サブネットマスク、デフォルトゲートウェイ、DNSサーバーが自動的に割り当てられます。ただし、サーバー用途ではIPアドレスが変わるとサービスに影響が出るため、一般的にはDHCPではなく静的IPアドレスが推奨されます。

6.7 DNS設定

IPアドレスの設定ができたら、次はDNS(Domain Name System)について学びましょう。DNSは、インターネットを利用するうえで不可欠な仕組みです。

6.7.1 DNSとは

DNSは、人間が覚えやすいドメイン名(例:www.example.com)を、コンピュータが通信に使うIPアドレス(例:93.184.216.34)に変換(名前解決)する仕組みです。電話帳に例えると、相手の名前(ドメイン名)から電話番号(IPアドレス)を調べるようなものです。

名前解決の流れ

ブラウザでwww.example.comにアクセスする場合、以下のような流れで名前解決が行われます。

  1. サーバーのDNSキャッシュ(過去の問い合わせ結果の記憶)を確認
  2. キャッシュになければ、設定されたDNSサーバーに問い合わせ
  3. DNSサーバーが該当するドメインのIPアドレスを回答
  4. 取得したIPアドレスを使って通信を開始

この仕組みにより、数字の羅列であるIPアドレスを覚える必要なく、わかりやすいドメイン名でサーバーにアクセスできるのです。

DNSサーバーの役割

DNSサーバーは、ドメイン名とIPアドレスの対応情報を管理しているサーバーです。代表的なパブリックDNSサーバーには以下があります。

提供元 プライマリDNS セカンダリDNS
Google Public DNS 8.8.8.8 8.8.4.4
Cloudflare DNS 1.1.1.1 1.0.0.1

VPS環境では、プロバイダーが提供するDNSサーバーが設定されていることが多いですが、上記のパブリックDNSサーバーを使用することもあります。

6.7.2 DNS設定の確認

現在設定されているDNSサーバーを確認するには、Get-DnsClientServerAddressコマンドレットを使用します。

[実行環境: PowerShell 7.4 (管理者)]

# DNS設定を確認(IPv4のみ)
Get-DnsClientServerAddress -AddressFamily IPv4

実行結果の例

InterfaceAlias               Interface Address ServerAddresses
                             Index     Family
--------------               --------- ------- ---------------
Ethernet0                            6 IPv4    {8.8.8.8, 8.8.4.4}
Loopback Pseudo-Interface 1          1 IPv4    {}

ServerAddresses列に表示されているのが、そのアダプターに設定されているDNSサーバーのIPアドレスです。複数設定されている場合は、先頭のアドレス(プライマリDNS)に優先的に問い合わせが行われ、応答がない場合に次のアドレス(セカンダリDNS)が使用されます。

6.7.3 DNS設定の変更

DNSサーバーの設定を変更するには、Set-DnsClientServerAddressコマンドレットを使用します。

[実行環境: PowerShell 7.4 (管理者)]

# DNSサーバーをGoogle Public DNSに設定
Set-DnsClientServerAddress -InterfaceAlias "Ethernet0" -ServerAddresses ("8.8.8.8", "8.8.4.4")

# 設定を確認
Get-DnsClientServerAddress -InterfaceAlias "Ethernet0" -AddressFamily IPv4

実行結果の例

InterfaceAlias               Interface Address ServerAddresses
                             Index     Family
--------------               --------- ------- ---------------
Ethernet0                            6 IPv4    {8.8.8.8, 8.8.4.4}

注意: DNSサーバーの変更は、IPアドレスの変更と異なりネットワーク接続が切断されることはありません。ただし、誤ったDNSサーバーを設定すると名前解決ができなくなり、ドメイン名でのアクセス(Webサイトの閲覧やWindows Updateなど)ができなくなります。変更前の設定値は必ず控えておきましょう。

6.7.4 DNSキャッシュの確認とクリア

コンピュータは名前解決の結果を一定期間キャッシュ(一時保存)します。これにより、同じドメイン名への問い合わせを毎回DNSサーバーに行う必要がなくなり、通信が高速化されます。

[実行環境: PowerShell 7.4 (管理者)]

# DNSキャッシュの内容を確認
Get-DnsClientCache | Select-Object -Property Entry, RecordName, Data, TimeToLive -First 10

実行結果の例

Entry                              RecordName                         Data             TimeToLive
-----                              ----------                         ----             ----------
www.google.com                     www.google.com                     142.250.207.100        205
dns.google                         dns.google                         8.8.8.8               3312

DNSの設定を変更した後や、Webサイトのサーバー移転後などに古いキャッシュが残っている場合は、キャッシュをクリアすることで最新の情報を取得できます。

[実行環境: PowerShell 7.4 (管理者)]

# DNSキャッシュをクリア
Clear-DnsClientCache

# クリアされたことを確認(結果が空になる)
Get-DnsClientCache

実務でのポイント: 「Webサイトにアクセスできない」「ドメイン名でサーバーに接続できない」というトラブル時に、まず試す定番の操作が「DNSキャッシュのクリア」です。古いキャッシュが原因で正しいIPアドレスに到達できないケースは少なくありません。

6.8 接続テスト

ネットワーク設定が正しく行われているかを確認するために、接続テスト(疎通確認)を行います。PowerShellには、用途に応じた複数の接続テスト用コマンドレットが用意されています。

6.8.1 Test-Connectionコマンドレット

Test-Connectionは、従来のpingコマンドに相当するコマンドレットで、ICMP(Internet Control Message Protocol)エコー要求を送信して相手先との疎通を確認します。

[実行環境: PowerShell 7.4 (管理者)]

# Google Public DNSへの疎通確認
Test-Connection -TargetName "8.8.8.8" -Count 4

実行結果の例

   Destination: 8.8.8.8

Ping Source           Address                   Latency BufferSize Status
                                                   (ms)        (B)
---- ------           -------                   ------- ---------- ------
   1 WIN-SERVER01     8.8.8.8                         3         32 Success
   2 WIN-SERVER01     8.8.8.8                         3         32 Success
   3 WIN-SERVER01     8.8.8.8                         3         32 Success
   4 WIN-SERVER01     8.8.8.8                         4         32 Success

StatusがすべてSuccessであれば、対象との通信が正常に行えています。

PowerShell 7.4での注意点: PowerShell 7.4のTest-Connectionでは、宛先を指定するパラメータ名が-TargetNameです。Windows PowerShell 5.1では-ComputerNameでしたが、PowerShell 7.xでは変更されています。スクリプトを作成する際にはご注意ください。

主なパラメータを紹介します。

パラメータ 説明 使用例
-TargetName 疎通確認先のIPアドレスまたはホスト名 -TargetName "8.8.8.8"
-Count 送信するエコー要求の回数(デフォルト:4回) -Count 10
-Quiet 結果をTrue/Falseのみで返す(スクリプト向け) -Quiet
-IPv4 IPv4での接続を強制する -IPv4
-Traceroute トレースルートを実行する(経路を表示) -Traceroute
-TcpPort 指定したTCPポートへの接続をテストする -TcpPort 443

-Quietパラメータは、スクリプト内で接続状態に応じた処理を行うときに便利です。

[実行環境: PowerShell 7.4 (管理者)]

# 疎通結果をTrue/Falseで取得
$isReachable = Test-Connection -TargetName "8.8.8.8" -Count 1 -Quiet
Write-Host "8.8.8.8 への疎通: $isReachable"

実行結果の例

8.8.8.8 への疎通: True

6.8.2 Test-NetConnectionコマンドレット

Test-NetConnectionは、Test-Connectionよりも多機能な接続テストコマンドレットです。ICMP疎通確認に加えて、特定のTCPポートへの接続テストやトレースルートも実行できます。ネットワークのトラブルシューティングではこちらを多用します。

[実行環境: PowerShell 7.4 (管理者)]

# 基本的な接続テスト
Test-NetConnection -ComputerName "8.8.8.8"

実行結果の例

ComputerName     : 8.8.8.8
RemoteAddress    : 8.8.8.8
InterfaceAlias   : Ethernet0
SourceAddress    : 198.51.100.10
PingSucceeded    : True
PingReplyDetails (RTT) : 3 ms

ポート疎通確認(-Port)

特定のTCPポートが開いているかどうかを確認するには、-Portパラメータを使用します。Webサーバーへの接続テスト(HTTPS:ポート443)やRDP接続テスト(ポート3389)などに活用できます。

[実行環境: PowerShell 7.4 (管理者)]

# HTTPS(ポート443)の疎通確認
Test-NetConnection -ComputerName "www.google.com" -Port 443

実行結果の例

ComputerName     : www.google.com
RemoteAddress    : 142.250.207.100
RemotePort       : 443
InterfaceAlias   : Ethernet0
SourceAddress    : 198.51.100.10
TcpTestSucceeded : True

TcpTestSucceeded : Trueであれば、そのポートでの通信が可能です。Falseの場合は、ファイアウォールでブロックされているか、対象サーバーでそのポートのサービスが動作していない可能性があります。

トレースルート(-TraceRoute)

トレースルートは、通信先までの経路(どのルーターを経由しているか)を表示する機能です。通信経路上のどこで問題が発生しているかを特定するのに役立ちます。

[実行環境: PowerShell 7.4 (管理者)]

# トレースルートの実行
Test-NetConnection -ComputerName "8.8.8.8" -TraceRoute

実行結果の例

ComputerName     : 8.8.8.8
RemoteAddress    : 8.8.8.8
InterfaceAlias   : Ethernet0
SourceAddress    : 198.51.100.10
PingSucceeded    : True
PingReplyDetails (RTT) : 3 ms
TraceRoute       : 198.51.100.1
                   203.0.113.1
                   203.0.113.5
                   8.8.8.8

TraceRouteの各行が、通信経路上の中継点(ホップ)です。最初のアドレスはデフォルトゲートウェイで、そこからインターネット上のルーターを経由して最終的な宛先に到達しています。

Tips: -CommonTCPPortパラメータを使うと、代表的なポートを名前で指定できます。Test-NetConnection -ComputerName "example.com" -CommonTCPPort HTTPとすれば、ポート80への接続テストが行えます。利用可能な値はHTTPRDPSMBWINRMです。

6.8.3 Resolve-DnsNameコマンドレット

Resolve-DnsNameは、DNS名前解決を明示的にテストするコマンドレットです。従来のnslookupコマンドに相当しますが、PowerShellオブジェクトとして結果を返すため、スクリプトでの利用に適しています。

[実行環境: PowerShell 7.4 (管理者)]

# ドメイン名からIPアドレスを解決(Aレコード)
Resolve-DnsName -Name "www.google.com" -Type A

実行結果の例

Name                                           Type   TTL   Section    IPAddress
----                                           ----   ---   -------    ---------
www.google.com                                 A      189   Answer     142.250.207.100

-Typeパラメータで問い合わせるDNSレコードの種類を指定できます。

レコードタイプ 説明 使用例
A ドメイン名 → IPv4アドレスの対応 最もよく使う基本の名前解決
AAAA ドメイン名 → IPv6アドレスの対応 IPv6環境での名前解決
MX メールサーバーのアドレス メール配送先の確認
NS ネームサーバー(DNSサーバー)のアドレス ドメインの権威DNSサーバーの確認
CNAME ドメインの別名 CDNや負荷分散環境の確認
TXT テキスト情報 SPFレコード、ドメイン認証の確認

[実行環境: PowerShell 7.4 (管理者)]

# MXレコード(メールサーバー)を確認
Resolve-DnsName -Name "google.com" -Type MX

# NSレコード(ネームサーバー)を確認
Resolve-DnsName -Name "google.com" -Type NS

実務でのポイント: 「Webサイトにアクセスできない」というトラブル時に、Resolve-DnsNameで名前解決ができるかどうかを確認することは重要な切り分け手段です。名前解決が失敗する場合はDNSの問題、成功するのにアクセスできない場合はネットワーク経路やファイアウォールの問題と判断できます。

6.9 ネットワークトラブルシューティング

ネットワーク設定を学んだところで、最も実務で役立つスキルのひとつである「トラブルシューティング」の手順を紹介します。ネットワークの問題は「接続できない」という症状で現れることが多いですが、原因はさまざまです。論理的な順序で切り分けることで、効率的に原因を特定できます。

6.9.1 接続できない場合の確認手順

ネットワークトラブルの切り分けは、OSI参照モデルの下位層(物理的な接続)から上位層(アプリケーション)に向かって確認するのが基本です。以下の手順で順番に確認していきましょう。

Step 1:ネットワークアダプターの状態確認

まず、ネットワークアダプターが有効で、リンクが確立されているか(StatusがUpか)を確認します。

[実行環境: PowerShell 7.4 (管理者)]

# アダプターの状態を確認
Get-NetAdapter | Select-Object -Property Name, Status, LinkSpeed

StatusがDownの場合は、物理的な接続(ケーブル)の問題、ドライバーの問題、またはアダプターが無効化されている可能性があります。アダプターを有効にするにはEnable-NetAdapter -Name "Ethernet0"を実行します。

Step 2:IPアドレス設定の確認

アダプターがUpの場合、次にIPアドレスが正しく設定されているかを確認します。

[実行環境: PowerShell 7.4 (管理者)]

# IPアドレス設定を確認
Get-NetIPConfiguration

IPv4Addressが表示されない、あるいはAPIPAアドレス(169.254.x.x)が表示される場合は、IPアドレスの設定が正しくないか、DHCPサーバーからアドレスを取得できていません。

APIPAとは: APIPA(Automatic Private IP Addressing)は、DHCPサーバーからIPアドレスを取得できなかった場合に、Windowsが自動的に割り当てる169.254.x.x のアドレスです。このアドレスでは外部との通信はできません。

Step 3:デフォルトゲートウェイへの疎通確認

IPアドレスが正しく設定されている場合、次にデフォルトゲートウェイとの通信を確認します。

[実行環境: PowerShell 7.4 (管理者)]

# デフォルトゲートウェイへの疎通確認
# まずゲートウェイのアドレスを確認
$gateway = (Get-NetIPConfiguration).IPv4DefaultGateway.NextHop
Write-Host "デフォルトゲートウェイ: $gateway"

# ゲートウェイにPing
Test-Connection -TargetName $gateway -Count 2

ゲートウェイへの疎通が失敗する場合は、以下の原因が考えられます。

  • ゲートウェイのIPアドレスが間違っている
  • ゲートウェイ機器(ルーター)に障害が発生している
  • サブネットマスクの設定が間違っている(同じネットワークにいるように見えない)

Step 4:DNS名前解決の確認

ゲートウェイへの疎通が問題ない場合、次にDNSの名前解決を確認します。

[実行環境: PowerShell 7.4 (管理者)]

# 外部のIPアドレスに疎通確認(DNSを使わない)
Test-Connection -TargetName "8.8.8.8" -Count 2

# DNSによる名前解決を確認
Resolve-DnsName -Name "www.google.com" -Type A

IPアドレスでの疎通は成功するのに名前解決が失敗する場合は、DNS設定に問題があります。DNSサーバーのアドレスが正しいか、DNSサーバー自体に障害がないかを確認してください。

Step 5:宛先ポートへの疎通確認

名前解決も問題ない場合は、宛先の特定ポートへの接続を確認します。

[実行環境: PowerShell 7.4 (管理者)]

# 宛先のポート(例:HTTPS 443)への接続テスト
Test-NetConnection -ComputerName "www.google.com" -Port 443

TcpTestSucceededがFalseの場合は、自分側または相手側のファイアウォールでブロックされている、あるいは宛先でそのポートのサービスが動作していない可能性があります。

6.9.2 トラブルシューティングのフローチャート

以上の手順をまとめると、以下のような流れになります。

確認ステップ 使用コマンド 失敗時の原因
1. アダプター状態 Get-NetAdapter 物理接続、ドライバー、アダプター無効化
2. IP設定 Get-NetIPConfiguration IP未設定、APIPA、設定誤り
3. ゲートウェイ疎通 Test-Connection ゲートウェイ設定誤り、ルーター障害
4. DNS名前解決 Resolve-DnsName DNSサーバー設定誤り、DNSサーバー障害
5. ポート疎通 Test-NetConnection -Port ファイアウォール、サービス未起動

この順序で確認していくと、どの段階(レイヤー)で問題が発生しているかを効率的に特定できます。下位の確認が通っているのに上位で失敗する場合は、そのレイヤーに問題があると判断できます。

6.9.3 よくあるエラーと対処法

症状 考えられる原因 対処法
すべてのPingが「TimedOut」 ネットワーク未接続、ファイアウォールでICMPブロック アダプター状態の確認、ファイアウォール設定の確認
IPアドレスが169.254.x.x DHCPサーバーから取得失敗 DHCPサーバーの確認、または静的IP設定に切り替え
ゲートウェイにPingは通るが外部に出られない ルーターの設定不備、ISP側の障害 ルーター設定の確認、ISPへの問い合わせ
IPアドレスでアクセスできるがドメイン名では不可 DNS設定の誤り、DNSサーバー障害 Get-DnsClientServerAddressで設定確認、DNSサーバー変更
特定のポートだけ接続不可 ファイアウォールでブロック、サービス未起動 Get-NetFirewallRuleで確認(次回学習)、サービス状態の確認
Resolve-DnsNameでタイムアウト DNSサーバーが応答しない DNSサーバーのIPアドレスにPing、別のDNSサーバーを設定

6.10 実践:ネットワーク設定の確認スクリプト

ここまで学んだコマンドレットを組み合わせて、ネットワーク設定を一括確認するスクリプトを作成してみましょう。このスクリプトは、トラブルシューティングの最初の一歩として役立ちます。

[実行環境: PowerShell 7.4 (管理者)]

# ネットワーク設定の一括確認スクリプト
Write-Host "========================================" -ForegroundColor Cyan
Write-Host " ネットワーク設定確認レポート" -ForegroundColor Cyan
Write-Host " 実行日時: $(Get-Date -Format 'yyyy-MM-dd HH:mm:ss')" -ForegroundColor Cyan
Write-Host "========================================" -ForegroundColor Cyan

# 1. ネットワークアダプターの状態
Write-Host "`n--- 1. ネットワークアダプター ---" -ForegroundColor Yellow
Get-NetAdapter | 
    Where-Object { $_.Status -eq "Up" } |
    Select-Object -Property Name, Status, MacAddress, LinkSpeed |
    Format-Table -AutoSize

# 2. IPアドレス設定
Write-Host "--- 2. IPv4アドレス設定 ---" -ForegroundColor Yellow
Get-NetIPAddress -AddressFamily IPv4 |
    Where-Object { $_.InterfaceAlias -notlike "Loopback*" } |
    Select-Object -Property InterfaceAlias, IPAddress, PrefixLength, PrefixOrigin |
    Format-Table -AutoSize

# 3. デフォルトゲートウェイ
Write-Host "--- 3. デフォルトゲートウェイ ---" -ForegroundColor Yellow
$gw = (Get-NetIPConfiguration).IPv4DefaultGateway
if ($gw) {
    Write-Host "  ゲートウェイ: $($gw.NextHop)"
    $gwResult = Test-Connection -TargetName $gw.NextHop -Count 1 -Quiet
    Write-Host "  疎通確認: $gwResult" -ForegroundColor $(if ($gwResult) { "Green" } else { "Red" })
} else {
    Write-Host "  デフォルトゲートウェイが設定されていません" -ForegroundColor Red
}

# 4. DNSサーバー
Write-Host "`n--- 4. DNSサーバー ---" -ForegroundColor Yellow
Get-DnsClientServerAddress -AddressFamily IPv4 |
    Where-Object { $_.ServerAddresses.Count -gt 0 } |
    Select-Object -Property InterfaceAlias, ServerAddresses |
    Format-Table -AutoSize

# 5. DNS名前解決テスト
Write-Host "--- 5. DNS名前解決テスト ---" -ForegroundColor Yellow
try {
    $dnsResult = Resolve-DnsName -Name "www.google.com" -Type A -ErrorAction Stop
    Write-Host "  www.google.com → $($dnsResult[0].IPAddress)" -ForegroundColor Green
} catch {
    Write-Host "  DNS名前解決に失敗しました: $_" -ForegroundColor Red
}

# 6. 外部接続テスト
Write-Host "`n--- 6. 外部接続テスト ---" -ForegroundColor Yellow
$targets = @("8.8.8.8", "1.1.1.1")
foreach ($target in $targets) {
    $result = Test-Connection -TargetName $target -Count 1 -Quiet
    $color = if ($result) { "Green" } else { "Red" }
    Write-Host "  $target : $result" -ForegroundColor $color
}

Write-Host "`n========================================" -ForegroundColor Cyan
Write-Host " 確認完了" -ForegroundColor Cyan
Write-Host "========================================" -ForegroundColor Cyan

実行結果の例

========================================
 ネットワーク設定確認レポート
 実行日時: 2026-02-08 14:30:00
========================================

--- 1. ネットワークアダプター ---
Name      Status MacAddress        LinkSpeed
----      ------ ----------        ---------
Ethernet0 Up     00-50-56-A1-2B-3C 10 Gbps

--- 2. IPv4アドレス設定 ---
InterfaceAlias IPAddress      PrefixLength PrefixOrigin
-------------- ---------      ------------ ------------
Ethernet0      198.51.100.10            23 Manual

--- 3. デフォルトゲートウェイ ---
  ゲートウェイ: 198.51.100.1
  疎通確認: True

--- 4. DNSサーバー ---
InterfaceAlias ServerAddresses
-------------- ---------------
Ethernet0      {8.8.8.8, 8.8.4.4}

--- 5. DNS名前解決テスト ---
  www.google.com → 142.250.207.100

--- 6. 外部接続テスト ---
  8.8.8.8 : True
  1.1.1.1 : True

========================================
 確認完了
========================================

学習のポイント: このスクリプトでは、これまで学んだコマンドレットを組み合わせて実用的なツールを作成しています。第4回で学んだ変数、条件分岐、ループ処理が活用されていることにも注目してください。実務では、このようなスクリプトをあらかじめ用意しておくことで、トラブル発生時に素早く状況を把握できます。

6.11 まとめ

第6回では、ネットワーク設定の基礎について学びました。ここで学んだ内容を振り返りましょう。

  • TCP/IPの基礎知識
    • IPアドレスはネットワーク上のコンピュータの「住所」で、IPv4は32ビット(4オクテット)で構成される
    • プライベートアドレス(10.x.x.x、172.16-31.x.x、192.168.x.x)とパブリックアドレスの違い
    • サブネットマスクはネットワーク部とホスト部の境界を定め、CIDR表記(/24等)で記述できる
    • デフォルトゲートウェイは異なるネットワークへの「出口」となるルーター
  • ネットワーク設定の確認
    • Get-NetAdapterでアダプターの状態(Up/Down)を確認
    • Get-NetIPConfigurationでIP設定の概要を一覧表示
    • Get-NetIPAddressで詳細なIPアドレス情報を取得
    • Get-NetRouteでルーティングテーブルを確認
  • IPアドレスの設定
    • New-NetIPAddressで静的IPアドレスを設定、Remove-NetIPAddressで削除
    • VPS環境でのIP変更はRDP接続断のリスクがあるため要注意
  • DNS設定
    • DNSはドメイン名をIPアドレスに変換する仕組み
    • Get-DnsClientServerAddressで設定確認、Set-DnsClientServerAddressで変更
    • Clear-DnsClientCacheでDNSキャッシュをクリア
  • 接続テスト
    • Test-Connection-TargetName)でICMP疎通確認
    • Test-NetConnection-Port-TraceRoute)でポート疎通・経路確認
    • Resolve-DnsNameでDNS名前解決の確認
  • トラブルシューティング
    • アダプター状態 → IP設定 → ゲートウェイ疎通 → DNS名前解決 → ポート疎通の順で切り分け
    • 下位レイヤーから順番に確認することで、効率的に原因を特定

ネットワーク設定はサーバー管理の中核をなす知識です。今回学んだコマンドレットとトラブルシューティング手順は、日常的な運用でも頻繁に使うことになります。特にTest-ConnectionTest-NetConnectionResolve-DnsNameの3つは、ネットワーク障害時の必須ツールとして覚えておいてください。

6.12 次回予告

第7回では「Windows Defender Firewall ― ネットワークセキュリティの第一歩」と題して、ファイアウォールの役割と仕組み、受信規則・送信規則の確認と作成、RDPやHTTPなど実務で必要なポート開放の設定方法を学びます。今回学んだネットワークの基礎知識を土台に、サーバーのセキュリティを強化する方法を習得しましょう。

6.13 参考リンク

Windows Server