「netsh」コマンドでTCP/IPのパラメータを設定する【Windows OS】Tech TIPS

Windows OSでTCP/IPなどのネットワーク関係のパラメータの設定をコマンドプロンプトから行うには「netsh」コマンドが利用できる。IPv4アドレスを設定するには「netsh int ip set addr 〜」、DNSサーバなら「netsh int ip set/add dns 〜」と実行すればよい。netshコマンドを活用すれば、ネットワーク関連の設定をバッチファイルなどで自動実行できる。

» 2023年01月18日 05時00分 公開

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

「Tech TIPS」のインデックス

連載目次

netshでIPアドレスを設定

対象OS:Windows 10/11、Windows Server 2012/2012 R2/2016/2019/2022


Windows OSでIPアドレスをいちいち手動で設定したくない!

 例えばWindows PCを何台もセットアップする際、いちいち「設定」アプリや「コントロールパネル」などのGUIでIPアドレスを設定するのは面倒だ。誤ったIPアドレスを入力する可能性だってある。

 このような場合、コマンドラインでIPアドレスを設定できれば、それをバッチファイルなどに記述して自動実行しやすい。その方がGUIよりずっと効率的だ。

 Windows OSでは「netsh」という標準装備のコマンドラインコマンドで、TCP/IPパラメータの設定や確認が可能だ。本Tech TIPSでは、このnetshコマンドの基本的な使い方とIPv4アドレスなどの具体的な設定方法、注意点を説明する。

netshコマンドの基本的な使い方

 netshコマンドは、ネットワーク全般の制御用のコマンドである。そのため、多くのサブコマンドが用意されている。TCP/IP関連のパラメータは、「interface」コンテキストの中にある、「ipv4」「ipv6」サブコンテキストで設定する。

netshコマンドによるIPアドレス設定は「interface」「ipv4」「ipv6」コンテキストで実行する netshコマンドによるIPアドレス設定は「interface」「ipv4」「ipv6」コンテキストで実行する

 この例では対話的にnetshコマンドを利用している。その一方で、「netsh interface ipv4 ?」のように、netshコマンドにコンテキストやパラメータを付けて、コマンドプロンプト上から直接実行することも可能だ。この方法は、コマンドをバッチファイル化しておいて、簡単に実行させたい場合に便利である。

対話的に操作することなくnetshコマンドを実行する例 対話的に操作することなくnetshコマンドを実行する例

 またnetshのサブコマンドでは省略形が使える。例えば「interface」は「int」、「address」は「addr」、「config」は「conf」、「ipv4」は「ip」といった具合だ。以下では入力が簡単な省略形でコマンドラインを紹介する。

netshで現在のIPv4アドレス設定を確認するには

 現在のネットワークインタフェースの状態を確認するには「netsh int ip show 〜」コマンドが利用できる。IPv4アドレスを確認するには、以下のようにshow confサブコマンドを実行するとよいだろう。

netsh int ip show conf

netshコマンドでネットワークインタフェースのIPv4アドレス設定を確認する

netshコマンドによる現在のIPv4アドレス設定の確認 netshコマンドによる現在のIPv4アドレス設定の確認

netshで固定IPv4アドレスを割り当てるには

 上記のshow confサブコマンドの出力で、「インターフェイスの構成」にある「DHCP 有効:」が「はい」になっている場合は、DHCPによるIPv4アドレスの自動割り当てが有効になっている。これを変更して固定IPv4アドレスを割り当てるには、管理者権限で起動したコマンドプロンプトで、以下のコマンドラインを実行する。

netsh int ip set addr "<インタフェース名>" static <IPv4アドレス> <ネットマスク> <ゲートウェイ> <メトリック>

netshで固定IPv4アドレスを割り当てる例
メトリックは省略可能。

 <インタフェース名>は上の例なら「イーサネット」となる。これは「netsh int ip show int」でも確認できる。

 <メトリック>とは、インタフェースの優先度を表す数値で、同じネットワークに属するインタフェースが複数ある場合、数値の小さい方が優先される。<メトリック>を省略すると、インタフェースのタイプ(速度)に応じて適宜割り当てられる。

netshで固定IPv4アドレスを割り当てる例 netshで固定IPv4アドレスを割り当てる例

 set addrサブコマンドでIPv4アドレスを静的に設定した場合、DNSサーバも自動的に静的設定に切り替わり、結果として未設定の状態に変わってしまうことがある。そのため、必ずDNSサーバも静的かつ明示的に設定する必要がある。その方法はすぐ後で説明する。

 IPv4アドレスをDHCP割り当てに戻すには次のようにする。

