[DevOps] AWS NAT Gateway

maketheworldwiseΒ·2021λ…„ 9μ›” 5일
0
post-custom-banner

🧐 Today I Learned (TIL)

  • AWS NAT Gateway

AWS NAT Gateway

AWS NAT Gateway

이전 ν¬μŠ€νŠΈμ—μ„œ 'Bastion Host'둜 'Private Subnet'의 λ¦¬μ†ŒμŠ€μ— μ ‘μ†ν•˜λŠ” 것을 μ„±κ³΅ν–ˆμ§€λ§Œ μ΄λŠ” κ²°κ΅­ μ™ΈλΆ€μ—μ„œ λ‚΄λΆ€λ‘œμ˜ 과정일뿐 λ‚΄λΆ€μ—μ„œ μ™ΈλΆ€λ‘œμ˜ 과정이 λˆ„λ½λ˜μ–΄μžˆλ‹€.

λ‚΄λΆ€μ—μ„œ μ™ΈλΆ€ μΈν„°λ„·κ³Όμ˜ 톡신이 ν•„μš”ν•œ μ΄μœ λŠ” 이전에 μž‘μ„±ν•œ λ‚΄μš©κ³Ό 같이 'Private Subnet'μ—μ„œ ν•„μš”ν•œ μ†Œν”„νŠΈμ›¨μ–΄μ˜ μ—…λ°μ΄νŠΈλ‚˜ μ„€μΉ˜λ₯Ό ν•˜κΈ° μœ„ν•΄μ„œμ˜€λ‹€.

μ‹€μ œλ‘œ 이전 포슀트 ν™˜κ²½μ˜ 'Private Subnet'에 μƒμ„±λœ ec2에 μ ‘μ†ν•œ μƒνƒœμ—μ„œ 'mysql'을 μ„€μΉ˜λ₯Ό 해보면 μ„€μΉ˜κ°€ λ˜μ§€ μ•ŠλŠ” 것을 확인할 수 μžˆλ‹€.

sudo yum install mysql

ν•˜μ§€λ§Œ μ΄λŸ¬ν•œ λ¬Έμ œμ μ€ 'NAT Gateway'둜 μ†μ‰½κ²Œ 해결이 κ°€λŠ₯ν•˜λ‹€. μ—¬κΈ°μ„œ κ°€μž₯ μ€‘μš”ν•œ 점은 'NAT Gateway'λŠ” λ°˜λ“œμ‹œ 'Public Subnet' μ˜μ—­μ— μœ„μΉ˜ν•΄μ•Όν•œλ‹€λŠ” 점이닀.

이 ν›„ 'Private Subnet'의 λΌμš°νŒ… ν…Œμ΄λΈ”μ„ μˆ˜μ •μ„ ν•΄μ£Όμ–΄μ•Ό μ›ν•˜λŠ” κ²°κ³Όλ₯Ό 얻을 수 μžˆλ‹€.

AWS NAT Instance

'NAT Instance'λŠ” 말 κ·Έλž˜λ„ μΈμŠ€ν„΄μŠ€λ₯Ό NAT둜 μ‚¬μš©ν•œλ‹€λŠ” μ˜λ―Έλ‹€. 이전 ν¬μŠ€νŠΈμ—μ„œ κ΅¬μ„±ν•œ 'Bastion Host'에 'NAT Gateway'의 역할을 μΆ”κ°€ν•œλ‹€λŠ” κ°œλ…μœΌλ‘œ μ΄ν•΄ν•˜λ©΄ 쉽닀.

κ°œμΈμ μœΌλ‘œλŠ” 'NAT Instance' 보닀 'NAT Gateway'λ₯Ό 더 μΆ”μ²œν•œλ‹€. κ°€μž₯ 큰 μ΄μœ λŠ” 관리 ν¬μΈνŠΈμ™€ μ†μ‰¬μš΄ 섀정이닀.

'NAT Instance'λŠ” μ‚¬μš©μžκ°€ 직접 관리λ₯Ό ν•΄μ£Όμ–΄μ•Ό ν•˜λ©° μ„€μΉ˜ 과정이 λ³΅μž‘ν•˜κΈ°μ— μΆ”μ²œν•˜μ§€λŠ” μ•ŠλŠ”λ‹€. λ˜ν•œ μΈμŠ€ν„΄μŠ€μ˜ 사양에 따라 단일 병λͺ© μ§€μ μœΌλ‘œ μž₯μ• κ°€ λ°œμƒν•  수 있기 λ•Œλ¬Έμ— 적극적으둜 'NAT Gateway' μ‚¬μš©μ„ ꢌμž₯ν•˜κ³  μ‹Άλ‹€.

