본문 바로가기

AWS Design Pattern/네트워크 패턴

OnDemand NAT - 유지보수 시 인터넷 설정 변경

ㅁ  풀어야 할 문제

보안 시스템에서는 각 서버의 인터넷 액세스(아웃바운드)를 막아두는 경우가 많다. 그런 경우 OS 패키지 업데이트 등 인터넷에 액세스가 필요한 유지보수 작업을 할 수 없게 된다.

해결 방법으로, 인터넷 접속용 NAT를 준비하여 NAT 경유로 인터넷에 액세스하게 하는 방법이 있다. 각 서버가 인터넷에 접속할 수 있는 조건을 NAT로 조정한다. 그러나 OS 패키지 업데이트 등의 유지보수 작업 기간만 NAT가 필요하고, 그 기간 이외에는 NAT 자원을 거의 사용하지 않아 자원을 낭비하게 된다.

 

ㅁ  해결/패턴

원래 서버와 같은 장비는 영구적으로 계속 이용해야 하는 전제가 있었다. 일시적으로 이용하는 서버를 일시적 요금으로 운영한다는 것은 정말 어려운 일이었다.

그러나 클라우드의 가상 서버는 종량제 형태가 많다. 그래서 NAT를 가상 서버로 구현하고 OS 패키지 업데이트와 같은 유지 보수 작업 시에만 가동하게 해두면 비용 효율이 좋아진다. 또한 클라우드에서는 가상 서버를 가동하고 정지하는 API도 쉽게 사용할 수 있다.  API를 이용해 NAT(가상 서버)의 가동 및 정지를 자동화할 수 있다.

 

ㅁ  구현

클라우드에서 가상 네트워킹을 하는 VPC(가상 프라이빗 클라우드)에는 NAT 인스턴스를 만드는 기능이 있다. 또한, 서브넷 별로 라우팅을 설정하는 기능도 있어 라우팅을 적절하게 설정하면 서브넷 내의 EC2 NAT 인스턴스를 경유하게 할 수 있다.

-       VPC에서 NAT 인스턴스를 준비해둔다.

-       유지보수 작업 시작 시 (인터넷 액세스가 필요할 시) NAT 인스턴스를 가동하고 서브넷 라우팅에 NAT 인스턴스를 설정한다.

-       유지보수 작업 종료 시 라우팅에서 NAT 인스턴스 설정을 삭제하고 NAT 인스턴스도 정지 및 삭제한다.

 

ㅁ  장점

-       유지보수 작업이 없을 경우는 내부에서 인터넷에 액세스할 수 없어 시스템의 보안 유지가 가능하다.

-       NAT 인스턴스는 이용할 경우에만 가동하기 때문에 비용 절감 효과가 있다.

 

ㅁ  주의점

-       유지보수 작업 시에는 NAT 인스턴스 가동에서 서브넷 라우팅 조정까지 해야 하기 때문에 작업 실수가 발생하지 않게 스크립트로 자동화해두면 안전하다.