VPC 마법사를 이용하지 않고 직접 VPC를 빌드해본다.
빌드가 완료된 VPC의 구성은 다음과 같을 것이다.
Region 안에 VPC를 하나 만들고 2개의 가용영역 A, B에 Public, Private subnet을 구축한다.
public subnet에 접근하기 위해 IGW(Internet Gateway)를 이용하고 각 subnet에는 라우팅 테이블이 존재한다.
private subnet에 접근하기 위해서는 public에서 private을 통해 접근하며 이 때 NATgw를 사용한다.
① VPC 및 Subnet 생성하기
첫번째로 Region을 선택하고(나는 버지니아 북부를 선택했다.) VPC를 생성한다.
VPC 주소를 10.0.0.0/16로
public subnet을 10.0.0.0/24 로 설정한다.
public subnet의 0.0.0.0/0이 IGW로 나가도록 구성할 것이다.
- 참고로 0.0.0.0/0 은 모든 IP 주소를 의미한다.
✔︎ VPC 생성
리소스를 할당하기 위해 subnet을 생성한다.
✔︎ subnet 생성
Public, Private subnet을 각각 한개씩 생성한다.
VPC가 10.0.0.0/16 이므로 subnet의 IP CIDR는 10.0.x.x/x 는 변하지 않아야 한다.
✔︎ 라우팅 테이블 설정
라우팅 테이블을 만들고 인터넷 게이트웨이에 경로를 추가해주어야 한다.
✔︎ 인터넷 게이트웨이 생성
10.0.0.0/16 이외의 모든 IP 주소는 인터넷 게이트웨이를 통해 외부로 통신한다.
public subnet은 라우팅 테이블과 IGW만 있으면 된다.
✔︎ 인터넷 게이트웨이와 VPC 연결
IGW를 만들었으면 이제 VPC에 연결해줘야 한다. (어떤 VPC의 출구인지 정하는 것)
나머지는 외부로 나가기 위해 0.0.0.0/0를 외부로 연결 (IGW를 통해) 해준다.
내가 가지고 있는 pvc 네트워크 주소는 로컬로 그 외의 나머지 주소는 모두 igw를 통해 밖으로 나갈 수 있도록 설정한다.
인터넷 게이트웨이를 보면 ssh-vpc1 (VPC)에 연결되어 있는 것을 확인할 수 있다.
② 인스턴스 생성하기
인스턴스는 Amazon Linux를 사용할 것이다.
10.0.0.0 ~ 10.0.0.255 중에서 0, 255 는 네트워크 주소와 브로드캐스트용 이므로 사용할 수 없다.
추가적으로 1, 2, 3 또한 사용할 수 없는데
1은 게이트웨이, 2는 DNS, 3은 DHCP를 위해 예약되어 있는 주소이기 때문이다.
따라서 251개 사용 가능하다.
default VPC를 이용하면 퍼블릭 IP 자동 할당의 기본 설정은 활성화 이지만,
default VPC가 아닌 사용자 지정 VPC의 경우 퍼블릭 IP 자동 할당이 기본적으로 비활성화 되어 있다.
따라서 활성화를 해줘야한다.
또한 랜카드를 활성화해 하나의 VPC 안에 두개의 IP를 할당받을 수 있다. (추가 비용이 청구된다.)
ICMP - 테스트용 외부/내부 ping 되는지 확인하기 위해 설정 (vpc peering 테스트 할 때 ping이 차단되면 안되기 때문)
IGW를 통해 외부에서 내부 (고객이 서비스에 접근하기 위해)로 들어오기 위해서
key 인증을 통해 public으로 접근하고 public에서 private으로 접근할 때도 이 키를 사용할 것이다.
✔︎ 라우팅 테이블 설정
Public subnet 안의 AWS Linux ec2 생성 후
만든 pvc의 기본 라우팅 테이블에 0.0.0.0/0을 추가해줘야 IGW를 통해 들어오는 네트워크를 받을 수 있다.
[root@ip-10-0-0-16 ~]# sudo yum install -y httpd
[root@ip-10-0-0-16 ~]# sudo service httpd start
Redirecting to /bin/systemctl start httpd.service
http에 정상적으로 접속 가능하다.
✔︎ private network 라우팅 테이블 생성
private에 대한 라우팅 테이블을 만들어준다. (이미지 ssh-vpc1-net1-public-rtb → ssh-vpc1-net1-private-rtb 변경)
private은 바로 IGW에 연결하지 않고 NATgw와 연결해줘야 한다.(외부에서 내부로 들어오면 X, 들어오면 public과 다를게 없기 때문)
인터넷이 필요하지 않다면 NAT Gateway가 필요없지만, 일반적으로 패치나 업데이트를 위해 인터넷이 필요하므로 NAT Gateway를 만들어준다.
NATgw가 public에 있어야 public의 IP를 DHCP를 통해 받아온다. (보통 EIP를 주로 사용한다.)
private network의 라우팅 테이블에 default 주소를 NATgw로 연결되도록 설정한다.
(public은 IGW, private는 NATgw로 연결하기)
public과 network와 private network를 명시적으로 연결해준다.
private에 속하는 인스턴스를 만들어서 확인한다.
외부에서 접근하면 안되므로 퍼블릭 IP 자동 할당은 비활성화시킨다. (인스턴스 생성 과정 생략)
✔︎ 방화벽 보안 설정
public → private로의 SSH 접속을 위해 소스를 사용자 지정으로 하고 public network로 설정한다.
ping 테스트를 위해 ICMP를 열어주고 웹 서비스 동작 확인을 위해 HTTP를 열어준다.
public에서 받은 key를 이용해 private으로 SSH 접속을 할 것이다.
이렇게 만들어진 private network의 인스턴스는 퍼블릭 IP 주소를 가지지 않는 것을 확인할 수 있다.
③ SSH를 이용한 public → private 접속
private 인스턴스에 접속하기 위해서는 public에 우선 접속한 뒤 SSH를 이용해 private까지 접속하는 방식으로 진행한다.
public 인스턴스의 .ssh 디렉토리 안에 파일을 만들고 직접 key 내용을 복사해 붙여넣는다.
key 파일을 사용하기 위해 key 파일의 권한을 변경한다.
key에 대한 경로를 명시하고 ec2-user 사용자로 private 인스턴스의 pirvate IP에 접속한다.
[ec2-user@ip-10-0-0-16 ~]$ ls -al
합계 16
drwx------ 3 ec2-user ec2-user 95 3월 30 08:13 .
drwxr-xr-x 3 root root 22 3월 30 06:53 ..
-rw------- 1 ec2-user ec2-user 83 3월 30 08:13 .bash_history
-rw-r--r-- 1 ec2-user ec2-user 18 7월 15 2020 .bash_logout
-rw-r--r-- 1 ec2-user ec2-user 193 7월 15 2020 .bash_profile
-rw-r--r-- 1 ec2-user ec2-user 231 7월 15 2020 .bashrc
drwx------ 2 ec2-user ec2-user 29 3월 30 06:53 .ssh
[ec2-user@ip-10-0-0-16 ~]$ cd .ssh
[ec2-user@ip-10-0-0-16 .ssh]$ ls
authorized_keys
[ec2-user@ip-10-0-0-16 .ssh]$ vi key.pem
[ec2-user@ip-10-0-0-16 .ssh]$ cat key.pem
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEA8GzaZxdEw9GA+qv+rINMjAtX9BaKyHIlvvS/nry8qDDQHLv9
UhdkTWbhNeakbIGYKOt1g4p3d6GamFLrH7/0rMWhQQ/Lo5bePxApGvMp89RpV59g
1kurs/MnUzchAX9wNOyVwVmGc7A+gaNSDKmHy4ty9WBuQXxhJnXI23pG8xVHHBg7
aSQbMjjX03mNco6bfNY6/AX5+tIyZDhczxLayN/TMiTGzEMNDv3UegqAF60BcKLO
0UIx9hPBAEwAiHrT3nXhDEKyVtZTuspNv96pyzAbIMem7UVIS3twgxPocvNkxWSl
We8XO9Vw7mp/DWv/rio29IP3dsarzPRyu6axnQIDAQABAoIBAAl50NXVVfF91V6L
3tq/xgmS/OFy7f9eeFxhWxgPikP6wIkRY7eTknF2h5PPRlW8ednLBfOsRm8hoG02
f2vd7e/NTkC5NaZ58MJ9iZE1Wkbw7UH11yQ7EUZjY/5kotljQ3HijTh0pdbzcFM9
....
중간 생략
-----END RSA PRIVATE KEY-----
[ec2-user@ip-10-0-0-16 .ssh]$ ls -al
합계 8
drwx------ 2 ec2-user ec2-user 44 3월 30 09:05 .
drwx------ 3 ec2-user ec2-user 111 3월 30 09:05 ..
-rw------- 1 ec2-user ec2-user 394 3월 30 06:53 authorized_keys
-rw-rw-r-- 1 ec2-user ec2-user 1675 3월 30 09:05 key.pem
[ec2-user@ip-10-0-0-16 .ssh]$ ls -l
합계 8
-rw------- 1 ec2-user ec2-user 394 3월 30 06:53 authorized_keys
-rw-rw-r-- 1 ec2-user ec2-user 1675 3월 30 09:05 key.pem
[ec2-user@ip-10-0-0-16 .ssh]$ chmod 400 key.pem
[ec2-user@ip-10-0-0-16 .ssh]$ cd ~
[ec2-user@ip-10-0-0-16 ~]$ ssh -i .ssh/key.pem ec2-user@10.0.128.148
The authenticity of host '10.0.128.148 (10.0.128.148)' can't be established.
ECDSA key fingerprint is SHA256:e/ygq5FGAkjtqSWpXNoYgJTHT7tgWDYLH2LTqUFpC7M.
ECDSA key fingerprint is MD5:0f:09:4c:b7:1e:c3:ce:5e:81:59:57:8b:e3:6b:3e:0a.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.0.128.148' (ECDSA) to the list of known hosts.
__| __|_ )
_| ( / Amazon Linux 2 AMI
___|\___|___|
https://aws.amazon.com/amazon-linux-2/
[ec2-user@ip-10-0-128-148 ~]$
VPC 빌드 완료 ~
'Public Cloud > AWS' 카테고리의 다른 글
[AWS] VPC peering 구성하기 (0) | 2022.03.31 |
---|---|
[AWS] VPC 마법사로 네트워크 설정하기 (0) | 2022.03.31 |
[AWS] Ubuntu Crontab 설정을 통한 S3 버킷 자동 백업 설정하기 (s3cmd 패키지) (0) | 2022.03.30 |
[AWS] AWS CLI를 이용한 S3 버킷 다루기 (0) | 2022.03.29 |
[AWS] AWS의 컨테이너 사용/배포 서비스 (0) | 2022.03.18 |
영차영차 성장 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!