일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- ALB
- NaCl
- 네이버 클라우드 플랫폼
- Dedup
- AD
- ncp
- CloudFront
- Linux
- EC2
- 윈도우
- route table
- 테라폼
- CLI
- Storage
- Python
- FSX
- Windows
- Subnet
- 도메인
- S3
- RDS
- terraform
- AWS
- Jenkins
- security group
- storage gateway
- Athena
- lambda
- VPC
- dns
- Today
- Total
끄적이는 보송
[AWS] Private EC2 인터넷 연결하기 본문
이 번 포스팅은 Private Subnet에 위치하는 EC2 인스턴스가 외부 인터넷과 통신하는 방법에 대해서 다룰까 한다.
방법이야 여러 가지지만 그중에서 NAT gateway 서비스를 사용하는 방법을 다룰까 한다. 그리고 NAT gateway 없이 Bastion Host를 NAT로도 이용하는 방법을 포스팅하려 한다.
NAT Gateway 서비스란
우리가 알고 있는 NAT와 동일하다. AWS에서 제공하는 서비스일 뿐. NAT 게이트웨이 서비스는 Private Subnet의 인스턴스가 VPC 외부(인터넷)의 서비스를 연결할 수 있도록 하지만 외부의 연결을 막는 역할을 한다. 실제 예로 이것을 언제 사용할까?
Public Sunet은 인터넷과 연결되어 있고 Priavte Subnet은 내부망이다. 만약 Private Subnet에 위치하고 있는 서버에 OS 패치, 외부 애플리케이션 소스가 담겨있는 레포지토리로부터 소스를 디플로이를 해야 한다면? 인터넷을 사용하기 위한 관문이 없으니 Public Subnet에 있는 서버로부터 카피를 해야 하는 상황이 온다. 그래서 NAT gateway 사용한다.
다음과 같은 구성이라면 Private Subnet에 있는 서버도 문제없이 인터넷을 이용할 수 있다. 반대로 외부에서 서버로 찾아갈 Public IP주소가 없기 때문에 보안에도 이상이 없다. 이상한 소스만 안 긁어온다면 서버는 NAT로 패킷을 보내고 그 패킷은 IGW를 통해 외부로 나갔다가 원래 처음에 컨넥션을 맺었던 서버에 다시 패키슬 돌려주는 역할을 한다.
NAT Gateway 생성 및 Private EC2 인터넷 연결
그럼 실습을 해보도록 하자. NAT gateway 생성 전에 EIP를 생성한다. EIP는 고정 IP주소라고 생각하면 된다. 접근 경로는 VPC 콘솔 화면 > 화면 좌측 사이드 바 'NAT Gateways' > 'Create route talbe'이다. 생성은 간단하다. 그런 다음과 같이 NAT gateway를 생성한다.
NAT gateway를 이용할 Private EC2 서버다. 보이다시피 Public IP 주소가 없다.
라우팅 테이블은 위에서부터 읽으면서 작동한다. EC2가 속해있는 Subnet을 찾아, Subnet에 등록된 route table을 변경해줘야 한다. Public & Private subnet route table 각각 다음과 같이 설정되어 있다.
테스트 결과 잘 작동한다.
NAT Instance
만약 서버 트래픽이 크지 않고 NAT gateway에 과금되는 예산을 아끼고자 한다면 NAT Instance도 대체제가 될 수 있다. 성능은 NAT Gateway보다 적지만 가격적인 측면에선 확실히 낫다. NAT Insance는 Community에 AMI로 많이 올라와있다. 이중 마음에 드는 것을 고르면 된다. 그리고 라우팅 테이블을 기존 것을 참고해 수정해주면 된다.
여기서 한 가지 추가 작업이 있다. 바로 Source/Destination check를 비활성화해줘야 한다. 왜 이런 작업을 해줘야 할까. 이는 인스턴스가 전송하거나 수신하는 트래픽의 소스 또는 대상이어야 함을 의미하는데 NAT 인스턴스는 소스 또는 대상이 자신이 아닐 때 트래픽을 보내고 받을 수 있어야 한다. 따라서 NAT 인스턴스에서 소스/대상 확인을 비활성화해야 한다.
'STUDY > AWS' 카테고리의 다른 글
[AWS] ALB Access Log 활성화 및 분석하기 (1) | 2022.03.01 |
---|---|
[AWS] VPC Endpoint (Gateway Endpoint, Interface Endpoint 및 S3 연결) (1) | 2022.02.26 |
[AWS] Security Group과 NACL의 차이 (0) | 2022.02.23 |
[AWS] VPC를 생성할 때 고려할 점. (0) | 2022.02.23 |
[AWS] AWS CloudShell (0) | 2022.02.19 |