PowerShellのNetTCPIPでEC2(Windows)のルートテーブルを編集してみる(IPv4)

この記事を書いたメンバー:

SAITO Keita

PowerShellのNetTCPIPでEC2(Windows)のルートテーブルを編集してみる(IPv4)

目次

前回の記事では、PowerShellのNetTCPIPモジュールのコマンドレットを用いてルートテーブル設定について確認してみました。

本記事ではNetTCPIPモジュールコマンドを利用してルートテーブルを編集してみます。

今回ようした環境について

今回用意した環境について
Windows_Server-2025-Japanese-Full-Base-2025.03.12(ami-056bc012e638ed630)
PowerShell 5.1.26100.2161
下記画像のような構成でPrivate subnetにWindows Serverを構築し、こちらにログインして確認していきます。

image.png


Privateサブネットに紐づくルートテーブル

image.png


今回編集するルートテーブル

image.png



ifIndex DestinationPrefix                              NextHop                                  RouteMetric ifMetric PolicyStore
------- -----------------                              -------                                  ----------- -------- -----------
6       255.255.255.255/32                             0.0.0.0                                          256 20       ActiveStore
1       255.255.255.255/32                             0.0.0.0                                          256 75       ActiveStore
6       224.0.0.0/4                                    0.0.0.0                                          256 20       ActiveStore
1       224.0.0.0/4                                    0.0.0.0                                          256 75       ActiveStore
6       169.254.169.254/32                             0.0.0.0                                           20 20       ActiveStore
6       169.254.169.253/32                             0.0.0.0                                           20 20       ActiveStore
6       169.254.169.251/32                             0.0.0.0                                           20 20       ActiveStore
6       169.254.169.250/32                             0.0.0.0                                           20 20       ActiveStore
6       169.254.169.249/32                             0.0.0.0                                           20 20       ActiveStore
6       169.254.169.123/32                             0.0.0.0                                           20 20       ActiveStore
1       127.255.255.255/32                             0.0.0.0                                          256 75       ActiveStore
1       127.0.0.1/32                                   0.0.0.0                                          256 75       ActiveStore
1       127.0.0.0/8                                    0.0.0.0                                          256 75       ActiveStore
6       10.10.10.255/32                                0.0.0.0                                          256 20       ActiveStore
6       10.10.10.7/32                                  0.0.0.0                                          256 20       ActiveStore
6       10.10.10.0/24                                  0.0.0.0                                          256 20       ActiveStore
6       0.0.0.0/0                                      10.10.10.1                                         0 20       ActiveStore

前回に引き続き、このルートテーブルを編集して動きがどうかるか確認してみます。

AmazonProvidedDNS(169.254.169.254)のルートをダミーに変更して疎通できなくしてみる


Get-NetRoute -AddressFamily IPv4 -DestinationPrefix 169.254.169.*

image.png


169.254.169.*でいくつかルートが登録されています。

169.254.169.253はAmazonProvidedDNSとなっており、こちらを利用すると名前解決ができます。

今回は、このルートを一度削除し、ダミーのNextHopで登録して疎通できなくしてみます。

調整前にAmazonProvidedDNS(169.254.169.254)で名前解決してみる

Resolve-DnsName

ここではPowerShellのResolve-DnsNameコマンドレットを利用して名前解決を試してみます。


Resolve-DnsName -Type A -Name bing.com -Server 169.254.169.253

image.png


上記画像では、bing.comの名前解決をAmazonProvidedDNS(169.254.169.254)で実施しています。

削除して追加してみる

ここでは169.254.169.253向けのルートの宛先をダミーなドキュメント用IPに変更してどうなるか確認してみます。


# AmazonProvidedDNSで名前解決
Resolve-DnsName -Type A -Name bing.com -Server 169.254.169.253

# 169.254.169.253のルートテーブルを削除
Remove-NetRoute -DestinationPrefix 169.254.169.253/32

# 169.254.169.253のルートテーブルをNextHopをダミーで登録(ActiveStoreで登録)
New-NetRoute -ifIndex 6 -DestinationPrefix 169.254.169.253/32 -NextHop 203.0.113.0 -PolicyStore ActiveStore

# AmazonProvidedDNSで再度名前解決
Resolve-DnsName -Type A -Name bing.com -Server 169.254.169.253

image.png


Remove-NetRouteで削除し、New-NetRouteでNextHopをダミーで追加し名前解決ができなくなった事を確認しています。

コマンド実行時の注意点としては、New-NetRouteでPolicyStoreを指定しない場合。

ActiveStoreだけではなく、PersitentStoreにも追加してしまうので、ルート設定がStatic routeとして再起動しても残るので。

ルートを追加する際は、スコープを意識して追加しましょう。

余談 Set-NetRouteではNextHopを変更できない?

Set-NetRoute

Set-NetRouteコマンドレットがあるため、こちらでNextHopを変更できそうな気もしますが。

コマンドレットの説明を読むと、DestinationPrefixとNextHopを利用して変更する対象を指定と記載があり、NextHopは対象となるルートを指定するオプションとなります。

このため今回のようにNextHopを書き換えたい場合はRemove-NetRouteで一旦削除してからNew-NetRouteで追加となります。

余談 Remove-NetRouteでオプションを指定しないと?

Remove-NetRouteでオプションを指定せずに実行すると実行すると、確認ダイアログはでてきますが。すべてのルート設定を削除していくか順番に聞いてくるので注意してください。




誤ってデフォルトルート(0.0.0.0/0)を削除するとRDPの接続が切れて、EC2にRDPでログインできなくなります。

なおこのような場合、復旧するには以前投稿した下記ブログ記事を参照のこと。

EC2(Windows)のルートテーブルを変更して疎通できなくなったインスタンスを復旧してみる #AWS - Qiita

総評

PowerShellに慣れていれば、route.exeでルートテーブルの追加削除するよりは、コマンドレットの利用がわかりやすくて便利ですが、Remove-NetRouteにオプションつけないと色々と消そうとダイアログだして来たり理解してから使わないと失敗する事もあるかも?

カテゴリー
タグ

この記事を書いたメンバー

Pick upピックアップ

Search記事を探す

キーワード

SAPシステムや基幹システムのクラウド移行・構築・保守、
DXに関して
お気軽にご相談ください

03-6260-6240 (受付時間 平日9:30〜18:00)