netsh int ip set addr "<インタフェース名>" dhcp

netshでIPv4アドレスなどをDHCP割り当てに戻す

netshでDNSサーバの設定を変更するには

 以上の操作でIPv4アドレスは変更されたものの、DNSサーバについては未設定になってしまうので、改めて設定し直す(これも管理者権限でコマンドプロンプトを起動する必要があるので要注意)。

 冗長性を確保するため、一般的にDNSサーバは複数台用意されていることが多い。このような場合、最初の1台は「netsh int ip set dns 〜」コマンドで割り当て、追加の分は「netsh int ip add dns 〜」コマンドで割り当てる。

netsh int ip set dns "<インタフェース名>" static <プライマリDNSサーバのIPv4アドレス> primary
netsh int ip add dns "<インタフェース名>" <セカンダリDNSサーバのIPv4アドレス>

netshでDNSサーバを割り当てる

netshで2台のDNSサーバを割り当てる例 netshで2台のDNSサーバを割り当てる例

 上記の例で1台目(プライマリ。「172.16.1.11」の方)のコマンドラインを実行すると、その時点で2台目の設定は自動的にクリアされ、未設定の状態になる。そのため、2台目(セカンダリ)のDNSサーバの設定が既に済んでいる場合でも、1台目の設定をしたら、必ず2台目のコマンドラインも実行して設定し直す必要がある。

 dnsサブコマンドで指定したIPv4アドレスにDNSサーバが存在しない場合、netshコマンドは「構成されたDNSサーバが正しくないか、存在しません。」というメッセージを返す(ただし、設定自体は正しく実行される)。このメッセージ表示を止めたいなら、上記のコマンドラインの最後に半角スペースと「validate=no」というオプションを加えるとよい。

 DNSサーバの指定をDHCP割り当てに戻すには次のようにする。

netsh int ip set dns "<インタフェース名>" dhcp

DNSサーバの指定をDHCP割り当てに戻す例

 上記のdnsサブコマンドの正式名称は「dnsservers」である。ヘルプなどを参照する際には「dnsservers」で探すこと。

netshでWINSサーバの設定を変更するには

 企業内システムなどでWINSサーバ(Windowsネットワーク固有のコンピュータ名とIPv4アドレスを管理するサーバ)が運用されているなら、以下のようにnetshコマンドでWINSサーバの固定IPアドレスをWindowsクライアントPCに割り当てられる。

netsh int ip set wins "<インタフェース名>" static <プライマリWINSサーバのIPv4アドレス>
netsh int ip add wins "<インタフェース名>" <セカンダリWINSサーバのIPv4アドレス>

netshでWINSサーバを割り当てる

netshで2台のWINSサーバを割り当てる例 netshで2台のWINSサーバを割り当てる例

 WINSサーバの指定をDHCP割り当てに戻すには次のようにする。

netsh int ip set wins "<インタフェース名>" dhcp

netshでWINSサーバの指定をDHCP割り当てに戻す

 上記のwinsサブコマンドの正式名称は「winsservers」である。ヘルプなどを参照する際には「winsservers」で探すこと。

【注意】IPv6アドレスは別途設定する必要がある

 ここまでの解説は全てIPv4アドレスが対象である。

 IPv6アドレスを設定するにはipv6サブコンテキスト、すなわち「netsh int ipv6 〜」というコマンドラインを別途実行する必要があるので注意してほしい。なお、これはゲートウェイやDNSサーバについても当てはまる(IPv6については「Windows管理者のためのIPv6入門」参照のこと)。

IPアドレスの自動設定ならPowerShellも検討の価値あり

 IPアドレスをスクリプトなどで自動設定したい場合、netshコマンド+バッチファイルより、以下のようなPowerShellコマンドレットを活用してスクリプトを組んだ方が簡単かもしれない。言語としてエラー処理や例外処理などが整っているからだ。

●ネットワークインタフェースの選択やプロパティ取得、設定など

●IPアドレスの取得や設定

●DNSサーバのIPアドレスの取得や設定

●ゲートウェイの作成や削除

■関連リンク


■更新履歴

【2023/01/18】Windows 11などの最新OSに対応しました。

【2019/12/18】Windows 10などに対応しました。

【2010/02/05】初版公開。


「Tech TIPS」のインデックス

Tech TIPS

Copyright© Digital Advantage Corp. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。