Alternatif NAT Gateway? AWS NAT Instance

Riski Cahyadi
3 min readJul 30, 2021

--

Ketika kita melakukan design infrastructure pada AWS kita akan menemukan beberapa pendekatan, salah satu best practice yang paling sering ditemukan saat melakukan design infrastructure di AWS yaitu 3-tier Layer.

Pada umumnya akan ada 3 bagian Subnet yaitu Public Subnet, Private Subnet dan Intra Subnet.

Resource yang akan ditempatkan di Public Subnet merupakan resource yang publicly accessible dan Private Subnet untuk resource yang mana diperuntukkan hanya bisa diakses oleh resource dalam network yang sama.

NAT Devices menjadi jembatan resource di Private Subnet untuk dapat terhubung ke Outgoing Internet. Ada 2 opsi yang tersedia untuk NAT Devices di AWS:

  1. NAT Gateway
  2. NAT Instance

Salah satu perbedaan antara NAT Gateway dengan NAT Instance adalah untuk NAT Gateway sudah berupa component of services yang di managed oleh AWS, sedangkan NAT Instance yaitu berupa instance yang difungsikan sebagai NAT Devices dan dimanage oleh user via script/commands.

Getting Started

Overview Architecture

Arsitektur yang digunakan yaitu terdiri dari beberapa resource, yaitu:

  • 1 Public Subnet dan Private Subnet
  • 2 Instance yang digunakan sebagai NAT Instance dan Private Instance untuk testing.

Build With

Tools yang utama yang digunakan dalam membuild environment yaitu Packer dan Terraform.

Packer digunakan sebagai tools untuk build AMI yang nantinya digunakan sebagai NAT Instance.

Terraform digunakan sebagai tools untuk build infrastructure dan juga deployment instance menggunakan AMI yang sebelumnya di build oleh Packer.

Building NAT Instance AMI with Packer

Packer digunakan untuk build AMI yang nantinya akan digunakan ketika deploy infrastructure. Untuk build dilakukan menggunakan provisioner shell.

File nat-instance.pkr.hcl berisikan packer script untuk melakukan build image untuk NAT Instance, sedangkan secret.pkr.hcl untuk men-define access dan secret key aws yang akan digunakan untuk communicate dengan AWS.

Lakukan build di folder tempat file tersebut denga run command:

$ packer build .

Setelah selesai nanti akan terlihat AMI yang sudah kita build menggunakan packer di tab AMI.

Deploying NAT Instance with Terraform

Setelah preparation untuk instance image sudah selesai, baru dapat dilakukan deployment ke existing infrastructure yang sudah kita miliki.

Dalam script Terraform terdapat beberapa bagian yaitu elastic IP digunakan pada nat instance tersebut dan juga perlu ditambahkan routing table di private subnet agar traffic outgoing to internet diarahkan melewati Nat Instance. Untuk instance source dest check juga perlu di stop.

Setelah resource instance dan routing sudah di define, diperlukan juga security group dengan rules seperti gambar dibawah:

Berikut completed script terraform untuk NAT Instance beserta security group.

Step terakhir tinggal dilakukan apply terraform script yang sudah dibuat ke existing infrastructure, lakukan apply dengan command:

$ terraform apply

Setelah NAT instance berhasil di deploy tinggal dilakukan testing di private instance, untuk test bisa menggunakan ping atau curl ke url apa saja.

Conclusion

Penggunaan NAT Instance bisa menjadi opsi selain NAT Gateway untuk kita mem-build 3 tier infrastructure. Ada beberapa pro-cons yang perlu kita perhatikan ketika memilih NAT Instance sebagai NAT Devices dalam infrastruktur kita.

Hal utama yang didapat user yaitu bisa Cost Saving dengan menggunakan NAT Instance dibanding dengan NAT Gateway tetapi overhead seperti patching dan juga troubleshoot di dalam instance menjadi tanggung jawab user. Hal-hal tersebut yang perlu di taking note ketika kita melakukan planning dan menghitung Total Cost Ownership.

Masih ada beberapa hal yang bisa di improve dari script packer diatas contohnya interface yang di define secara static yaitu ens5 sedangkan ada kemungkinan nama interface tidak sama.

Sign up to discover human stories that deepen your understanding of the world.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

--

--

No responses yet

Write a response