AWS
Private 서브넷에 있는 Lambda에서 외부 API를 호출하기위해 NATGateway를 사용했는데 비용이 부담스러웠다.
NAT Gateway를 활성화 해놓는 것만으로 한달에 약 8만원 정도 비용이 예상되었는데 이 비용을 줄이자고 Public으로 열어 놓기는 싫었다.
나는 트래픽을 아주 적게 사용하고 있기때문에 t2.micro EC2 프리티어 인스턴스를 NAT용도로 사용하면 비용을 10분의 1로 줄일 수 있었다.
AWS 웹콘솔 - EC2 - 인스턴스 시작
더많은 AMI 찾아보기 선택 - 커뮤니티 AMI - amzn-ami-vpc-nat 검색해서 나오는 이미지 사용
Public Subnet으로 설정
SSH 허용 (ex. 소스 : 내 IP만, 포트범위 : 22)
Private Subnet CIDR 허용 (ex. 소스 : 10.0.128.0/20, 포트범위 : 0 - 65535)
AWS 웹콘솔 - EC2 - 생성한 인스턴스 선택
작업 - 네트워킹 - 소스/대상 확인 변경 - 중지
EC2 인스턴스 실행
EC2 인스턴스 실행 후 SSH로 접속하고 아래 명령어를 실행한다.
내부 네트워크에서 외부 네트워크로 패킷을 전달할 수 있게 된다.
sudo sysctl -w net.ipv4.ip_forward=1
내부 네트워크의 컴퓨터가 외부 네트워크로 패킷을 전송할 때 패킷의 IP 주소가 변환되어 전송된다.
sudo /sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
방화벽 설정을 관리하는 툴 설치
sudo yum install iptables-services
재부팅 후에도 설정 유지된다.
sudo service iptables save