민감한 고객 데이터를 처리하는 고객 중 한 곳은 웹 앱과 데이터베이스를 위한 안전한 클라우드 인프라가 필요했습니다. 저희는 인바운드 트래픽을 차단하면서 프라이빗 서브넷의 인스턴스가 업데이트 및 API 호출을 위해 인터넷에 액세스할 수 있도록 VPC에 NAT 게이트웨이를 구현했습니다. 이 솔루션은 프라이빗 인스턴스를 공용 인터넷에 직접 노출하지 않고도 인터넷 액세스를 제공하여 보안을 강화합니다. 저희가 수행한 작업은 다음과 같습니다:
이 다이어그램은 세 가지 주요 섹션으로 나뉜 일반적인 VPC 설정을 보여줍니다: VPC, 퍼블릭 서브넷, 프라이빗 서브넷 입니다. 먼저 바깥쪽 녹색 상자인 VPC는 그 안의 리소스를 다른 네트워크로부터 격리합니다. 사용자는 1:1 NAT를 통해 할당된 고정 IP 주소를 사용하여 공용 인터넷을 통해 웹 서버에 액세스합니다. 웹 서버는 요청을 처리하고 필요한 경우 데이터베이스 서버와 통신합니다. 웹 서버는 라우터 서버를 통해 데이터베이스 서버와 통신합니다. 라우터 서버는 사용자 지정 NAT를 사용하여 공용 서브넷과 사설 서브넷 간에 트래픽을 안전하게 라우팅합니다. 프라이빗 서브넷 에 위치한 데이터베이스 서버는 VLAN 을 통해 웹 서버의 요청을 받습니다. 프라이빗 서브넷의 격리는 데이터베이스 서버가 인터넷에 직접 노출되지 않도록 보장하여 보안을 강화합니다. 이 튜토리얼에서는 이 아키텍처를 설정하여 사설 서브넷과 공용 서브넷 간의 안전하고 효율적인 통신을 보장하는 단계를 안내합니다. 퍼블릭 및 프라이빗 서브넷 으로 VPC를 만들고, NAT 게이트웨이를 구성하고, VLAN 을 설정하겠습니다.
튜토리얼
이 튜토리얼에서는 방금 살펴본 다이어그램과 마찬가지로 VPC에 NAT 게이트웨이를 만들 것입니다. 이미 Linode 계정이 있는 경우 1단계로 건너뛸 수 있습니다. Linode 계정이 없는 경우 이 링크를 사용하여 가입하고 $100의 무료 크레딧을 받아 다음 단계를 진행하세요. Linode 대시보드에서 퍼블릭 서브넷 와 프라이빗 서브넷 두 개의 서브넷이 있는 VPC를 만듭니다. 프라이빗 서브넷 에 데이터베이스를 추가하고 프라이빗 서브넷 에 웹 서버 역할을 할 인스턴스와 라우터 서버 역할을 할 인스턴스(사용자 정의 NAT) 두 개를 추가합니다.
1단계: VPC 만들기
VPC에서 NAT 게이트웨이를 구축하는 첫 번째 단계는 리소스를 논리적으로 격리하기 위해 VPC를 만드는 것입니다. 앞서 살펴본 다이어그램의 녹색 상자를 기억하세요. 프라이빗 서브넷과 퍼블릭 서브넷은 이 VPC 내부에 위치하게 됩니다.
이렇게 하려면 리노드 클라우드 관리자에서 왼쪽 패널의 VPC를 클릭한 다음 VPC 만들기를 클릭합니다.
2단계: 설정 퍼블릭 서브넷
다음으로 라우터 서버(사용자 지정 NAT)와 웹 서버를 보유할 VPC에 퍼블릭 서브넷 을 추가해야 합니다. 이것이 우리가 살펴본 다이어그램의 파란색 사각형이라는 것을 기억하세요.
화면 하단의 서브넷이라고 표시된 곳에 퍼블릭 서브넷 레이블을 추가합니다. 이 서브넷은 라우터 서버(사용자 지정 NAT)와 웹 서버를 호스팅합니다.
그런 다음 VPC 생성을 클릭하여 VPC를 프로비저닝합니다.
해당 서브넷 ID와 IP 범위로 퍼블릭 서브넷 이 생성된 것을 확인할 수 있습니다.
3단계: 라우터 서버 및 웹 서버 배포하기
다음으로 퍼블릭 서브넷 에 2개의 리노드 인스턴스를 배포해야 합니다. 한 리노드 인스턴스는 라우터 서버(사용자 정의 NAT) 역할을 하며, 공용 서브넷과 사설 서브넷 간의 트래픽을 관리하기 위해 NAT 작업을 처리합니다. 다른 서버는 인터넷에서 들어오는 트래픽을 처리하고 필요한 요청을 프라이빗 서브넷 으로 전달하는 웹 서버 역할을 합니다. 먼저 라우터 서버를 만듭니다. 클라우드 관리자에서 왼쪽 패널의 리노드를 클릭한 다음 리노드 만들기를 클릭합니다. VPC를 만들 때 선택한 것과 동일한 지역을 선택한 다음 전용 8GB CPU 옵션을 선택합니다.
그런 다음 아래로 스크롤하여 1단계에서 생성한 VPC를 지정한 다음 드롭다운에서 퍼블릭 서브넷 을 선택합니다.
리노드 생성을 클릭하여 이 인스턴스 프로비저닝을 완료합니다.
이제 위와 동일한 프로세스를 사용하여 웹 서버를 생성해 보겠습니다. 리노드 만들기를 클릭하고 VPC로 선택한 지역을 선택한 다음 이 인스턴스에 VPC를 할당합니다. 이제 웹 서버와 라우터 서버가 모두 퍼블릭 서브넷 아래에 VPC에 나열된 것을 볼 수 있습니다.
4단계: 만들기 프라이빗 서브넷
다음으로, 공용 인터넷에 직접 액세스할 수 없는 데이터베이스 서버를 호스팅하기 위해 VPC 내에 프라이빗 서브넷 를 만들어야 합니다. 이제 보라색 상자를 만들고 있습니다.
VPC에서 서브넷 생성을 클릭한 다음 레이블을 입력하고 비공개 IP 범위를 할당합니다. 이 서브넷은 데이터베이스를 외부 위협으로부터 안전하게 보호합니다.
5단계: 데이터베이스 서버 배포
이제 데이터베이스 서버로 사용할 프라이빗 서브넷 에 리노드 인스턴스를 배포해 보겠습니다. 이 인스턴스는 안전한 VLAN 을 통해 퍼블릭 서브넷 에서만 액세스할 수 있습니다. 리노드 클라우드 관리자의 왼쪽 패널에서 리노드를 클릭한 다음 리노드 만들기를 클릭합니다. 레이블로 데이터베이스 서버를 입력하고, VPC로 vpc-nat-gateway-demo를 선택한 다음, 서브넷으로 private-subnet을 선택합니다.
이 서버가 배포되면 다음과 같은 내용을 볼 수 있습니다:
다음으로 구성을 편집하고 이 리노드에 공인 IP 주소 할당 확인란을 선택해야 합니다. 이렇게 하는 이유는 이 서버에서 네트워크 도구를 다운로드해야 하기 때문입니다.
6단계: 구성 VLAN
다음으로, 퍼블릭 서브넷과 프라이빗 서브넷 간의 안전한 통신을 위해 VLAN 을 설정해야 합니다. 데이터베이스 서버와 라우터 서버는 VLAN 를 통해 서로 통신할 수 있습니다.
이렇게 하면 웹 서버와 데이터베이스 서버 간의 트래픽이 비공개로 안전하게 유지됩니다. 라우터 서버에서 구성 탭을 클릭한 다음 편집을 클릭합니다. VLAN 을 추가하고 주소를 입력합니다(플레이스홀더 텍스트를 지침으로 사용).
이제 라우터 서버로 이동하여 VLAN 을 구성에 추가해 보겠습니다.
7단계: 데이터베이스 서버에서 라우터 서버로 트래픽 전달하기
일부 네트워크 도구를 다운로드하기 위해 인터넷에 액세스할 수 있도록 공인 IP를 할당했음을 기억하세요.
이제 다운로드해 보겠습니다. ipconfig
다음 명령을 사용하여
$ modprobe iptable_nat
$ echo 1 > /proc/sys/net/ipv4/ip_forward
$ iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
$ iptables -A FORWARD -i eth1 -j ACCEPT
다음으로 데이터베이스 서버로 돌아가서 인터넷에 액세스할 수 없도록 공인 IP 확인란을 제거해야 합니다.
이제 데이터베이스 서버가 프라이빗 서브넷 에서 안전하게 격리되었습니다. 이제 라우터 서버와 통신할 수 있습니다. 라우터 서버의 VPC를 핑해 보겠습니다.
다음으로 데이터베이스 서버가 VLAN 를 통해 트래픽을 라우팅하도록 해야 합니다. 이를 위해 데이터베이스 서버에서 다음 명령을 실행합니다:
route add default gw {VLAN-IP-FOR-ROUTER}
그런 다음 경로를 실행합니다.
여기에 VLAN 이 표시됩니다.
이제 eth1(VLAN)에서 인터넷으로 트래픽을 전달하도록 라우터 서버를 구성해야 합니다. 이 단계에서는 서버에서 NAT를 활성화하고 IP 포워딩을 활성화합니다.
라우터 서버에서 다음 명령을 실행합니다:
$ modprobe iptable_nat
$ echo 1 > /proc/sys/net/ipv4/ip_forward
$ iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
$ iptables -A FORWARD -i eth1 -j ACCEPT
VPC에 NAT 게이트웨이를 성공적으로 설정했습니다.
이 아키텍처의 장점
이 아키텍처를 사용하면 몇 가지 주요 이점이 있습니다. 첫째, 보안이 강화됩니다. VPC를 사용하면 서로 다른 서브넷(공용 및 사설) 내에서 리소스를 격리할 수 있습니다. NAT 게이트웨이는 프라이빗 서브넷의 인스턴스가 공용 인터넷 위협에 직접 노출되지 않고 인터넷에 액세스할 수 있도록 보장합니다. VPC에서 NAT 게이트웨이를 사용하면 프라이빗 인스턴스에서 인터넷으로의 아웃바운드 트래픽만 허용되므로 보안 위험을 초래할 수 있는 원치 않는 인바운드 연결을 방지할 수 있습니다. 데이터베이스를 프라이빗 서브넷 에 저장하면 민감한 항목이 인터넷에 직접 노출되지 않도록 보호되어 데이터 유출의 위험이 줄어듭니다.
이 아키텍처는 또한 확장성을 크게 향상시킵니다. NAT 게이트웨이는 상당한 양의 트래픽을 관리하도록 설계되었으며 증가하는 수요에 따라 자동으로 조정할 수 있으므로 수동 개입이 필요하지 않습니다. 트래픽 부하가 증가하면 NAT 게이트웨이는 리소스를 확장하여 최적의 성능을 유지하고 지속적인 가용성을 보장합니다. 이러한 자동 확장성은 계절별 세일, 프로모션, 다양한 고객 행동으로 인해 트래픽 패턴이 변동하는 경우가 많은 이커머스 플랫폼에 특히 유용합니다. 개발자는 NAT 게이트웨이를 활용하면 수요가 많은 상황에서도 애플리케이션의 응답성과 안정성을 유지하여 궁극적으로 더 나은 사용자 경험을 제공하고 비즈니스 성장을 지원할 수 있습니다.
Linode를 사용하여 VPC에 NAT 게이트웨이를 구축하면 퍼블릭 리소스와 프라이빗 리소스 간의 네트워크 트래픽을 안전하고 효율적으로 관리할 수 있습니다. 프라이빗 인스턴스가 필요한 외부 리소스에 액세스할 수 있도록 보장하는 동시에 인터넷에 직접 노출되지 않도록 보호하여 궁극적으로 클라우드 인프라의 보안, 확장성 및 효율성을 향상시킵니다.
위에 설명된 단계를 따르고 제공된 다이어그램을 참조하여 고객의 민감한 데이터를 보호할 뿐만 아니라 네트워크 성능도 최적화할 수 있습니다. 클라우드 보안을 최적화하고자 하는 개발자로서 클라우드에서 더 많은 리소스를 구축하려는 경우 이 링크를 사용하여 최대 5,000달러의 Linode 크레딧을 신청하세요.
댓글 (2)
how can i create a linode account
i tried to register and got rejected
Hello Linh – If you’re having trouble creating an account, we suggest completing the form below and choosing the option that says, “I received a Signup Cancellation email when creating an account”:
https://www.linode.com/support/contact/
This post from the Linode Community Questions site titled “My signup was flagged as “fraudulent behavior” has more information. Keep in mind, you’ll only hear back from us if we decide to overturn our initial decision.