퍼블릭 IP 제거 후, 베스천 호스트를 이용한 원격 접속 방법

안녕하세요, surmin입니다.
이전에 작성했던 설정 관련 정보를 공유드리고자 합니다. 이 포스트가 여러분들의 설정 작업에 도움이 되길 바라며, 많은 참고 바랍니다.

목표

  • 기존 퍼블릭 IP는 프리티어 같은 경우 하나만 공짜이즉 즉 여러개 이상일 경우는 비용이 지불되어야 한다 그런대 큰 기업 같은 경우 그 모든 서버들을 수백 , 수천대의 비요을 지불하기는 너무 크다 그래서 ELB 의 공인 IP를 통하여 그하단의 여러 EC2 들은 사설로 통신을 하게 하여 비용을 절감하게 한다 또한 사설일 경우 푸티, xshell 등으로 접속이 안되니 가능하기 위하여 베스천 호스트를 만든다
  • 조건: 베스천 호스트는 다른 VPC 에다가 만들고 VPC 피어링 등을 이용하여 통신하게 만들자, 기존 퍼블릭존에 있던 EC2를 프라이빗 존으로 옮긴다.

구성도

구성

  1. 탄력적 IP를 제거하여 줍니다.

네트워킹 → 탄력적 IP 주소 연결 해제를 눌러 줍니다.

그런대도 사이트는 열리는 걸 알 수가 있습니다.

왜냐하면

EC2는 ALB에 공인 IP가 할당이 되어있어서 가능하기 때문입니다.

또한 체계가 internet-facing 설정을 해서 그렇습니다.

  1. 배스천 호스트 생성
  2. 새로운 VPC 및 EC2 를 생성하여 줍니다.
  • VPC는 베스천 VPC를 선택하여 줍니다 없을 경우 새로운 VPC 및 서브넷을 생성하여 줍니다.

생성된 배스천 호스트에 탄력적 IP 할당하여 줍니다.

VPC 비교

  • 우리의 목적은 VPC 피어링을 이용하여 각기 다른 VPC에 있는 EC2를 연결 할려는 것이 목적이다 그러므로 VPC 가 각기 다른지 다시 한번 확인 해 봅니다.
  1. VPC 피어링 설정

[주의 사항!!

설정할 때 내가 만약 A → B로 들어가야 할 경우 요청자를 A로 수락자를 B로 해야 된다

반대로 할 경우 A → B로 들어가지지 않는다!

1) VPC → 피어링 연결 생성을 눌러 줍니다.

2) 각 VPC를 설정 하여 줍니다.

3) 다른 VPC가 있는 해당 리전으로 들어가서 VPC→ 피어링 연결→ VPC 피어링 수락을 눌러줍니다.

라우팅 테이블 수정

  • VPC간의 연결 후 Network 통신을 위해 양쪽 VPC 간 에 라우팅 처리가 필요 합니다. 이를 위해 기존의 라우팅 테이블을 수정 해주어야 합니다.
  1. 해당 라우팅 테이블 편집을 눌러줍니다.

추가 버튼을 클릭하고 죄측의 대상 에서 서울 지전의 VPC의 대역인 10.0.0.0/16 입력 후 대상 항목에 VPC 피어링 선택 후 내가 만든 VPC 피어링을 선택 하여 주고 저장을 눌러 줍니다.

서울 리전(상대방) 라우팅 편집을 눌러 줍니다.

172.31.0.0/16 입력 후 마찬가지로 선택하여 줍니다.

보안 그룹 변경

  • 172.x.x.0/16 대역에 만들어진 EC2의 보안 그룹으로 들어가서 수정을 눌러줍니다.
  • 상대방의 서브넷을 인바운드에 추가하여 줍니다.

ping 테스트

배스천 호스트에서 ping 하였을때 잘 된 모습니다.

Key 파일 암호화

my_privatekeypair.pem 파일의 권한을 600으로 바꿔줍니다.. (바꾸지 않으면 키페어의 퍼미션이 너무 공개되어 있다는 오류가 나타날 수 있기 때문이다.)

chmod 600 my_private_keypair.pem

여기서 나는 한발더 앞서서 해당 pem 파일 을 zip 암호화를 이용하여 비밀번호를 걸어 줄겁니다.

즉 필요할때마다 압축을 풀어서 사용합니다.

#여기에서 preferred_password 를 아카이브를 암호화하는 데 사용할 비밀번호로 바꾸고 archive_file.zip 을 결과 아카이브에 부여할 파일 이름으로 바꿉니다.
zip --password preferred_password archive_file.zip filename1 filename2

#파일에 액세스하려면 아카이브의 압축을 풀고 암호를 입력
unzip archive_file.zip

#히스토리 전체 삭제
history -c

접속 테스트

ssh -i my_private_keypair.pem ec2-user@<private 인스턴스 사설IP>

아래 이미지 처럼 접속이 된걸 알수가 있습니다.

하지만 여기서 문제가 있다 바로 yum install 을 할경우 정상적으로 작동이 되지 않다는 것이다

왜냐하면 인바운드는 있지만 아웃바운드가 나가는 곳이 없기때문이다

ALB가 있다고 하지만 ALB는 해당 타겟의 인바운드만 들여보내지 아웃바운드는 내보내는 기능이 없다 또한 사설인 경우 인터넷게이트와 연결이 되어있지 않기때문에 외부랑 통신이 안된다

즉 사설에서도 외부랑 통신할수 있는 기술이 필요하다 해당 기술은 아래에 기재한다.

  1. 기존 퍼블릭 → 프라이빗으로 변경

EC2는 퍼블릭 존에 있다 그러므로 프라이빗으로 라우팅을 변경한다.

연결 편집 누른뒤 프라이빗으로 변경한다.

Auto Scaling 변경 한다.

알아서 자동으로 변경 됩니다.

NAT 게이트웨이

  • NAT 게이트웨이 를 통하면 내부에서 외부와 통신은 가능하지만 내부로는 직접 접속하지 못한다

⇒ 이부분은 배스천 호스트 가 있으니 괜찮다.

  • NAT는 퍼블릭 네트워크에 구축해야 합니다.
  • NAT 게이트웨이는 포트포워딩을 지원하지 않습니다 포트포워딩을 원할 경우 NAT 인스턴스를 사용하여야 합니다.

  1. NAT 게이트웨이 설정
  • 이름을 정해 줍니다.
  • 서브넷은 퍼블릭 존을 선택하여줍니다
  • 탄력적 IP를 할당 하여 줍니다

2. 라우팅 테이블 수정

  • 프라이빗 라우팅 테이블을 수정하여 줍니다

(위에서 생성한 NAT 게이트웨이를 넣어줍니다)D

테스트

yum 이 정상적으로 작동하는지 보자 왜냐하면 NAT게이트웨이가 정상적으로 된경우 NAT 게이트웨이를 통하여 아웃바운드가 나가기 때문이다.

아래 그림과 같이 잘되는 것을 볼수가 있다.

참고 URL

====

====

감사합니다.

위로 스크롤