目次
前回の記事では、PowerShellのNetTCPIPモジュールのコマンドレットを用いてルートテーブル設定について確認してみました。
本記事ではNetTCPIPモジュールコマンドを利用してルートテーブルを編集してみます。
今回ようした環境について
今回用意した環境について
Windows_Server-2025-Japanese-Full-Base-2025.03.12(ami-056bc012e638ed630)
PowerShell 5.1.26100.2161
下記画像のような構成でPrivate subnetにWindows Serverを構築し、こちらにログインして確認していきます。
Privateサブネットに紐づくルートテーブル
今回編集するルートテーブル
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.*
169.254.169.*でいくつかルートが登録されています。
169.254.169.253はAmazonProvidedDNSとなっており、こちらを利用すると名前解決ができます。
今回は、このルートを一度削除し、ダミーのNextHopで登録して疎通できなくしてみます。
調整前にAmazonProvidedDNS(169.254.169.254)で名前解決してみる
ここではPowerShellのResolve-DnsNameコマンドレットを利用して名前解決を試してみます。
Resolve-DnsName -Type A -Name bing.com -Server 169.254.169.253
上記画像では、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
Remove-NetRouteで削除し、New-NetRouteでNextHopをダミーで追加し名前解決ができなくなった事を確認しています。
コマンド実行時の注意点としては、New-NetRouteでPolicyStoreを指定しない場合。
ActiveStoreだけではなく、PersitentStoreにも追加してしまうので、ルート設定がStatic routeとして再起動しても残るので。
ルートを追加する際は、スコープを意識して追加しましょう。
余談 Set-NetRouteではNextHopを変更できない?
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にオプションつけないと色々と消そうとダイアログだして来たり理解してから使わないと失敗する事もあるかも?
- カテゴリー
- タグ