
192.168.1.0/24 대역인 public subnet은 공인 IP를 가지고 있기 때문에 쉽게 접속할 수 있다.
그럼 공인 IP가 없는 private subnet에는 어떻게 접속해야 할까?
1. 프라이빗 서브넷 인스턴스가 가지고 있는 키 페어를 퍼블릭 서브넷의 인스턴스로 복사하여 접속하기
: ssh -i 명령어로 프라이빗 인스턴스의 키 페어를 이용하여 접속할 수 있다.
하지만 키 페어를 복사해서 두는 것은 해킹 당할 경우 모든 서버의 키 페어를 탈취당한다. 보안상 그리 좋지 않은 방법.
또, rdp를 이용해 접속해야하는 windows-01은 어떻게 접속할 것인지?
2. ssh 터널링을 이용하여 접속하기
: 각 프라이빗 인스턴스로 접속할 수 있는 터널을 생성하고, 이 터널을 이용하여 linux, windows 모두 접속할 수 있다.
하나의 퍼블릭 인스턴스를 이용해 ssh 터널링으로 프라이빗 인스턴스에 접속하는 이유는 무엇일까?
하나의 퍼블릭 인스턴스 1대가 프라이빗 인스턴스가 2000대의 키 페어를
퍼블릭 인스턴스 1대에 모두 저장하여 관리한다고 가정하면 아래와 같은 현상이 나타난다.
1. 어떤 사용자가 어느 리눅스에 접속했는지 알 수 없다.
2. 만약 퍼블릭 인스턴스가 해킹당했을 때 전부 접속을 끊어야 하는데, 2000대의 인스턴스의 접속을 끊기 위해 2000번 작업을 해야한다.
즉, 서버를 관리하기가 굉장히 까다롭고 힘들단 뜻이다.
SSH 터널링 기술을 이용해 수많은 프라이빗 인스턴스를 관리하는 하나의 퍼블릭 인스턴스는 Bastion Host라고 불린다.
Bastion Host는 그저 접속용으로만 이용하고, 문제가 생겼을 때 세션을 종료하면 연결되어 있는 모든 프라이빗 인스턴스의 접속이 끊기게 된다. (SSH 터널링으로 열어둔 포트가 모두 닫히기 때문이다.)
이러한 구조는 1. 서버 관리, 2. 테스트와 로그를 확인하는 등의 3. 모니터링을 쉽게 할 수 있다.
테스트를 하기 위해서는 ping 명령으로 통신을 확인해야 한다.
또한, 프라이빗 인스턴스에 웹 서버를 설치하기 위해서는 외부와 통신을 해야 하는데, 프라이빗 인스턴스는 외부와 통신할 수 없는 구조이다.
이런 것을 해결하기 위해 NAT Gateway를 생성해 연결하여 외부 통신을 해야한다.
3. NAT Gateway 생성
0. 환경 세팅
- VPC 생성
CIDR: 192.168.0.0/16으로 설정

- 서브넷 생성 및 퍼블릭 서브넷 설정 변경
public subnet ip 대역: 192.168.1.0/24
private subnet ip 대역: 192.168.2.0/24


퍼블릭 서브넷은 공인 IP가 필요하기 때문에, 서브넷 설정 편집에 들어가 주소 자동 할당을 활성화한다.

- 인터넷 게이트웨이 생성 및 VPC 연결



- 라우팅 테이블 생성 및 서브넷 연결
퍼블릭, 프라이빗 서브넷을 각각 연결할 라우팅 테이블을 생성한다.
Q. 라우팅 테이블을 따로 연결하는 이유?
A. 프라이빗 서브넷은 보안상 VPC 외부와 통신하면 안 된다.
그래서 퍼블릭 서브넷을 연결할 라우팅 테이블에만 인터넷 게이트웨이를 등록해준다.



* 2개 생성했는데 새로 생성된 것이 3개인 이유는?
- 한 VPC에 서브넷을 새로 만들 때, 라우팅 테이블이 자동으로 하나 생성되며 이 라우터 한 개로 전부 연결된다.
라우팅 테이블에 서브넷 연결하기



퍼블릭 라우팅 테이블에는 외부 통신을 위한 인터넷 게이트웨이를 연결해준다.

- 키 페어 생성 및 키 페어 가져오기
키 페어도 마찬가지로 public, private에 등록할 2쌍을 생성하면 된다.
puttygen 실행하여 Generate하기.


