はじめに
PowerVSをインターネットと通信させたい場合、まず思いつくのはデフォルトで使えるexternal IPですが、これはPowerVS側でサービス共通のFirewallが設定されており、インバウンド通信でこれ以外のポートを許可したり接続元IPアドレスを絞ることができません。よって、本番用途ではあまり採用されていないと思います。
https://cloud.ibm.com/docs/power-iaas?topic=power-iaas-network-security
本番用途では、要件に合った通信制御を行うために、VPC側にproxyやNAT用のVSIを立ててインターネットと通信する方法がポピュラーかと思います。機能要件はそれで問題なく満たせますが、VSIの構築や維持はユーザーが行う必要がありました。
今回は、VSIの代わりにVPCのNLB(Network Load Balancer)サービスを使うことで、ユーザー作り込みの箇所を極力減らした方法をご紹介します。個々のLPARのOSレイヤーでproxyやNAT gatewayを指定する必要がなく、ネットワークレイヤーで透過的に設定できるのも利点と思います。アウトバウンドもインバウンドも構成可能ですが、この記事ではPowerVSからインターネットへのアウトバウンド通信を実現する構成をご紹介します。
インバウンド通信の構成はこちらに書きましたが、インバウンドの前提としてアウトバウンド用の設定も必要なので、まずは当記事の設定を実施してください。
概要
Docsとしては下記が該当します。
https://cloud.ibm.com/docs/power-iaas?topic=power-iaas-powervs-public-network-setup#inbound-overview
構成のポイントは下記となります。
・VPCサブネットでpublic gatewayを有効化
・VPCに、NLBをrouting modeで作成する(Failsafe policyをBypassに設定するのがポイント)
・VPCのingress routing tableで、Transit Gatewayからのパケットに対し、0.0.0.0/0宛の通信をNLBにルーティングする定義を作成(Transit GatewayにAdvertise)
・ingress tableに0.0.0.0/0を定義するため、Transit GatewayからこのVPCに入ってくるパケットが全てこのルート定義の影響を受けます。専用のVPCを作成した方が分かりやすいと思います。
実際の構成
前提
下記は作成済みとします。
・VPC(概要に書きましたが、0.0.0.0/0のルート定義をするので、他への影響を考え、今回用に作成するのが安全と思います)
・VPCサブネット
・PowerVSワークスペース
・PowerVSサブネット
・LPAR
・Tranit Gateway(VPCとPowerVSワークスペースに接続)
NLBをrouting modeで作成
Load balancer for VPCを作成します。
https://cloud.ibm.com/infrastructure/provision/loadBalancer
Privateタイプで、Enable routing modeを有効にします。DNS typeは今回の構成には影響しないのでどちらでも構いません。作られるNLBのFQDNで使われるドメインがappdomain.cloudで問題なければPublicで良いでしょう(どのみち今回はFQDNは使用しません)。自分が指定したドメインでFQDNを作成したい場合はDNS Serviceをオーダーし、Privateタイプを選択ください。今回はPublicで進めます。

Back-end poolsとFront-end listenersは空のままにします。
Security groupsはデフォルトで進めます。指定したいSecurity Groupsが既にあればそれを選んでも構いません。
NLB(routing mode)には、2つのIPアドレスが付与されます。この後の手順でrouting tableにnext hopとして定義しますが、その際は、1つ目に表示されたIPアドレスを使用してください(下記の例では10.75.0.13)。NLB(routing mode)にはFQDNが付与されますが、routing tableに定義する際は、IPアドレスを直接指定してOKです。
NLB設定
Backend poolを作成します。Failsafe policyを有効にし、Bypassを指定するのがポイントです。メンバーは空のままで構いません。

作成したBackend poolに紐づくFront-end listenerを作成します。
NLBのSecurity Groupsを設定
NLBに設定したSecurity Groupsに、PowerVSからの通信を許可するルールを追加します。
また、NLBからのアウトバウンド通信も許可します。
routing tableを作成
PowerVSワークスペースからTransit Gateway経由でVPCに入ってきたパケットをNLBに渡すためのルーティングテーブルを作成します。Traffic sourceで、Transit Gatewayを指定し、Advertizeを有効にします。
作成したテーブルに、0.0.0.0/0宛のパケットを、NLBのIPアドレスにDeliverする経路情報を追加します。

下記の記載があり、仮にメンテナンスや障害でNLBのActive側IPアドレスが使えなくなっても、routing tableの定義は自動的にstandbyアドレスに書き換わります。
https://cloud.ibm.com/docs/vpc?topic=vpc-nlb-vnf&interface=ui
NLB route mode is designed to be transparent. When a failover occurs, route mode updates all routing rules created under the same VPC with the next_hop of the Standby appliance IP.
Transit Gateway確認
Transit Gatewayに、VPCから0.0.0.0/0の経路情報が広告されていることを確認します。
LPARから確認
LPARからインターネットへの通信が可能になったことを確認します。
以上でPowerVSからインターネットへのアウトバウンドが可能になりました。
インバウンド通信の構成はこちらです。







