Pada arsitektur computer network/jaringan komputer secara umumnya terbagi menjadi public segment/subnet dan private segment/subnet. Hal ini juga berlaku jika kita memiliki Virtual Private Cloud (VPC) di AWS Cloud.
Tujuan dengan adanya pembagian public dan private subnet adalah selain faktor keamanan, hal ini juga digunakan agar IP Public yang terpakai tidak banyak. Terutama jika ada batasan dari IP Public yang dapat dipinjam atau digunakan.
Beda halnya dengan public subnet yang ter-expose ke public/internet, private subnet tidak ter-expose ke public. Untuk dapat mengakses internet diperlukan adanya bantuan Network Address Translation (NAT). Hal ini dilakukan agar IP Address dari segmen private subnet dapat berinteraksi dengan internet.
Di AWS secara service dan arsitektur NAT terdapat dua metode, yaitu NAT Gateway dan NAT Instance. Secara implementasi NAT Gateway lebih mudah dan singkat untuk diimplementasikan dibanding dengan NAT Instance yang butuh usaha ekstra terkait konfigurasinya.
Namun mungkin jika hanya membutuhkan NAT service yang digunakan untuk development atau staging environment, dan service/server yang akses ke internet tidak terlalu banyak, NAT instance mungkin bisa dijadikan alternatif. Hal ini dimungkinkan karena kita dapat menggunakan EC2 Instance Type dengan tipe yang terkecil sekalipun yang biayanya tidak semahal jika dibandingkan dengan NAT Gateway. Namun jika membutuhkan traffic yang besar dan untuk production yang kritikal, disarankan agar menggunakan NAT Gateway.
Berikut dokumentasi perbandingan NAT Gateway vs NAT instance yang disebutkan di Dokumentasi AWS: Comparing NAT gateways and NAT instances.
Untuk membandingkan pricing atau harga AWS NAT Gateway dan AWS NAT Instance yang menggunakan backend EC2 Instance, dapat membandingkan dari dokumentasi berikut:
Sekian sekilas penjelasan singkat terkait garis besar NAT service yang ada di AWS. Selanjutnya saya akan menjelaskan terkait konfigurasi AWS NAT Instance.
Pada artikel ini, saya akan menjelaskan bagaimana cara konfigurasi NAT Instance di AWS. Topologi yang saya gunakan pada artikel ini adalah membuat 1 VPC dengan 2 subnet. Subnet dipisahkan menjadi public subnet dan private subnet. Nantinya akan menjalankan 1 EC2 Instance yang akan berjalan sebagain NAT Instance dan berjalan di public subnet. Selain itu menjalankan 1 EC2 instance di private subnet untuk memastikan bahwa instance di private subnet bisa terkoneksi ke internet via NAT Instance. Topologinya jika digambarkan sebagai berikut:
Di artikel ini, AWS NAT Instance yang digunakan adalah NAT AMI based on community AMI dengan backend Amazon Linux 2018.03 yang sudah memasuki end of support di 31 Desember 2020. Jika membutuhkan NAT AMI lain, anda juga dapat membuat NAT AMI sendiri mengikuti dokumentasi AWS berikut: NAT instances
Konfigurasi pada artikel ini sepenuhnya menggunakan AWS Web Console dan bukan menggunakan programmatic access atau via AWS CLI.
Berikut langkah-langkah konfigurasi menjalakan NAT service di AWS menggunakan AWS NAT Instance:
-
Jika belum memiliki Virtual Private Cloud (VPC), dapat dimulai dengan membuat VPC. Pada AWS Web Console, masuk ke menu VPC -> Your VPCs. Kemudian tekan tombol Create VPC
-
Masukkan nama VPC dan IPv4 CIDR Block yang akan digunakan. Pada contoh di artikel ini CIDR block yang saya gunakan adalah 192.168.0.0/23 dan tidak menggunakan IPv6
-
Pastikan VPC sudah berhasil terbuat dan tampil di halaman Your VPCs.
-
Kemudian masih di halaman service VPC, masuk ke menu Subnets untuk konfigurasi subnet. Kemudian tekan tombol Create subnet
-
Konfigurasi public subnet. Pada contoh di artikel ini, saya buat public subnet CIDR di segmen 192.168.0.0/24
-
Kemudian konfigurasi private subnet. Di artikel ini, saya gunakan segmen 192.168.1.0/24
-
Pastikan public subnet dan private subnet sudah berhasil terbentuk
-
Langkah selanjutnya adalah membuat Internet Gateway. Di halaman menu VPC, pilih menu Internet Gateway. Kemuduan klik tombol Create internet gateway
-
Konfigurasi dan beri nama internet gateway
-
Setelah internet gateway terbentuk, secara default internet gateway belum terasosiasi dengan VPC manapun (Status Detached). Pada halaman konfigurasi internet gateway, klik tombol drop-down Actions -> kemudian klik Attach to VPC
-
Pilih nama VPC yang akan diasosiasikan ke internet gateway
-
Pastikan internet gateway sudah berhasil terkonfigurasi
-
Langkah selanjutnya adalah konfigurasi Route Table. Di menu VPC, masuk ke menu Route Tables -> kemudian klik tombol Create Route Table
-
Route table yang pertama di konfigurasi adalah route table untuk public subnet. Beri nama untuk route table tersebut, kemudian asosiasikan ke VPC
-
Setelah public route table terbentuk, asosiasikan public subnet ke route table. Klik nama route table -> kemudian pilih sub-menu Subnet Associations -> kemudian klik tombol Edit subnet associations
-
Pilih segmen public subnet
-
Berikutnya adalah tambahkan default route ke public route table. Klik nama public route table -> kemudian pilih sub-menu Routes -> kemudian klik tombol Edit routes
-
Tambahkan default route 0.0.0.0/0 dan asosiasikan default route ke internet gateway yang sebelumnya sudah dibuat
-
Berikutnya adalah membuat security group untuk NAT instance dan private segment/subnet. Masuk ke menu service EC2 -> Arahkan ke bagian Network & Security -> Pilih Security Groups
-
Konfigurasi security group yang akan digunakan oleh NAT Instance. Pada contoh di artikel ini saya buat agar incoming port yang diizinkan masuk dari public adalah SSH, HTTP dan HTTPS. Kemudian untuk packet ICMP hanya dari internal VPC
-
Selanjutnya konfigurasi security group yang nantinya akan digunakan oleh EC2 yang dijalankan di private subnet. Pada contoh di artikel ini, saya izinkan port SSH, HTTP, HTTPS dan ICMP namun semuanya hanya dapat diakses dari internal VPC
-
Langkah selanjutnya adalah menjalankan NAT Instance. Di halaman EC2 service, masuk ke bagian Instances -> klik menu Instances. Kemudian klik tombol Launch Instances
-
Pada bagian pemilihan AMI, pilih menu Community AMI dan pada search bar ketik nat. Nantinya akan tampil Amazon Linux NAT AMI. Pilih AMI tersebut
-
Pada bagian instance type, silahkan pilih sesuai kebutuhan. Pada contoh di artikel ini, saya pilih tipe terkecil yaitu t2.micro
-
Selanjutnya konfigurasi instance details. Pada baris network, pilih VPC yang sudah dikonfigurasi. Kemudian pada baris subnet, pilih public subnet dan pada bagian auto-assign public IP dapat dipilih enable
-
Selanjutnya adalah memilih storage. Pada contoh di artikel ini saya biarkan menjadi default
-
Langkah berikutnya adalah optional, di artikel ini saya buat tag dengan key nama instance
-
Selanjutnya konfigurasi security group. Pilih security group untuk NAT instance yang sudah dikonfigurasi sebelumnya
-
Jika ada muncul pesan Boot from General Purpose (SSD). Dapat dilanjutkan dengan memilih "Continue with Magnetic as the boot volume for this instance"
-
Review Instance Launch untuk NAT Instance. Jika sudah sesuai klik tombol Launch
-
Pilih Key Pair yang akan digunakan. Jika sudah pernah membuat Key Pair, bisa menggunakan Key Pair tersebut. Jika belum, bisa membuat Key Pair baru. Kemudian klik Launch Instance
-
Selanjutnya akan diarahkan ke halaman Launch Status. Silahkan lanjutkan pengecekan NAT Instance dengan klik tombol View Instances
-
Pastikan NAT Instance sudah berjalan (Running) dan Status Check sudah passed untuk kesemua pengecekan
-
Langkah berikutnya adalah Stop Source Destination Check untuk NAT Instance. Klik nama NAT Instance -> kemudian klik drop-down menu Actions -> pilih Networking -> pilih Change source/destination check
-
Pilih Stop di bagian Source / destination checking
-
Selanjutnya adalah mengasosiasikan NAT Instance ke Main Route Table di VPC. Masuk ke halaman service VPC -> pilih menu Route Tables -> pilih Main Route Table untuk VPC -> kemudian klik sub-menu Subnet Associations -> klik tombol Edit subnet associations
-
Pilih segmen private subnet
-
Langkah berikutnya adalah membuat default route untuk Main Route Table. Pilih Main Route Table -> klik sub-menu Routes -> klik tombol Edit routes
-
Tambahkan default route 0.0.0.0/0 dan asosiasikan ke NAT Instance
-
Selanjutnya adalah membuat 1 EC2 instance yang akan dijalankan di private subnet. Tujuannya adalah untuk pengujian bahwa Instance di private subnet sudah dapat mengakses internet via NAT Instance. Kembali ke halaman EC2 service, masuk ke bagian Instances -> klik menu Instances. Kemudian klik tombol Launch Instances. Di contoh artikel ini saya menggunakan AMI Ubuntu Server 20.04
-
Konfigurasi instance type. Di contoh artikel ini saya menggunakan t2.micro
-
Pada konfigurasi instance details. Pilih VPC yang sudah dikonfigurasi dan pada bagian subnet pilih private subnet
-
Konfigurasi storage yang digunakan oleh EC2 Instance. Pada contoh ini saya biarkan menjadi default
-
Kemudian jika diperlukan beri tag untuk Instance. Di contoh ini saya berikan key nama instance
-
Pada konfigurasi security group. Pilih security group untuk private subnet
-
Review instance launch. Jika sudah sesuai klik tombol Launch
-
Pilih key pair yang akan digunakan oleh instance. Jika sudah sesuai klik Launch Instance
-
Selanjutnya akan diarahkan ke halaman Launch Status. Silahkan lanjutkan dengan klik tombol View Instances
-
Pastikan private instance sudah berjalan (Running) dan Status Check sudah passed. Klik nama Instance -> kemudian klik sub-menu Details -> cek private IP address yang digunakan oleh instance
-
Pastikan dari public/NAT Instance sudah dapat ping ke IP tersebut
-
Jika key pair yang dapat digunakan untuk akses ke EC2 instance belum tersimpan. Silahkan upload dan simpan keypair. Jangan lupa untuk merubah privilege file menjadi user read only. Kemudian tes ssh ke ip private instance. Pastikan SSH berhasil
-
Tes akses ke internet dari private instance. Pada contoh ini saya coba simulasikan download dan install nginx. Pastikan akses ke internet berhasil dan instalasi berhasil
Tinggalkan Balasan