직접 만든 키 페어 등록
AWS에 등록하는 키 페어는 public key이다.
작업 > 키 페어 가져오기

- EC2 인스턴스 생성

- 퍼블릭 인스턴스 접속
putty 이용하여 linux-01 접속하기

1. 키 페어 복사하는 방법으로 접속
- scp 사용하여 키 페어 복사
WinSCP, MobaXTerm 등 scp를 이용해 파일을 복사한다.


- 복사한 ppk 파일 이용하여 ssh 원격 접속 시도
> ssh -i [키페어] [hostname]@[접속할 IP]


키 페어의 권한이 현재 644이다.
키 페어는 고유하며 다른 사용자는 사용해서는 안 되기 때문에, 키 페어가 400일 경우 접근을 허가하지 않는다.

- 키 페어 퍼미션 변경 후 접속 시도
> chmod 400 linux-02-private-key.ppk


errer in libcrypto 에러 발생으로 접속이 불가하다.
위 에러는 putty 전용 키 페어 형식인 .ppk 파일을 이용해서 접속을 시도했기 때문에 나타나는 오류이다.
.ppk 파일 형식은 오직 putty만을 위해서 사용된다.
putty 접속을 제외한 모든 리눅스 접속은 openSSH 전용 파일 형식인 .pem으로 진행해야 한다.
- .ppk 형식 .pem 형식으로 변환
puttygen 이용하여 파일 변환하기

#### key pair 등록을 잘못해서 키 페어 생성부터 다시 시작했다......
- ssh 원격 접속

2. ssh 터널링을 통한 접속
- 터널 생성하여 퍼블릭 리눅스 접속
putty 실행하여 SSH > Tennels 탭
터널을 생성할 수 있다.
접속할 포트 번호와 접속해야 하는 IP주소:port 번호를 입력한다.
이 과정은 임의의 포트(터널)를 열어둔 뒤, 해당 포트에 접속하면 등록한 IP로 접속할 수 있는 포트 포워딩 기술을 사용한 것이다.


터널링이 제대로 되었는지 확인하기 위해서
cmd 실행하고 > netstat -na 명령 입력
로컬 호스트로 8001, 8002 포트로 접속할 수 있는 것 확인

- 프라이빗 인스턴스 접속
1. linux
linux01 실행한 상태에서 새로운 putty 실행
프라이빗 인스턴스의 공인 IP를 가지고 있지 않기 때문에, ssh 터널링을 통해 127.0.0.1:8001에 접속하여 프라이빗 인스턴스의 서버 주소로 접속할 수 있게 된다.
ssh 터널링 원리
127.0.0.1:8001 접속>>>>>>>>>>>터널>>>>>>>>>>> 프라이빗 EC2 instance 주소:port


2. windows
rdp 이용하여 접속


3. NAT Gateway
- EIP(Elasic Inernet Protocol) 생성
외부 데이터를 프라이빗 인스턴스로 전송하기 위해서는 공인 IP가 필요한데, 프라이빗 인스턴스에는 공인 IP가 존재하지 않는다. 그래서 NAT Gateway에 공인 IP(EIP)를 부여하여 프라이빗 인스턴스로 전달하게 된다.
결국 NAT Gateway를 이용하기 위해서는 반드시 EIP가 필요하다.

- NAT Gateway 생성
NAT Gateway는 외부에 있는 데이터를 프라이빗 인스턴스로 전달해야 하기 때문에 public subnet에 연결해준다.

- 라우팅 테이블 설정
NAT 게이트웨이가 전송하는 데이터를 받기 위해 private 라우팅 테이블에 NAT Gateway를 연결한다.

- 웹 서버 설치를 통해 NAT Gateway 작동하는지 테스트
> sudo yum install -y httpd

'클라우드 컴퓨팅 > AWS 실습' 카테고리의 다른 글
IAM 계정 생성 및 권한 설정 (0) | 2024.07.17 |
---|---|
AWS EC2 Windows FTP server 제작 실습 (0) | 2024.07.15 |
[24.07.11] VPC 피어링(Virtual Private Cloud Peering) 생성/연결 및 통신 실습 (0) | 2024.07.11 |
[24.07.10] AWS EBS(Elastic Block Store) Snapshot 실습 (Windows) (0) | 2024.07.10 |
[24.07.09] AWS EC2 Windows, Linux 환경에 디스크 확장 및 추가 실습 (0) | 2024.07.09 |