#■NAT Gateway
Private Subnet上に配置したインスタンスのメンテナンス作業で、yum等のInternetを利用したパッケージのインストールやアップデートのメンテナンスを行いたい場合がありますが、Private Subnet内のインスタンスには Public IPを付与することができないため、インターネットにアクセスすることはできません。
NAT Gatewayは、Private Subnetからインターネットへのアクセスを可能にし、インターネットからのインバウンド接続を回避しセキュリティを向上させることができます。
NAT Gatewayは、単一の宛先アドレスおよびポートへの最大約20,000の同時接続をサポートします
#■本検証構成イメージ
Private Subnet で構成された インスタンスがInternetにアクセスできるよう NAT Gateway を構成します
#■NAT Gateway作成
##●1. Service Gateway作成
①設定するVCNから「Service Gateways」を選択し、[Create Service Gateway]ボタンをクリックして、以下項目を設定し、[Create]ボタンをクリック
・NAME:適切な名前を設定し、[Create]をクリックして作成
②NAT Gateway 確認
NAT Gatewayが作成され NAT GatewayのPublic IP Addressを確認
##●2. Route Table 設定
①設定するVCNから、「Route Tables」を選択し、[Edit Route Rules]ボタンをクリックし、以下設定を行い[SAVE]をクリック
・TARGET TYPE:「Nat Gateway」を選択
・Destination CIDR Block:「0.0.0.0/0」 を選択
・TARGET SERVICE GATEWAY:作成した Nat Gateway を選択
##●3. Security Lists(Firewall) 設定
①Private Subnet内のインスタンスがInternetにアクセスできるよう
Egress Rule を追加
・Destination CIDR:0.0.0.0/0
・IP Protocol:All Protocols
#■Nat Gateway疎通確認
##●Nat Gatewayを停止してInternetアクセスできないことを確認
① Nat Gateway停止
・Nat Gateway画面で対象となるNat Gatewayを選択して、[Block Traffic]ボタンをクリック
②Internetアクセス不可能確認
・Public DNS(8.8.8.8) にpingを行いInternetアクセスできないことを確認
[root@nat-test-inst01 opc]# ping 8.8.8.8 -c 3
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
--- 8.8.8.8 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 2086ms
##●Nat Gatewayを起動させてInternetアクセスできることを確認
① Nat Gateway起動
・Nat Gateway画面で対象となるNat Gatewayを選択して、[Allow Traffic]ボタンをクリック
これでNat Gateway 経由で インターネットへアクセスできるようになります
②Internetアクセス可能確認
・Public DNS(8.8.8.8) にpingを行いInternetアクセスできることを確認
[root@nat-test-inst01 opc]# ping 8.8.8.8 -c 3
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=122 time=19.4 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=122 time=1.80 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=122 time=1.84 ms
--- 8.8.8.8 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 1.804/7.689/19.420/8.295 ms
③ yumでパッケージインストールできることを確認
・yum でnmapをインストール
[root@nat-test-inst01 opc]# yum -y install nmap
Loaded plugins: langpacks, ulninfo
ol7_UEKR5 | 2.5 kB 00:00
ol7_addons | 2.5 kB 00:00
ol7_developer | 2.5 kB 00:00
ol7_developer_EPEL | 2.5 kB 00:00
ol7_ksplice | 2.5 kB 00:00
ol7_latest | 3.0 kB 00:00
ol7_optional_latest | 2.5 kB 00:00
ol7_software_collections | 2.5 kB 00:00
Resolving Dependencies
--> Running transaction check
---> Package nmap.x86_64 2:6.40-16.el7 will be installed
--> Processing Dependency: nmap-ncat = 2:6.40-16.el7 for package: 2:nmap-6.40-16.el7.x86_64
--> Running transaction check
---> Package nmap-ncat.x86_64 2:6.40-16.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
nmap x86_64 2:6.40-16.el7 ol7_latest 3.9 M
Installing for dependencies:
nmap-ncat x86_64 2:6.40-16.el7 ol7_latest 205 k
Transaction Summary
================================================================================
Install 1 Package (+1 Dependent package)
Total download size: 4.1 M
Installed size: 17 M
Downloading packages:
(1/2): nmap-ncat-6.40-16.el7.x86_64.rpm | 205 kB 00:00
(2/2): nmap-6.40-16.el7.x86_64.rpm | 3.9 MB 00:00
--------------------------------------------------------------------------------
Total 30 MB/s | 4.1 MB 00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : 2:nmap-ncat-6.40-16.el7.x86_64 1/2
Installing : 2:nmap-6.40-16.el7.x86_64 2/2
Verifying : 2:nmap-ncat-6.40-16.el7.x86_64 1/2
Verifying : 2:nmap-6.40-16.el7.x86_64 2/2
Installed:
nmap.x86_64 2:6.40-16.el7
Dependency Installed:
nmap-ncat.x86_64 2:6.40-16.el7
Complete!
##●Internet上のサーバー(Web01)からtcpdumpでNAT Gateway のPublic IP で通信されることを確認
①OCIのサーバー(nat-test-inst01:10.0.10.2)から Webサーバー(web01:200.200.200.201)のPort 80へnping疎通確認
[root@nat-test-inst01 opc]# nping 200.200.200.201 -p 80 --tcp -c 3
Starting Nping 0.6.40 ( http://nmap.org/nping ) at 2018-12-06 06:44 GMT
SENT (0.0197s) TCP 10.0.10.2:48824 > 200.200.200.201:80 S ttl=64 id=27434 iplen=40 seq=2963548057 win=1480
RCVD (0.1006s) TCP 200.200.200.201:80 > 10.0.10.2:48824 RA ttl=60 id=47231 iplen=40 seq=0 win=0
SENT (1.0198s) TCP 10.0.10.2:48824 > 200.200.200.201:80 S ttl=64 id=27434 iplen=40 seq=2963548057 win=1480
RCVD (1.0815s) TCP 200.200.200.201:80 > 10.0.10.2:48824 RA ttl=60 id=47744 iplen=40 seq=0 win=0
SENT (2.0216s) TCP 10.0.10.2:48824 > 200.200.200.201:80 S ttl=64 id=27434 iplen=40 seq=2963548057 win=1480
RCVD (2.0832s) TCP 200.200.200.201:80 > 10.0.10.2:48824 RA ttl=60 id=47881 iplen=40 seq=0 win=0
Max rtt: 80.819ms | Min rtt: 61.598ms | Avg rtt: 68.010ms
Raw packets sent: 3 (120B) | Rcvd: 3 (126B) | Lost: 0 (0.00%)
Nping done: 1 IP address pinged in 2.10 seconds
②Webサーバー(web01:200.200.200.201)上でtcpdumpを実施してNAT GatewayのPublic IP(100.100.100.101) からアクセスされていることを確認
[root@web01 ~]# tcpdump -i eth0 -nn port 80
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
06:44:45.543662 IP 100.100.100.101.3244 > 200.200.200.201.80: Flags [S], seq 2963548057, win 1480, length 0
06:44:45.543693 IP 200.200.200.201.80 > 100.100.100.101.3244: Flags [R.], seq 0, ack 2963548058, win 0, length 0
06:44:46.524599 IP 100.100.100.101.3244 > 200.200.200.201.80: Flags [S], seq 2963548057, win 1480, length 0
06:44:46.524628 IP 200.200.200.201.80 > 100.100.100.101.3244: Flags [R.], seq 0, ack 1, win 0, length 0
06:44:47.526367 IP 100.100.100.101.3244 > 200.200.200.201.80: Flags [S], seq 2963548057, win 1480, length 0
06:44:47.526395 IP 200.200.200.201.80 > 100.100.100.101.3244: Flags [R.], seq 0, ack 1, win 0, length 0