はじめに
Netsh ユーティリティの概要と、ネットワーク管理におけるその重要性について簡単に説明します。スクリプトのサポート、リモート実行、トラブルシューティング機能などの主な機能を強調します。
目次
コンテンツの最適化
1. Netsh ユーティリティとは
Netsh (Network Shell) は、ネットワーク設定の構成とトラブルシューティングを行うための強力な Windows コマンド ライン ツールです。ダイナミック リンク ライブラリ (DLL) を介してシステム コンポーネントとやり取りし、次のようなさまざまなコンテキストをサポートします。たとえば、advfirewall, wlanとwinhttp.
2. Netsh コマンドの一般的な構文
netsh [-a AliasFile] [-c Context] [-r RemoteMachine] [-u [Domain\]UserName] [-p Password|*] [Command | -f ScriptFile]
構文パラメーターについて簡単に説明し、その使用例を強調します。
3. Netsh トレースの詳細
トレースの収集:
ネットワーク イベントとパケットを診断のためにキャプチャするには、netsh trace コンテキストを使用します。
- シナリオを表示するコマンド:
netsh trace show scenarios

- 特定のシナリオのプロバイダーを表示するには:
netsh trace show scenario <Scenario name>
重要なパラメーター:
次の主要パラメーターについて詳しく説明します。たとえば、scenario, capture, report, persistent, traceFileなど、例とともに紹介します。
一般的なトレース コマンド:
- トレースを開始する:
netsh trace start scenario=InternetClient capture=yes tracefile=C:\temp\trace.etl
- トレースを停止する:
netsh trace stop
高度なオプション:
次のようなオプションを使った高度なトレースの例を示します。たとえば、maxsize, filemodeとoverwrite.
ETL を CAP に変換する:
ETL ファイルを Wireshark のようなツールで使用できるように変換する方法を説明します。
netsh trace convert input=trace.etl output=trace.cap
4. Netsh によるネットワーク キャプチャのフィルタリング
基本フィルター:
よく使用されるフィルターを強調します。たとえば次のようなものです。
- 特定の IPv4 アドレスとの間のトラフィックをキャプチャする:
IPv4.Address == x.x.x.x
プロトコル固有のフィルター:
- DNS トラフィックをキャプチャする:
DNS
高度なフィルター:
TCP ハンドシェイク パケットのキャプチャなどの例を示します。
TCP.Flags.SYN == 1 AND TCP.Flags.ACK == 0
5. 主要な Netsh コンテキストと使用例
IP 構成:
- 静的 IP を設定する:
netsh interface ip set address "Ethernet" static 10.0.0.5 255.255.255.0 10.0.0.1
Winsock と TCP/IP スタックをリセットする:
- TCP/IP スタックをリセットする:
netsh int ip reset
ファイアウォールの操作:
- ファイアウォール ルールを追加する:
netsh advfirewall firewall add rule name="Allow Ping" dir=in action=allow protocol=icmpv4
WinHTTP プロキシの構成:
- プロキシを設定する:
netsh winhttp set proxy "proxy:8080" "<local>"
ネットワーク キャプチャの分析によく使用される netmon フィルター:
基本フィルター
| フィルター | 目的 |
| IPv4.Address == x.x.x.x | 特定の IPv4 アドレスとの間のトラフィックをキャプチャします。 |
| IPv4.SourceAddress == x.x.x.x | 特定の送信元 IP からのトラフィックをフィルタリングします。 |
| IPv4.DestinationAddress == x.x.x.x | 特定の宛先 IP へのトラフィックをフィルタリングします。 |
| IPv6.Address == xxxx::xxxx | 特定のアドレスとの間の IPv6 トラフィックをフィルタリングします。 |
| TCP.Port == 80 | 特定の TCP ポート上のトラフィックをキャプチャします(例:HTTP の 80)。 |
| UDP.Port == 53 | 特定の UDP ポート上のトラフィックをキャプチャします(例:DNS の 53)。 |
プロトコル固有のフィルター
| フィルター | プロトコル | 説明 |
| DNS | DNS | DNS クエリと応答をキャプチャします。 |
| HTTP | HTTP | HTTP トラフィックをキャプチャします(メソッドでさらにフィルタリングできます)。 |
| TCP | TCP | すべての TCP トラフィックをキャプチャします。 |
| UDP | UDP | すべての UDP トラフィックをキャプチャします。 |
| SMB2 | SMB | SMBv2 ファイル共有トラフィックをキャプチャします。 |
| Kerberos | Kerberos | Kerberos 認証パケットをキャプチャします。 |
| LDAP | LDAP | LDAP クエリ/応答をキャプチャします。 |
会話フィルター
| フィルター | 目的 |
| IPv4.SourceAddress == x.x.x.x AND IPv4.DestinationAddress == y.y.y.y | 2 つの特定のホスト間のトラフィックをフィルタリングします。 |
| TCP.SourcePort == 12345 AND TCP.DestinationPort == 80 | 特定のクライアント/サーバー セッションをフィルタリングします。 |
アプリケーション層フィルター
| フィルター | 例 |
| HTTP.Request.Method == “GET” | GET 要求のみをキャプチャします。 |
| HTTP.Host == “example.com” | 特定のドメインへの HTTP トラフィックをフィルタリングします。 |
| DNS.QryName == “example.com” | 特定のドメインに対する DNS クエリをフィルタリングします。 |
| SMB2.CreateRequest.FileName == “filename.txt” | SMB トラフィックにおけるファイル アクセスをキャプチャします。 |
高度なフィルター
| フィルター | 目的 |
| TCP.Flags.SYN == 1 AND TCP.Flags.ACK == 0 | SYN パケットをキャプチャします(TCP ハンドシェイクの開始)。 |
| TCP.Flags.FIN == 1 | FIN パケットをキャプチャします(TCP セッションの終了)。 |
| TCP.Flags.Reset == 1 | TCP RST パケットをキャプチャします(接続のリセット)。 |
| Frame.Length > 1000 | 1000 バイトを超えるパケットのみをキャプチャします。 |
netsh interface ip set address “Ethernet” static 10.0.0.5 255.255.255.0 10.0.0.1
netsh interface ip set dns “Ethernet” static 1.1.1.1
netsh interface ip set address “Ethernet” dhcp
netsh int ip reset
netsh winsock reset
netsh advfirewall firewall add rule name=”Allow Ping” dir=in action=allow protocol=icmpv4
netsh advfirewall firewall add rule name=”Allow RDP” dir=in action=allow protocol=TCP localport=3389
netsh advfirewall set allprofiles state on
netsh advfirewall export “C:\\backup\\fwconfig.wfw”
netsh winhttp show proxy
netsh winhttp set proxy “proxy:8080” “<local>”
netsh winhttp reset proxy
6. まとめ
Netsh の多用途性をまとめ、読者にもっと多くのコンテキストとコマンドを調べるよう勧めます。詳細は公式 Microsoft ドキュメント.