5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Direct Link2.0から入ってきた通信に対しVPCでNATを行う

Last updated at Posted at 2021-10-08

はじめに

Direct Link2.0でIBM Cloud環境に接続した後、さらに別の環境にアクセスしたいことがあります。
例えば、Power VSや、Transit Gateway経由で別アカウントにある環境にアクセスするケースを想定しています。

オンプレミスから最終的な接続先(Power VSや、アカウント2のClassic環境)に直接は行けない(それらへのルーティング情報はオンプレには広告されない)ので、アカウント1のVPCで、NATを行います。

オンプレ側で宛先に指定するIPアドレスは、VPCでユーザーが定義可能なセグメントから払い出されたものなので、オンプレ側とのIP重複を避けられます。

image.png

NAT GW用のVSIを作成

実際のNAT処理はVSIで行いますので、オーダーします。今回はCentOSで立てました。

image.png

NAT用サブネットを作成

NAT用IPアドレスとして使うためのサブネットを作成します。

image.png

VPC上でルーティング・テーブル設定

上記で作成したサブネットにアクセスがあった場合、NATゲートウェイとして立てるVSIにルーティングするよう、ルーティング・テーブルに定義します。

今回は、「オンプレからDirect Link経由で入って来てTransit Gatewayに抜けていく通信(とその戻りの通信)」「オンプレからDirect Link経由で入って来てPower VS用のDirect Linkに抜けていく通信(とその戻りの通信)」を制御したいので、トラフィック・タイプはIngress、トラフィック・ソースはDirect LinkとTransit Gatewayを選びます。

image.png

ルーティング・テーブルに経路を作成します。
宛先CIDRは上記で作成したNAT用サブネットです。ネクスト・ホップには、上記で立てたNAT GW用VSIのIPを指定します。もしNAT GWが壊れてVSIを再作成してIPが変わったとしても、このネクスト・ホップを新しいIPに書き換えることで比較的簡単に対応できると思います。(あるいは最初からNAT GWを2台立てておいて、障害時にネクスト・ホップを切り替えるスクリプトを用意しておくとか。)

これで、このNAT用サブネット宛のパケットはNAT GW用VSIにルーティングされるようになりました。

image.png

NAT GW設定

NAT GW用VSIがNATを行えるよう設定します。
まず、VSIのネットワーク・インターフェース定義で、「IP スプーフィングを許可」を有効にします。
image.png

kernel parameterでip_forwardを許可するため、/etc/sysctl.d/nat.confファイルに「net.ipv4.ip_forward = 1」を記述し、sysctlコマンドで反映します。

# cat /etc/sysctl.d/nat.conf
net.ipv4.ip_forward = 1
# sysctl -p /etc/sysctl.d/nat.conf
net.ipv4.ip_forward = 1
#

次に、NAT用のIPアドレスを、NAT GWのVSIのlo interfaceに定義します。
前の手順のルーティング・テーブルの設定により、172.16.50.96/27宛のパケットはこのVSIにルーティングされて来ますので、それを受けられるように、この範囲のIPを付けます。今回は172.16.50.100を付与します。

# ip addr add 172.16.50.100/32 dev lo

firewalldをenable/startします。

# systemctl enable firewalld
# systemctl start firewalld

Destination NAT先として、まずはPower VSに立てたAIXのIP(192.168.150.195)を指定します。(x86とPower VS間のDL2.0は事前に構成済みとします)
AIXからの戻りパケットが戻ってこられるよう、Source NATも設定します。

# firewall-cmd --permanent --direct --add-rule ipv4 nat PREROUTING 0 -d 172.16.50.100 -j DNAT --to-destination 192.168.150.195
success
# firewall-cmd --permanent --direct --add-rule ipv4 nat POSTROUTING 0 -o eth0 -j SNAT --to 172.16.50.100
success
# firewall-cmd --reload
success
# 
設定内容確認
# firewall-cmd --direct --get-all-rules
ipv4 nat PREROUTING 0 -d 172.16.50.100 -j DNAT --to-destination 192.168.150.195
ipv4 nat POSTROUTING 0 -o eth0 -j SNAT --to 172.16.50.100
# 

アクセス確認

オンプレ側から172.16.50.100にアクセスすると、NATされて192.168.150.195のPower VSにアクセスできます。

オンプレ側からNAT用IPにアクセス
# ssh -l root 172.16.50.100 -i ./.ssh/id_key    
14362 unsuccessful login attempts since last login.
Last unsuccessful login: Fri Oct  8 01:27:49 CDT 2021 on ssh from 121.125.73.25
Last login: Tue Oct  5 10:26:58 CDT 2021 on /dev/pts/2 from 172.16.50.100
*******************************************************************************
*                                                                             *
*                                                                             *
*  Welcome to AIX Version 7.2!                                                *
*                                                                             *
*                                                                             *
*  Please see the README file in /usr/lpp/bos for information pertinent to    *
*  this release of the AIX Operating System.                                  *
*                                                                             *
*                                                                             *
*******************************************************************************
# ifconfig -a
(略)
en1: flags=1e084863,814c0<UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST,GROUPRT,64BIT,CHECKSUM_OFFLOAD(ACTIVE),LARGESEND,CHAIN>
        inet 192.168.150.195 netmask 0xffffff00 broadcast 192.168.150.255
         tcp_sendspace 262144 tcp_recvspace 262144 rfc1323 1

NAT GW上でSource NATしているため、AIX上で確認すると、パケットは172.16.50.100から来ています。

オンプレから172.16.50.100にpingしている時のAIX上のtcpdump
# tcpdump -i en1 icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on en1, link-type EN10MB (Ethernet), capture size 262144 bytes
01:31:57.524877 IP 172.16.50.100 > 192.168.150.195: ICMP echo request, id 268, seq 0, length 64
01:31:57.524900 IP 192.168.150.195 > 172.16.50.100: ICMP echo reply, id 268, seq 0, length 64
01:31:58.511213 IP 172.16.50.100 > 192.168.150.195: ICMP echo request, id 268, seq 1, length 64
01:31:58.511236 IP 192.168.150.195 > 172.16.50.100: ICMP echo reply, id 268, seq 1, length 64

Transit Gateway経由で別アカウントのClassic環境と接続

Transit Gateway経由で別アカウント(冒頭の図のアカウント2)にあるサーバー宛の通信も、同様に設定できます。
事前にアカウント2側でTransit Gatewayを作成し、アカウント1のVPCと接続しておきます。あとは上記と同様のNAT設定で、オンプレ -> アカウント1のVPCでNAT -> アカウント2のClassic の通信が実現できます。

image.png

以上です。

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?