49. AWS CLI로 VPC 네트워크 구축

by Master Seo


관리서버에서 명령어로 서비스 네트워크를 만들어 보자.


2가지 네트워크가 필요하다.

관리 네트워크와 관리 네트워크에서 명령어로 만들어진 서비스 네트워크


네트워크는 비용이 안나온다.

편하게 공부하자 ~


<1> 관리네트워크와 관리서버 1대를 만들자.

만들어진 예)



캘리포니아에 관리네트워크와 관리서버를 만들자.

클릭클릭으로 관리네트워크와 관리서버를 만들수 있다.

AWS에 로그인해서 US West (N. California) 로 지역을 선택한다.

캘리포니아에 관리 서버를 만들자.



관리네트워크는 VPC Wizard(마법사)로 만들자.


콜솔 로그인 https://console.aws.amazon.com/console/home



1. [VPC마법사]로 네트워크를 만든다.


VPC - Lanunch VPC Wizard(마법사).







2. 관리서버도 클릭클릭해서 하나 만들자.


EC2 클릭.
이 서버에서 명령어로 네트워크와 서버를 만들 것이다.




공인IP 할당을 Enable해서 외부에서 접속하도록 하자.

Auto-assign Public IP : Enable



새 Key를 생성하자.

[Create a new key pair] 선택

[Download Key Pair] 클릭

자 ~ 이제 관리 서버가 만든어 졌다 !!






<2> 서비스 네트워크를 만들자.

미국 동부 버지니아에 서비스 네트워크 10.200.0.0/16을 하나 만들어보자.


아래는 다 만들어졌을때 GUI로 본건이다.

Us east 미국 동부 버지니아에 네트워크가 만들어진 경우.



만들어진 네트워크 VPC 10.200.0.0/16




서브네팅된 화면.


인터넷 게이트웨이 만들어지고, 연결(attached)된 화면.


라우팅 테이블 만들어지고

서브네팅된 네트워크의 디폴트 게이트웨이로 igw인터넷게이트웨이가 연결된상태.




1.명령어로 서비스 네트워크와 서비스 서버를 만들어 보자.

캘리포니아에있는 관리서버에 CLI 툴을 설치하자.


[ec2-user@ip-192-168-100-197 ~]$ sudo su -

[root@ip-192-168-100-197 ~]# yum install python-setuptools

[root@ip-192-168-100-197 ~]# easy_install pip

[root@ip-192-168-100-197 ~]# pip install awscli

[root@ip-192-168-100-197 ~]# aws --version

aws-cli/1.15.80 Python/2.7.14 Linux/4.14.77-81.59.amzn2.x86_64 botocore/1.10.79



미국 동부 버지니어에 서비스 네트워크를 만들어보자. US East (N. Virginia)


2. 캘리포니아 관리서버에서 권한을 확인한다.

우리는 관리서버 생성시에 [IAM Full 권한]을 받아서

따로 access.key와 Secret key가 필요없다.


[root@ip-192-168-100-197 ~]# aws configure

AWS Access Key ID [None]: 엔터

AWS Secret Access Key [None]: 엔터

Default region name [None]: us-east-1

Default output format [None]: 엔터

[root@ip-192-168-100-197 ~]#



3. 미국동부에 10.200.0.0 /16 네트워크를 만든다.


[root@ip-192-168-100-139 ~]# aws ec2 create-vpc --cidr-block 10.200.0.0/16

