1. VPC 생성

VPC > Your VPCs > Create VPC를 통해 VPC를 생성한다.

 

2. IPv4 CIDR은 보통 VPC는 /16 prefix, public subnet 같은 경우 /20, private subnet 같은 경우 /22 로 나뉘며 그 이유는 앞단인 public subnet 영역 에서 훨씬 많은 외부접근이 발생할 수 있기 때문에 auto scailing을 통해 ip대역을 원할히 할당하기 위해 prefix를 좀더 널럴하게 잡는다고 한다.

 

3. DR(Disaster Recovery) 를 위해 2AZ 안에 2 Tier의 Subnet 영역을 두고자 하며 각각의

네이밍은 {Service Name}-{Profile}-{AZ}-{public/private}-subnet(예, sample-develop-a-public-subnet)으로 짓는다.

 

4. VPC > Subnets > Create Subnet을 통해 Subnet 생성을 하며 필자는 2 tier 로 구성하기에

4개의 서브넷 영역을 생성했다.(2pub/2pri)

 

5. pub1, pub2 subnet 영역을 하나의 라우팅 테이블에 묶고 pri1, pri2 subnet 영역을 하나의 라우팅 테이블에 묶는다.

최초 VPC 생성시 Default Routing Table이 생성되고 이를 필자는 pub1, pub2 를 묶는데 썼으며 추가로 pri1, pri2 서브넷 영역을 묶기위해 Route Table을 별도로 생성하였다.

 

 

6. private subnet 과 public subnet에 각각 ec2 인스턴스를 셋팅한다. public subnet 영역에는 ec2 ami로 amzn-ami-vpc-nat-2018.03.0.20220705.1-x86_64-ebs(이미지 이걸로 안할시에 -> ec2 인스턴스를 nat용으로 사용못함) 를 사용하여 ec2 인스턴스를 nat용으로도 사용하고자 한다. private subnet 영역에는 ami로 amazon default image를 사용하여 t2 medium으로 올렸다.

 

7. bastion host란 private subnet에 올린 ec2에  접근 할 수 있는 방법이 오직 bastion host 로만 관리하는 것이며 이경우 보안과 통신 로그를 일괄적으로 관리할 수 있는 편리함이 보장된다. public subnet에 올린 ec2 인스턴스를 bastion으로 사용하기 위해 기존 private subnet을 묶은 {Service Name}-{Profile}-private-rt 에 Edit routes 로 모든 나가는 목적지를 아래와 같이 public 영역에 위치한 ec2 인스턴스의 아이디를 입력한다.

 

8. public subnet을 묶은 {Service Name}-{Profile}-public-rt 은 외부로 통신해야하기 때문에 Internet Gateway를 우선적으로 생성한다.

 

9. 생성한 Internet gateway를 앞서 생성한 {Service}-vpc에 Attach to VPC 메뉴를 통해 붙인다.(안붙이게 되면 routing table에서 이용할 수 없다)

 

10. 앞서 8번에서 언급한  {Service Name}-{Profile}-public-rt 에 앞서 만든 Internet gateway를 연결한다.

 

11. public 영역에 위치한 ec2 인스턴스와 private 영역에 위치한 ec2 인스턴스에 접근하기 위해선 각각의 Security Group의 Inbound rule 과 outbound rule 에 설정을 해야 하는데 우선 private 영역에 위치한 보안그룹의 inbound와 outbound의 설정 정보는 routing table에 등록되어있는 정보를 토대로 외부로 나아가기때문에 outbound를 모두 all로 표기했으며 inbound는 아래와 같이 ssh만 설정하였다.

 

12. public 영역에 위치한 ec2 인스턴스의 Security Group 은 아웃바운드는 모든 트래픽 허용으로 했으며 inbound 의 source 타겟을 Security Group 도 target으로 할 수 있어 private 영역에 위치한 ec2인스턴스의 security group을 소스로 설정했다. 아래는 그 설정 정보이다.

 

13. 또한 public subnet 영역에 위치한 ec2인스턴스를 nat 용도로 사용해야하기 때문에 원본/대상 확인 비활성화 작업을 해야하며 아래와 같이 진행하면 된다.

14. 정상적으로 nat용도로 활용되는지를 확인하려면 우선 가까운 영역부터 즉 private ec2 에서 public ec2 인스턴스로 핑을 날려보고 

아래와 같이 명령어로 정상적으로 작동 되는지 확인한다.

$ sudo yum update -y

 

* perm key의 권한은 600으로 안해줄시에 SSH 커넥션시에 에러가 발생한다.

 

15. 핑은 VPC 내의 Subnet을 묶는 Default Routing table을 통해 다른 서브넷에 있는 ec2 인스턴스끼리 서로 통신할 수 있지만 IGW를 통해 외부 연결을 하려면 반드시! private subnet을 묶은 routing table에 public subnet에 올린 ec2인스턴스를 등록을 꼭 해줘야한다.

 

https://dev.classmethod.jp/articles/access-private-subnet-ec2-via-ec2-bastion-host/

 

반응형

+ Recent posts