1. Route Table
- 네트워크에서 데이터 패킷을 전송하기 위한 핵심적인 구성 요소 중 하나로, 패킷이 출발지에서 목적지로 어떻게 전달되어야 하는지에 대한 정보를 포함
- VPC 내 리소스의 네트워크 경로를 Route Table에 정의할 수 있습니다.
- 경로, 즉 라우팅 규칙은 목적지 주소에 따른 Next Hop을 지정하는 방식으로 추가됩니다.
- Route Table을 Subnet에 연관시키면 해당 Subnet 내 리소스의 통신에 영향을 줍니다.
Route Table의 세부적인 특징은 다음과 같습니다.
1. 모든 Subnet은 무조건 Route Table에 적용되며, 하나의 Route Table에 여러 Subnet이 적용 될 수 있다.
단, 각 Subnet은 한가지 Route Table에만 적용된다.
2. 이용 목적에 따라 공인 Route Table과 사설 Route Table이 있다.
- 공인 Route Table: Public Subnet에 연관시킬 수 있으며, 인터넷 통신을 위한 IGW(Internet Gateway) 규칙과 VPC 내부 통신을 위한 LOCAL 규칙이 자동으로 추가됩니다.
- 사설 Route Table: Private Subnet에 연관시킬 수 있으며, VPC 내부 통신을 위한 LOCAL 규칙이 자동으로 추가됩니다.
- VPC를 생성하면 Default Route Table이 자동으로 생성됩니다. Default Route Table은 삭제할 수 없습니다.
2. Route Table 설정
1. 왼쪽 메뉴에서 Route Table를 들어가면 기본으로 생성된 Public과 Private Table가 보입니다.
2. Table를 선택 후 연관 Subnet을 클릭하면 각 테이블에 연결된 Subnet들을 볼 수 있습니다.
subnet들은 생성될때 자동으로 각 타입(public, private)에 맞는 Table에 자동 추가 됩니다.
3. 우선 Public Table의 Route를 확인해보겠습니다.
외부통신이 목적인 Public이기에 자동으로 모르는 IP는 전부 INTERNET GATEWAY로 보내게 설정되어 있습니다.
그렇기 때문에 공인IP를 추가하고 ACG만 열어주면 바로 외부 통신이 가능했습니다.
4. 이번에는 Private Table 입니다.
외부에서 접근을 바라지 않기 때문에 INTERNET GATEWAY 설정을 할 수 없고 내부통신을 위한 LOCAL 설정만 있습니다.
5. Private Table에 NAT Gateway를 추가하기 위해 Route 설정을 클릭합니다.
6. 외부 통신을 위한거니 목적지는 0.0.0.0/0, 타입은 NATGW, Name에서는 생성했던 NAT 이름을 선택하고 생성 및 확인을 클릭합니다.
7. Private Table에 NATGW가 추가되었습니다.
이제 10.0.0.0/16을 제외한 모든 목적지에 대한 요청은 NAT Gateway로 보내져 NAT의 공인IP를 통해 외부 통신을 하게 됩니다.
8. 이제 Private에서 외부로 ping을 보내보면 정상적으로 ping이 나가는 것을 볼 수 있습니다.
만약 일부만 Private만 외부 통신이 가능하고 일부는 외부와 모두 단절된 Private을 만들고 싶다면 Route Table을 추가로 생성하고 해당 Table로 Subnet을 옮겨주면 됩니다.
3. Route 추가 생성 및 삭제
1. 예시를 위해 Private Subnet을 하나 더 생상해보았습니다.
2. Private Table을 확인해보니 새로 생성한 Subnet이 자동으로 등록되어 있습니다.
Route Table 생성을 클릭해 새로운 Table을 생성해보겠습니다.
3. Private를 위한 사설을 선택 후 생성을 클릭합니다.
4. 새로운 Private Table가 생성되었지만 연관 Subnet에는 아무것도 없습니다. 연관 Subnet 설정을 클릭합니다.
5. Subnet 이름에서 새로 생성했던 Subnet을 선택하고 생성을 클릭합니다.
6. Subnet이 추가된 것을 확인하고 확인을 클릭합니다.
7. 다시 연관 Subnet을 확인해보면 Subnet이 추가되어 있습니다.
8. Route를 확인해보면 내부통신을 위한 VPC 대역만 추가되어 있어 해당 Table에 연관된 Subnet은 내부 통신만 가능합니다.
9. 기존 Private의 Subnet을 확인해보면 새로 생성된 Table에 적용된 Subnet이 사라졌습니다.
이렇게 같은 Private Subnet이라도 Table을 나눠 일부만 외부 통신이 가능하게 할 수 있습니다.
10. 연관 Subnet이 있는 Table은 삭제가 불가능하니 default-private에 subnet2를 다시 연결해줍니다.
11. 새로 생성했던 private-table2를 삭제합니다.
이제 Private Subnet에 있는 서버에서도 외부로 요청을 보낼 수 있는 상태가 되었습니다.
환경 구성을 위한 기본적인 작업은 끝났고 다음 글에서는 서버 생성 시 1회만 실행되어 서버의 초기 환경를 자동으로 구축할 수 있는 Init Script를 통해 Web 서버를 만들어보겠습니다.
Init Script : https://angrycloud.tistory.com/27