PowerShell でポートフォワードを設定する

2020/04/18

NAPT の内側にいるゲスト OS を、ホスト OS 経由で他の端末からアクセスするためには、ルーティングテーブルにポートフォワードの情報を登録する。

ポートフォワードを設定する

次のコマンドを流します

Add-NetNatStaticMapping [-NatName] <String> -ExternalIPAddress <String> -ExternalPort <UInt16> -InternalIPAddress <String> -Protocol <Protocol> [-InternalPort <UInt16> ]

ポートフォワードを設定する時には、先に下記情報を把握して下さい。

  • ゲスト OS の IP アドレスとポートフォワードするポート番号
  • ホスト OS が受け付けるポート番号

つまり、ホスト OS の何番のポートで受けて、ゲスト OS の何番のポートにフォワードするかを把握しておきます。

今回は、SharePoint をセミナーで使うことを想定して、手元の仮想環境上の SharePoint をホスト OS にアクセスできる他のマシンからもアクセスできるように追加しました

-ExternalIPAddress は 0.0.0.0 (全てから受け付けるぞぃ) とします。

ポートフォワードを設定する例

# NAT テーブル名を確認
PS> Get-NetNat
Name                             : VmNAPT
ExternalIPInterfaceAddressPrefix :
InternalIPInterfaceAddressPrefix : 10.0.1.0/24
IcmpQueryTimeout                 : 30
TcpEstablishedConnectionTimeout  : 1800
TcpTransientConnectionTimeout    : 120
TcpFilteringBehavior             : AddressDependentFiltering
UdpFilteringBehavior             : AddressDependentFiltering
UdpIdleSessionTimeout            : 120
UdpInboundRefresh                : False
Store                            : Local
Active                           : True

# ホスト OS が受けた他の端末(0.0.0.0)からポート 80 へのアクセスを、ゲスト(10.0.1.10) のポート 80 をフォワードする

PS> Add-NetNatStaticMapping "VmNAPT" -ExternalIPAddress 0.0.0.0 -InternalIPAddress 10.0.1.10 -ExternalPort 80 -Protocol TCP -InternalPort 80

StaticMappingID               : 0
NatName                       : VmNAPT
Protocol                      : TCP
RemoteExternalIPAddressPrefix : 0.0.0.0/0
ExternalIPAddress             : 0.0.0.0
ExternalPort                  : 80
InternalIPAddress             : 10.0.1.10
InternalPort                  : 80
InternalRoutingDomainId       : {00000000-0000-0000-0000-000000000000}
Active                        : True

ポートフォワードを確認する

Get-NetNatStaticMapping [[-NatName] <String[]>]

ポートフォワードを確認する例

PS> Get-NetNatStaticMapping

StaticMappingID               : 0
NatName                       : VmNAPT
Protocol                      : TCP
RemoteExternalIPAddressPrefix : 0.0.0.0/0
ExternalIPAddress             : 0.0.0.0
ExternalPort                  : 80
InternalIPAddress             : 10.0.1.10
InternalPort                  : 80
InternalRoutingDomainId       : {00000000-0000-0000-0000-000000000000}
Active                        : True

ポートフォワードを削除する

Remove-NetNatStaticMapping [[-NatName] <String[]>]

設定したポートフォワードを削除する例

PS> Remove-NetNatStaticMapping "VmNAPT"

確認
この操作を実行しますか?
対象 VmNAPT;0;0 の PolicyStore Local に対して操作 Delete を実行しています
[Y] はい(Y)  [A] すべて続行(A)  [N] いいえ(N)  [L] すべて無視(L)  [S] 中断(S)  [?] ヘルプ (既定値は "Y"): y