μ„€μ • 과정은 λ‹€μŒκ³Ό κ°™λ‹€.

  • μΈμŠ€ν„΄μŠ€ > λ„€νŠΈμ›Œν‚Ή > μ†ŒμŠ€/λŒ€μƒ 확인 λΉ„ν™œμ„±ν™”
    각각의 EC2 μΈμŠ€ν„΄μŠ€λŠ” 기본적으둜 μ†ŒμŠ€/λŒ€μƒ 확인을 μˆ˜ν–‰ν•œλ‹€. μ΄λŠ” μΈμŠ€ν„΄μŠ€κ°€ λ³΄λ‚΄κ±°λ‚˜ λ°›λŠ” νŠΈλž˜ν”½μ˜ μ†ŒμŠ€ λ˜λŠ” λŒ€μƒμ΄μ–΄μ•Ό ν•œλ‹€λŠ” μ˜λ―Έλ‹€.

    'NAT Instance'λŠ” μ†ŒμŠ€ λ˜λŠ” λŒ€μƒμ΄ κ·Έ μžμ‹ μ΄ 아닐 λ•Œ νŠΈλž˜ν”½μ„ 보내고 받을 수 μžˆμ–΄μ•Ό ν•˜κΈ° λ•Œλ¬Έμ— ν•΄λ‹Ή ν•­λͺ©μ„ λΉ„ν™œμ„±ν™”ν•΄μ£Όμ–΄μ•Ό ν•œλ‹€. (λΉ„ν™œμ„±ν™”κ°€ μ•ˆλ  경우 μ—°κ²°λœ λ„€νŠΈμ›Œν¬ μΈν„°νŽ˜μ΄μŠ€λ„ λΉ„ν™œμ„±ν™”κ°€ λ˜μ–΄ μžˆλŠ”μ§€ 확인 ν•„μš”)

  • λΌμš°νŒ… μ„€μ •
    'NAT Gateway' μ„€μ •κ³Ό λ™μΌν•˜λ‹€.

  • ν¬μ›Œλ”©, λ§€μŠ€μ»€λ ˆμ΄λ”© μ„€μ •
    'NAT Instance'μ—μ„œ νŒ¨ν‚· ν¬μ›Œλ”©κ³Ό λ§€μŠ€μ»€λ ˆμ΄λ”©μ„ μ„€μ •ν•΄μ£Όμ–΄μ•Ό 'Private Subnet'μ—μ„œ μΈν„°λ„·μœΌλ‘œμ˜ 톡신이 κ°€λŠ₯ν•˜λ‹€.

# ν¬μ›Œλ”©
sudo sysctl net.ipv4.ip_forward=1

# λ§€μŠ€μ»€λ ˆμ΄λ”©
sudo iptables -t nata -A POSTROUTING -o eth0 -s [Private Subnet IP λŒ€μ—­] -j MASQUERADE

# κ·œμΉ™ 확인
sudo iptables -t nat -v -L POSTROUTING -n --line-number

μ‚¬μš©ν•΄λ³΄μ§€λŠ” μ•Šμ•˜μœΌλ‚˜ AWSμ—μ„œλŠ” NAT Instance둜 μž‘λ™ν•˜λ„λ‘ κ΅¬μ„±λœ Amazon Linux AMI('amzn-ami-vpc-nat*')λ₯Ό μ œκ³΅ν•˜λŠ”κ±Έλ‘œ μ•Œκ³  μžˆλ‹€. 이 AMIλ₯Ό μ‚¬μš©ν•˜λ©΄ μžλ™μœΌλ‘œ NAT ꡬ성을 ν•΄μ€€λ‹€κ³  ν•œλ‹€.


πŸ“š μ°Έκ³ 

profile
세상을 ν˜„λͺ…ν•˜κ²Œ μ΄λŒμ–΄κ°ˆ λ‚˜μ˜ μ„±μž₯ 일기 πŸ““
post-custom-banner

0개의 λŒ“κΈ€