네트워크 CIDR 디자인을 끝낸 다음에는 무엇이 생각나나요? 바로 Routing이 생각 나실 겁니다. 논리 네트워크이니까 라우팅도 생성해서 통신 설정을 해 주어야 Subnet끼리 혹은 LAN이나 WAN과 통신이 되겠죠?
역시나 망설이지 말고 cmdlet부터 실행하여 Route를 확인해 봅시다.
PS> Get-EC2RouteTable
확인되는 Route Table은 두 개가 있네요. 일단 속성 값 들을 간단하게 살펴봅시다.
Tag: 태그 정보입니다.
Associations: 라우팅이 적용된 Subnet 정보
PropagatingVgws: Viretual Private Gateway(VPG)와의 정보
Routes: 라우팅 정보입니다.
RouteTableId: Route Table ID 입니다.
Tags: 태그 정보입니다.
VpcId: VPC ID입니다.
VPC ID와 매핑 되어 있고, 라우팅 정보와 Subnet 정보, VPG 정보도 있네요. VPG는 나중에 VPN관련 설명 시 자세하게 다루도록 하겠습니다. 먼저, VPC와 연결이 되어있다는 것을 확인하였으니, 제작한 VPC와 Route Table에 연관이 있는 것을 확인할 수 있습니다.
값들을 잘 보면 {}를 사용하고 제공하는 정보가 적은데, 해당 부분은 Powershell에서 object를 값으로 가질 때 그렇습니다. 자세한 내용은 Powershell을 찾아보시면 나옵니다. 나중에 포스팅 해야겠네요.
어찌됐든, 저 값들을 보려면 속성값을 직접 접근해야 합니다. 그럼 Routes 값을 먼저 보시죠
PS> (Get-EC2RouteTable -RouteTableId rtb-449c9121).Routes
값을 확인해 보시면 VPC의 CIDR값인 10.20.0.0/16을 목적지 하는 내부(Local)통신이 Active 되어있다는 것을 확인하실 수 있습니다. 좀 더 풀어서 설명한다면 목적지가 10.20.0.0/16에 포함되는 통신은 내부 통신으로 전송된다는 의미입니다.
우리는 글보다 그림이 익숙하니 그림을 보시죠
여러분들 허접한 그림 보시느랴 수고가 많으십니다. 이해가 좀 되시나요? Subnet은 VPC에 속해 있기 때문에 Subnet끼리의 Routing은 통신이 가능하도록 설정이 되어 있습니다. 어찌 보면 당연한 소리 같지만, Subnet이 AZ별로 별도로 있다는 것을 생각하면 논리 네트워킹이라 가능하다는 사실도 생각해 볼 수 있습니다.
위의 그림에서 언급한 내용 외에 두 가지를 이해하셨다면 눈치가 굉장히 빠르신 분입니다.
- Route Table은 VPC의 리소스 입니다. 그렇기 때문에 AZ에 종속된 리소스가 아닙니다.
- 동일한 CIDR값을 가지는 VPC끼리 통신이 되지 않는 이유는 VPC별로 Route Table이 별도로 있고, 하나의 VPC가 할당 할 수 있는 모든 IP는 Route Table을 Gateway로 통신하기 때문에 다른 VPC와 같은 IP를 가지고 있어도 통신이 되지 않습니다
동일한 CIDR값을 가진 VPC끼리 통신시킬 수도 없지만, 억지로 통신망을 연결 시켰다고 하여도 Route Table에서 정의된 설정 때문에 다른 VPC의 네트워크와 통신할 수 없게 됩니다.
그럼 지우면 되지 않느냐? 하실 텐데… 일단 위험을 무릅쓰고 지워 봅시다.
PS> Remove-EC2RouteTable -RouteTableId rtb-449c9121
다행히(?) 안 지워 지네요. 이처럼 VPC내 에서 통신하는 기본 Route Table은 수정이 불가능합니다.
다음으로는 Route Table이 적용된 Subnet 정보였던 Associations에 대해 살펴 보겠습니다. 확인부터 해보죠.
PS> (Get-EC2RouteTable -RouteTableId rtb-449c9121).Associations
어? 확인해 보니 Subnet ID와 연결된 정보가 하나도 없네요?? 어떻게 된 거지?????
라고 당황 한번 해봤습니다… 그냥 계속 설명 할께요…
왠지 모르게 Main이라는 속성 값을 설명하고 싶어집니다. Main이 무엇이냐? VPC의 Main Route Table이라는 것을 의미 합니다. 좋게 말해서 Main이지 쉽게 설명하면 Default Route Table이라고 생각 하시는 것이 이해가 쉬우실 겁니다.
사용하시는 분마다 성향이 다르시겠지만, 개인적으로 Default를 별로 좋아하지 않기 때문에…(그것도 공부하는 중이니) 기본설정은 놔 두고 새로 Route Table을 만들어 봅시다.
PS> New-EC2RouteTable -VpcId vpc-21e2df44
가볍게 만들어 졌습니다. 그럼 위에서 확인 한 값들을 확인해 볼까요?
PS> (Get-EC2RouteTable -RouteTableId rtb-3b929e5e).Associations
PS> (Get-EC2RouteTable -RouteTableId rtb-3b929e5e).Routes
예상과 다르게 Associations는 할당이 되어있지 않고, Routes 정보만 있네요. Route 정보는 예상한 대로 적용되었네요. 그럼 Subnet을 Route Table에 연결해 봅시다
PS> Register-EC2RouteTable -RouteTableId rtb-3b929e5e -SubnetId subnet-b75374c0
연결이 잘 되었는지 확인 해 볼까요?
PS> (Get-EC2RouteTable -RouteTableId rtb-3b929e5e).Associations
하나의 Subnet을 더 연결해 봅시다
PS> Register-EC2RouteTable -RouteTableId rtb-3b929e5e -SubnetId subnet-b2c2beeb
PS> (Get-EC2RouteTable -RouteTableId rtb-3b929e5e).Associations
Route Table의 Associations 값은 설정이 있을 시에만 적용이 됩니다.
글이 엄청 길어졌네요. 다음부터는 주제를 좀 더 나눠서 올려야겠습니다.
Route Table에 대해서는 Internet Gateway 설정과 NAT 설정, VPN 연결 등 설명할 부분이 많으니 기본이 되는 Route Table 내용을 꼭 기억하시기 바랍니다.
참고 자료 : http://docs.aws.amazon.com/ko_kr/AmazonVPC/latest/UserGuide/VPC_Route_Tables.html
'AWS > 파워쉘로 배우는 AWS' 카테고리의 다른 글
[쉬어가기] 잡설(+AWS 나빠요) (0) | 2015.12.21 |
---|---|
#8 [VPC] Public Subnet 만들기 (1) | 2015.12.21 |
#6 [VPC] Subnet 만들기와 AvailabilityZone 알아보기 (0) | 2015.12.18 |
#5 [VPC] VPC 알아보기 (0) | 2015.12.18 |
#4-1 [서론] AWS 자격증명을 파일로 저장하여 사용하는 방법 (0) | 2015.12.18 |