개요 및 계획 (Planning)
- 인프라 구성 현황
- IDC 환경 (On-Premises Simulation)
- VPC CIDR: 10.10.0.0/16 (이름: IDC-VPC)
- Public Subnet: 10.10.0.0/24 (이름: IDC-Public-Subnet)
- Private Subnet: 10.10.1.0/24 (이름: IDC-Private-Subnet)
- EC2 : IDC-CGW (Public Subnet에 위치)
- EC2 : IDC-EC2 (Private Subnet에 위치)
- AWS 클라우드 환경
- VPC CIDR: 10.20.0.0/16 (이름: AWS-VPC)
- Public Subnet: 10.20.1.0/24 (이름: AWS-Public-Subnet)
- EC2 (: AWS-EC2 (Public Subnet에 위치)
- IDC 환경 (On-Premises Simulation)
최종 목표: IDC-EC2 (Private IP) <-> AWS-EC2 (Private IP) 양방향 Ping 통신 성공

1단계: IDC 환경(온프레미스), AWS 인프라 구축
먼저 온프레미스 데이터센터를 시뮬레이션할 AWS 환경을 구축합니다.
1. VPC 및 서브넷 생성(IDC-VPC)
- AWS Management Console > VPC > VPC 생성
- 생성할 리소스: VPC 등 선택
- 이름 태그 자동 생성: IDC 입력
- IPv4 CIDR 블록: 10.10.0.0/16
- 가용 영역(AZ) 수: 1
- 퍼블릭 서브넷 수: 1
- 프라이빗 서브넷 수: 1
- 서브넷 CIDR 블록 사용자 지정
- 퍼블릭 서브넷 CIDR 블록 : 10.10.0.0/24
- 프라이빗 서브넷 CIDR 블록 : 10.10.1.0/24
- NAT 게이트웨이: 없음
- VPC 엔드포인트: 없음
- [VPC 생성] 클릭 (VPC, 서브넷, 라우팅 테이블, 인터넷 게이트웨이가 자동으로 생성됩니다.)
2. VPC 및 서브넷 생성(AWS-VPC)
- VPC > VPC 생성
- 생성할 리소스: VPC 등
- 이름 태그 자동 생성: AWS
- IPv4 CIDR 블록: 10.20.0.0/16
- 가용 영역(AZ) 수: 1
- 퍼블릭 서브넷 수: 1
- 프라이빗 서브넷 수: 0
- 서브넷 CIDR 블록 사용자 지정
- 퍼블릭 서브넷 CIDR 블록 : 10.20.1.0/24
- NAT 게이트웨이: 없음
- [VPC 생성] 클릭
3. 보안그룹 및 EC2 생성(IDC-CGW, IDC-EC2)
- IDC 보안 그룹 생성: EC2 생성 전, 필요한 보안 그룹을 미리 만듭니다.
- VPC > 보안 그룹 > 보안 그룹 생성
- 보안 그룹 이름: IDC-CGW-SG
- VPC: IDC-VPC 선택
- 인바운드 규칙 추가:
- 유형 : SSH | 프로토콜 : TCP | 포트 범위 : 22 | 소스: 0.0.0.0/0
- 사용자 지정 UDP | UDP | 500 | 소스: 0.0.0.0/0
- 사용자 지정 UDP | UDP | 4500 | 소스: 0.0.0.0/0
- 모든 ICMP - IPv4 | 소스: 0.0.0.0/0
- 보안 그룹 이름: IDC-Private-SG
- VPC: IDC-VPC 선택
- 인바운드 규칙 추가:
- SSH | TCP | 22 | 소스: 0.0.0.0/0
- 모든 ICMP - IPv4 | 소스: 0.0.0.0/0
- 보안 그룹 생성(AWS):
- VPC > 보안 그룹 > 보안 그룹 생성
- 보안 그룹 이름: AWS-EC2-SG
- VPC: AWS-VPC 선택
- 인바운드 규칙 추가:
- SSH | TCP | 22 | 소스:0.0.0.0/0
- 모든 ICMP - IPv4 | 소스: 0.0.0.0/0
- EC2 인스턴스 시작(IDC-CGW)
- AWS Console > EC2 > 인스턴스 시작
- IDC-CGW 생성:
- 이름: IDC-CGW
- AMI: Amazon Linux 2023
- 인스턴스 유형: t2.micro(프리티어)
- 키 페어: 기존 키 페어 선택 또는 새로 생성 (접속에 필수)
- 네트워크 설정 편집:
- VPC: IDC-VPC
- 서브넷: IDC-Public-Subnet
- 퍼블릭 IP 자동 할당: 활성화 (매우 중요!)
- 방화벽(보안 그룹): 기존 보안 그룹 선택 > IDC-CGW-SG 선택
- [인스턴스 시작] 클릭
- IDC-EC2 생성:
- 이름: IDC-EC2
- AMI: Amazon Linux 2023
- 인스턴스 유형: t2.micro
- 키 페어: 동일한 키 페어 선택
- 네트워크 설정 편집:
- VPC: IDC-VPC
- 서브넷: IDC-Private-Subnet
- 퍼블릭 IP 자동 할당: 비활성화
- 방화벽(보안 그룹): 기존 보안 그룹 선택 > IDC-Private-SG 선택
- 고급세부정보 -> 사용자 데이터 (ssh 계정/패스워드 로 접속하기 위한 설정)
#!/bin/bash # root 비밀번호 설정 echo "root:qwe123" | chpasswd # sshd_config 수정 (비밀번호 로그인 허용 + root 로그인 허용) sed -i 's/^#\?PasswordAuthentication.*/PasswordAuthentication yes/' /etc/ssh/sshd_config sed -i 's/^#\?PermitRootLogin.*/PermitRootLogin yes/' /etc/ssh/sshd_config # sshd 재시작 systemctl restart sshd - [인스턴스 시작] 클릭
- IDC-CGW 소스/대상 확인 비활성화: 라우터 역할을 위해 필수입니다.
- IDC-CGW 인스턴스 선택 > [작업] > [네트워킹] > [소스/대상 확인 변경] > 중지 후 저장
- 이유: 기본적으로 EC2는 자신이 송수신하는 트래픽의 IP 주소가 자신의 IP와 일치하는지 확인합니다. 이 EC2는 VPC-A(10.10.0.0/16)로 향하는 다른 인스턴스들의 트래픽을 대신 전달(라우팅)해야 하므로, 이 확인 기능을 비활성화해야 합니다.
- IDC-CGW 인스턴스 선택 > [작업] > [네트워킹] > [소스/대상 확인 변경] > 중지 후 저장
- AWS EC2 인스턴스 시작:
- 이름: AWS-EC2
- AMI: Amazon Linux 2023
- 인스턴스 유형: t2.micro
- 키 페어: 기존 키 페어 사용
- 네트워크 설정 편집:
- VPC: AWS-VPC
- 서브넷: AWS-Public-Subnet
- 퍼블릭 IP 자동 할당: 활성화
- 방화벽(보안 그룹): 기존 보안 그룹 선택 > AWS-EC2-SG 선택
- [인스턴스 시작] 클릭
2단계: AWS VPN 구성
이제 IDC와 AWS를 연결하는 VPN을 AWS 측에서 설정합니다.
- 고객 게이트웨이(CGW) 생성: IDC-CGW를 논리적으로 표현합니다.
- VPC > 고객 게이트웨이 > 고객 게이트웨이 생성
- 이름: IDC-CGW-Object
- IP 주소: IDC-CGW EC2 인스턴스의 퍼블릭 IP를 입력합니다.
- [생성] 클릭
- 가상 프라이빗 게이트웨이(VGW) 생성 및 연결: AWS VPC 측의 게이트웨이입니다.
- VPC > 가상 프라이빗 게이트웨이 > 가상 프라이빗 게이트웨이 생성
- 이름: AWS-VGW
- [생성] 클릭
- 생성된 AWS-VGW 선택 > [작업] > [VPC에 연결] > AWS-VPC 선택 후 연결 (상태가 attached가 될 때까지 대기)
- Site-to-Site VPN 연결 생성:
- VPC > 사이트 간 VPN 연결 > VPN 연결 생성
- 이름: IDC-to-AWS-VPN
- 가상 프라이빗 게이트웨이: AWS-VGW 선택
- 고객 게이트웨이 : 기존
- 고객 게이트웨이 ID: IDC-CGW-Object 선택
- 라우팅 옵션: 정적(Static)
- 정적 IP 접두사: 10.10.0.0/16 (IDC 네트워크 CIDR) 입력
- 터널 1 옵션
- 사전 공유 키(Pre-Shared Key) : ipsectest
- 터널 1의 고급 옵션 > 터널 1 옵션 편집
- 1단계 암호화 알고리즘 : AES256 (AES256 빼고 나머지 암호화 X 클릭하여 삭제)
- 2단계 암호화 알고리즘 : AES256
- 1단계 무결성 알고리즘 : SHA2-256
- 2단계 무결성 알고리즘 : SHA2-256
- 1단계 DH 그룹 번호 : 14
- 2단계 DH 그룹 번호 : 14
- IKE 버전 : ikev2
- 터널 2 옵션
- 사전 공유 키(Pre-Shared Key) : ipsectest
- 터널 2의 고급 옵션 > 터널 2 옵션 편집
- 1단계 암호화 알고리즘 : AES256 (해당 암호화 제외 나머진 X 클릭하여 삭제)
- 2단계 암호화 알고리즘 : AES256
- 1단계 무결성 알고리즘 : SHA2-256
- 2단계 무결성 알고리즘 : SHA2-256
- 1단계 DH 그룹 번호 : 14
- 2단계 DH 그룹 번호 : 14
- IKE 버전 : ikev2
- [VPN 연결 생성] 클릭
- AWS-VPC 라우팅 테이블 전파 설정:
- VPC > 라우팅 테이블에서 AWS-VPC에 연결된 라우팅 테이블을 선택합니다.
- [라우팅 전파] 탭 > [라우팅 전파 편집] 클릭
- AWS-VGW의 [전파] 체크박스를 활성화하고 저장 합니다.
- 잠시 후 [라우팅] 탭에 10.10.0.0/16 경로가 VGW로 자동 추가됩니다.
- 이유: 이 설정을 통해 VGW는 VPN 터널을 통해 알게 된 경로(여기서는 10.20.0.0/16)를 이 라우팅 테이블에 자동으로 추가해 줍니다.
- VPN 구성 파일 다운로드:
- VPC > Site-to-Site VPN 연결에서 생성된 VPN 연결을 선택하고 [구성 다운로드] 클릭
- 공급업체: Generic
- IKE 버전 : ikev2 선택 후 [다운로드]
3단계: IDC-CGW VPN(Libreswan) 설정
다운로드한 구성 파일을 사용하여 IDC-CGW EC2에 Libreswan을 설정합니다.
- IDC-CGW EC2에 SSH 접속 (Public IP 사용)
- Libreswan 설치 및 시스템 설정:
# 패키지 업데이트 및 Libreswan 설치 sudo yum update -y sudo yum install libreswan -y # IP 포워딩 활성화 (라우터 기능) sudo sysctl -w net.ipv4.ip_forward=1 sudo sh -c 'echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf' - VPN 구성: 다운로드한 텍스트 파일을 열고 아래 정보를 확인합니다.
- Pre-Shared Key
- Virtual Private Gateway (AWS VGW의 터널 외부 IP 주소)
- VPN 설정 파일 생성 및 설정 (터널 1 기준)
- sudo vi /etc/ipsec.d/aws.conf
5. Pre-Shared Key 파일 생성# 아래 내용 붙여넣기 (값은 다운로드한 파일에서 복사) conn aws-vpn-tunnel # 연결 타입 type=tunnel authby=secret keyingtries=3 # Phase 1 (IKE) 설정 - AWS 호환 ikev2=insist ike=aes256-sha2_256;modp2048 ikelifetime=28800s # Phase 2 (IPSec) 설정 esp=aes256-sha2_256;modp2048 salifetime=3600s pfs=yes # Dead Peer Detection (중요!) dpddelay=10 dpdtimeout=30 dpdaction=restart # 네트워크 설정 (실제 값으로 교체 필요) left=%defaultroute leftid=1.1.1.1 #IDC-CGW의_퍼블릭_IP, 설정 예시 : 1.1.1.1 leftsubnets=10.10.0.0/16 right=2.2.2.2 #AWS_VGW_터널1의_퍼블릭_IP, 설정 예시 : 2.2.2.2 rightsubnets=10.20.0.0/16 # 연결 설정 auto=start compress=no# IP 확인방법 :
EC2 IDC-CGW 퍼블릭IP : EC2 인스턴스에서 확인
VGW 첫번째 터널 외부 IP :
확인방법 1 :
구성 다운로드
#3: Tunnel Interface Configuration 항목
Outside IP Addresses:
Virtual Private Gateway IP
확인방법 2 :
VPC
Site-to-Site VPN 연결
IDC-to-AWS-VPN 선택
하단 터널 세부 정보
Tunnel1 외부IP주소
sudo vi /etc/ipsec.d/aws.secrets
# 아래 형식으로 붙여넣기 (값은 다운로드한 파일에서 복사)[EC2 IDC-CGW의_퍼블릭_IP] [VGW의_첫번째_터널_외부_IP] : PSK "ipsectest" #Pre-shared 키 # 설정 예시 : 1.1.1.1 2.2.2.2 : PSK "ipsectest" - sudo vi /etc/ipsec.d/aws.conf
- IPsec 서비스 시작 및 확인:
# IPsec 서비스 시작 sudo systemctl start ipsec - 터널 정상 확인
- VPC > Site-to-Site VPN 연결 > IDC-to-AWS-VPN 클릭 > 하단 터널 세부 정보 > Tunnel 1 상태 Up 확인
4단계: IDC 환경 라우팅 설정
IDC-EC2가 AWS로 가는 트래픽을 IDC-CGW로 보낼 수 있도록 설정합니다.
- VPC > 라우팅 테이블에서 IDC-Private-Subnet에 연결된 라우팅 테이블을 선택합니다.
- [라우팅] 탭 > [라우팅 편집] > [라우팅 추가]
- 대상: 10.20.0.0/16 (AWS VPC CIDR)
- 대상(Target): 인스턴스 선택
- 네트워크 인터페이스 ID: IDC-CGW 인스턴스를 선택합니다.
- [변경 사항 저장]
5단계: 최종 통신 테스트
모든 설정이 완료되었습니다. 이제 최종 목표를 확인합니다.
- AWS 콘솔에서 터널 상태 확인:
- VPC > 사이트 간 VPN 연결에서 생성한 VPN을 선택합니다.
- [터널 세부 정보] 탭에서 터널 1의 상태가 UP으로 표시되는지 확인합니다.
- IDC-EC2에서 AWS-EC2로 Ping 테스트:
- IDC-EC2에 직접 SSH 접속은 불가하므로, IDC-CGW를 통해 접속합니다.
- 먼저 로컬 PC에서 IDC-CGW로 SSH 접속합니다.
- IDC-CGW 터미널에서 IDC-EC2의 프라이빗 IP로 SSH 접속합니다.
# IDC-CGW 터미널에서 ssh root@<IDC-EC2의_Private_IP> password : qwe123 - IDC-EC2 터미널에서 AWS-EC2의 프라이빗 IP로 ping을 실행합니다.
ping <AWS-EC2의_Private_IP> # 예시: ping 10.20.1.123
[예상 결과]
PING 10.20.1.123 (10.20.1.123) 56(84) bytes of data.
64 bytes from 10.20.1.123: icmp_seq=1 ttl=254 time=2.34 ms
64 bytes from 10.20.1.123: icmp_seq=2 ttl=254 time=2.15 ms
...
이 결과가 나오면, IDC의 프라이빗 서브넷에 있는 EC2가 VPN 터널을 통해 AWS VPC의 EC2와 성공적으로 프라이빗 통신을 하는 것입니다.
3. AWS-EC2에서 IDC-EC2 프라이빗 IP로 ssh 접속 테스트
# AWS-EC2 터미널에서
ssh root@<IDC-EC2의_Private_IP>
password : qwe123
6단계: 삭제방법
1단계: EC2 인스턴스 종료
가장 먼저 VPC 내에서 실행 중인 EC2 인스턴스들을 종료합니다.
- EC2 콘솔로 이동합니다.
- 체크박스를 사용하여 생성했던 모든 인스턴스를 선택합니다:
- IDC-CGW
- IDC-EC2
- AWS-EC2
- [인스턴스 상태] > [인스턴스 종료]를 클릭하고 확인합니다.
2단계: VPN 관련 리소스 삭제
VPN 연결은 여러 구성 요소가 엮여 있으므로, 다음 순서를 반드시 지켜주세요.
- Site-to-Site VPN 연결 삭제:
- VPC 콘솔 > 사이트 간 VPN 연결로 이동합니다.
- IDC-to-AWS-VPN 연결을 선택합니다.
- [작업] > [VPN 연결 삭제]를 클릭하고 삭제를 입력하여 확인합니다. (상태가 deleting으로 변경됩니다.)
- 가상 프라이빗 게이트웨이(VGW) 분리 및 삭제:
- VPC 콘솔 > 가상 프라이빗 게이트웨이로 이동합니다.
- AWS-VGW를 선택합니다.
- [작업] > [VPC에서 분리]를 클릭하여 AWS-VPC와의 연결을 해제합니다. (상태가 detaching에서 detached로 변경될 때까지 기다립니다. 30초 이내 분리됨)
- detached 상태가 되면, 다시 [작업] > [가상 프라이빗 게이트웨이 삭제]를 클릭하여 삭제합니다.
- 고객 게이트웨이(CGW) 삭제:
- VPC 콘솔 > 고객 게이트웨이로 이동합니다.
- IDC-CGW-Object를 선택합니다.
- [작업] > [고객 게이트웨이 삭제]를 클릭하여 삭제합니다.
3단계: VPC 삭제 (가장 간편한 방법)
VPC를 삭제하면 그 안에 포함된 서브넷, 라우팅 테이블, 인터넷 게이트웨이, 보안 그룹 등 모든 종속 리소스가 한 번에 자동으로 삭제됩니다.
- VPC 콘솔 > 내 VPC로 이동합니다.
- 먼저 AWS-VPC를 선택합니다.
- [작업] > [VPC 삭제]를 클릭합니다.
- 삭제 확인 창이 나타나면, 삭제될 리소스 목록을 확인하고 텍스트 필드에 삭제 (또는 delete)를 입력한 후 삭제 버튼을 누릅니다.
- 동일한 방법으로 IDC-VPC를 선택하여 삭제를 진행합니다.
※ VPC 삭제 시 주의사항:
- VPC 내에 EC2 인스턴스, NAT 게이트웨이, VPC 엔드포인트 등 남아있는 리소스가 있으면 VPC 삭제가 실패합니다. 1단계에서 EC2를 먼저 종료한 이유가 바로 이것입니다.
- 만약 "VPC 삭제" 기능이 오류를 발생시킨다면, VPC에 연결된 네트워크 인터페이스(ENI) 등이 남아있기 때문일 수 있습니다. 이 경우, 오류 메시지를 확인하여 해당 리소스를 수동으로 먼저 삭제해야 합니다.
'AWS' 카테고리의 다른 글
| AWS SG 보안그룹 설정 방식 3가지 (2) | 2025.07.29 |
|---|---|
| EC2 Bastion Host 를 사용하여 SSH 접속 방법 (0) | 2025.04.24 |
| Windows에서 AWS CLI 사용하여 EC2 시작/중지 하기 (1) | 2023.11.13 |
| AWS 프리티어 만료 시 기존 Gmail 로 재가입 방법 (1) | 2023.11.06 |