{

"Vpc": {

"VpcId": "vpc-0260041ca499c58f0",


Dns hostname enable한다.

aws ec2 modify-vpc-attribute --vpc-id vpc-0260041ca499c58f0 --enable-dns-hostnames



4.서브네트 4개를 만든다.

서브넷 만들때 위에서 만든 vpc-id가 필요하다.

서비네팅할때 us-east-1a인지 1c인지 명확히 적어야 한다.


aws ec2 create-subnet --vpc-id vpc-0260041ca499c58f0 --availability-zone us-east-1a --cidr-block 10.200.0.0/24


aws ec2 create-subnet --vpc-id vpc-0260041ca499c58f0 --availability-zone us-east-1c --cidr-block 10.200.4.0/24


aws ec2 create-subnet --vpc-id vpc-0260041ca499c58f0 --availability-zone us-east-1a --cidr-block 10.200.8.0/24


aws ec2 create-subnet --vpc-id vpc-0260041ca499c58f0 --availability-zone us-east-1c --cidr-block 10.200.12.0/24



Vpc생성시 명령어 결과 참고.

[root@ip-192-168-100-139 ~]# aws ec2 create-vpc --cidr-block 10.200.0.0/16

{

"Vpc": {

"VpcId": "vpc-0260041ca499c58f0",

"InstanceTenancy": "default",

"Tags": [],

"CidrBlockAssociationSet": [

{

"AssociationId": "vpc-cidr-assoc-026dce96a4f1b83ce",

"CidrBlock": "10.200.0.0/16",

"CidrBlockState": {

"State": "associated"

}

}

],

"Ipv6CidrBlockAssociationSet": [],

"State": "pending",

"DhcpOptionsId": "dopt-177c7e6e",

"CidrBlock": "10.200.0.0/16",

"IsDefault": false

}

}


서브네팅 명령어 결과 참고.

[root@ip-192-168-100-139 ~]# aws ec2 create-subnet --vpc-id vpc-0260041ca499c58f0 --availability-zone us-east-1a --cidr-block 10.200.0.0/24

{

"Subnet": {

"AvailabilityZone": "us-east-1a",

"AvailableIpAddressCount": 251,

"DefaultForAz": false,

"Ipv6CidrBlockAssociationSet": [],

"VpcId": "vpc-0260041ca499c58f0",

"State": "pending",

"MapPublicIpOnLaunch": false,

"SubnetId": "subnet-0abfbae97f17d3fd9",

"CidrBlock": "10.200.0.0/24",

"AssignIpv6AddressOnCreation": false

}

}


[root@ip-192-168-100-139 ~]# aws ec2 create-subnet --vpc-id vpc-0260041ca499c58f0 --availability-zone us-east-1c --cidr-block 10.200.4.0/24

{

"Subnet": {

"AvailabilityZone": "us-east-1c",

"AvailableIpAddressCount": 251,

"DefaultForAz": false,

"Ipv6CidrBlockAssociationSet": [],

"VpcId": "vpc-0260041ca499c58f0",

"State": "pending",

"MapPublicIpOnLaunch": false,

"SubnetId": "subnet-07e8557a3b21450be",

"CidrBlock": "10.200.4.0/24",

"AssignIpv6AddressOnCreation": false

}

}


[root@ip-192-168-100-139 ~]# aws ec2 create-subnet --vpc-id vpc-0260041ca499c58f0 --availability-zone us-east-1a --cidr-block 10.200.8.0/24

{

"Subnet": {

"AvailabilityZone": "us-east-1a",

"AvailableIpAddressCount": 251,

"DefaultForAz": false,

"Ipv6CidrBlockAssociationSet": [],

"VpcId": "vpc-0260041ca499c58f0",

"State": "pending",

"MapPublicIpOnLaunch": false,

"SubnetId": "subnet-0990850cccc4f794d",

"CidrBlock": "10.200.8.0/24",

"AssignIpv6AddressOnCreation": false

}

}


[root@ip-192-168-100-139 ~]# aws ec2 create-subnet --vpc-id vpc-0260041ca499c58f0 --availability-zone us-east-1c --cidr-block 10.200.12.0/24

{

"Subnet": {

"AvailabilityZone": "us-east-1c",

"AvailableIpAddressCount": 251,

"DefaultForAz": false,

"Ipv6CidrBlockAssociationSet": [],

"VpcId": "vpc-0260041ca499c58f0",

"State": "pending",

"MapPublicIpOnLaunch": false,

"SubnetId": "subnet-084bc31db0e0fa09e",

"CidrBlock": "10.200.12.0/24",

"AssignIpv6AddressOnCreation": false

}

}




5. 라우팅 테이블 만들기.


[root@ip-192-168-100-139 ~]# aws ec2 create-route-table --vpc-id vpc-0260041ca499c58f0

{

"RouteTable": {

"Associations": [],

"RouteTableId": "rtb-074af38b755fa11fa",

"VpcId": "vpc-0260041ca499c58f0",

"PropagatingVgws": [],

"Tags": [],

"Routes": [

{

"GatewayId": "local",

"DestinationCidrBlock": "10.200.0.0/16",

"State": "active",

"Origin": "CreateRouteTable"

}

]

}

}




6. Subnet에 대해서도 라우팅 테이블이용되도록 설정 한다.


[root@ip-192-168-100-139 ~]# aws ec2 associate-route-table --route-table-id rtb-074af38b755fa11fa --subnet-id subnet-0abfbae97f17d3fd9

{

"AssociationId": "rtbassoc-06dbb0bc065646122"

}


[root@ip-192-168-100-139 ~]# aws ec2 associate-route-table --route-table-id rtb-074af38b755fa11fa --subnet-id subnet-07e8557a3b21450be

{

"AssociationId": "rtbassoc-0ec72a6c67dc5df5b"

}


[root@ip-192-168-100-139 ~]# aws ec2 associate-route-table --route-table-id rtb-074af38b755fa11fa --subnet-id subnet-0990850cccc4f794d

{

"AssociationId": "rtbassoc-0771a01286c23272d"

}


[root@ip-192-168-100-139 ~]# aws ec2 associate-route-table --route-table-id rtb-074af38b755fa11fa --subnet-id subnet-084bc31db0e0fa09e

{

"AssociationId": "rtbassoc-09437b55a50025bed"

}



7.인터넷 게이트웨이를 만든다.


[root@ip-192-168-100-139 ~]# aws ec2 create-internet-gateway

{

"InternetGateway": {

"Tags": [],

"Attachments": [],

"InternetGatewayId": "igw-0b5cc362801e2b388"

}

}

[root@ip-192-168-100-139 ~]#



8.인터넷게이트웨이를 VPC와 연결한다.


[root@ip-192-168-100-139 ~]# aws ec2 attach-internet-gateway --internet-gateway-id igw-0b5cc362801e2b388 --vpc-id vpc-0260041ca499c58f0



9.디폴트라우팅을 igw로 잡는다.


[root@ip-192-168-100-139 ~]# aws ec2 create-route --route-table-id rtb-074af38b755fa11fa --destination-cidr-block 0.0.0.0/0 --gateway-id igw-0b5cc362801e2b388

{

"Return": true

}



참고 : 명령어들 https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html#examples


서비스 네트워크에 서버1대 만들고

외부로 ping하니 잘된다.

네트워크는 잘 만들어 진거 같다 ^^



참고1. CLI로 서버 만드는법.

https://brunch.co.kr/@topasvga/345



감사합니다.














keyword
매거진의 이전글48.(AWS) 웹사이트 구축 단계 (웹콘솔)