結論
NLBのターゲット先にオンプレサーバを指定するときは、UDPプロトコルを使用することができないです。
Network Load Balancer はインスタンスターゲットタイプをサポートしており、AWS CloudFormation テンプレートで使用できます (IP ターゲットタイプと PrivateLink は現在サポートされていません)。
例えば、オンプレ環境にあるWindowsのファイルサーバをターゲットグループに指定するときは、137~139のUDPプロトコルを含めているかもしれませんが、それができないようです。
※最近のWindows Sever OS(2016以降)であれば445のTCPプロトコルさえあれば十分です。
ただ、それ以前のOSの場合は注意が必要そうですね。
システム構成
ターゲット先は、Windows Server2016で、そこで共有フォルダを作って接続元からアクセスできるようにする想定です。
※今回は接続しません。あくまで、UDPプロトコルがサポートされていないことを確認するのみです。
接続元と接続先のVPCはそれぞれ別AWSアカウントを使用します。
とりあえずやってみた
VPCやEC2は既に構築済みで、ターゲットグループの作成から始めます。
プロトコルは「UDP」で、ポート番号は「137~139」を指定します。
ポート番号は1つしか指定できないので、ターゲットグループを複数作成する必要があります。
ターゲット先のEC2に割り当てられているプライベートIPアドレスを入力してターゲットを追加します。
他のポート番号分も繰り返して作成する。
ポート137~139のターゲットグループを作成することができました。
次はNLBを作成していきます。
今回はPrivateLinkで接続する想定なので、スキームは「内部」にしておきます。
リスナーは各ポート番号分と、先ほど作成したターゲットグループを紐付けてロードバランサを作成していきます。
VPCエンドポイントサービスを作成してNLBと紐づけていきます。
ここでどうやらエラーが発生しましたね。
「指定したNLBにはUDPリスナーが存在しています。PrivateLinkではUDPはサポートしていません」ってことですね。
PrivateLink作成の段階でエラーが発生することができたのでめでたしめでたし!