VPC
VPC 생성
- 생성할 리소스: ‘VPC만’
- 이름: VPC-Hybrid
- CIDR(수동입력): 172.32.0.0/16
- IPv6 CIDR 블록: 없음
서브넷 생성
- VPC ID: ‘VPC-Hybrid’ 선택
- 서브넷 이름: Private-SN-Hybrid
- 가용 영역: Default or 임의의 AZ 선택
- IPv4 VPC CIDR 블록: 기본값(172.32.0.0/16)
- IPv4 서브넷 CIDR 블록: 172.32.1.0/24
VPC에 등록되는 네트워크는 172.32.*.* 대역을 모두 사용가능
해당 서브넷에 등록하게 되면 172.32.1.* 대역인 256개를 사용
인터넷 게이트웨이 생성
VPC에 연결
- IGW-Hybrid 선택 후 작업 클릭
- VPC에 연결: ‘VPC-Hybrid’ 선택
Routing Table 생성
- 이름: RT-Hybrid
- VPC: ‘VPC-Hybrid’ 선택
라우팅 편집
- RT-Hybrid 선택 후 하단 대시보드의 라우팅 편집 클릭
- ‘라우팅 추가’ 클릭
- 대상1: 0.0.0.0/0
- 대상2: 인터넷 게이트웨이 및 생성한 ‘IGW-Hybrid’의 ID 선택 후 저장
서브넷 연결
- RT-Hybrid 선택 후 하단 대시보드의 ‘서브넷 연결’ 클릭
- ‘명시적 서브넷 연결’에서 서브넷 연결 편집 클릭
- 172.32.1.0/24의 서브넷 체크 후 저장
최종 VPC 상태
- VPC 페이지 진입
- ‘VPC-Hybrid’ 클릭
- 하단 대시보드의 리소스맵 클릭 후 아래와 비교
최종 VPC 리소스맵
Site-to-Site VPN 설정
고객 게이트웨이 생성
VPN 연결 시 On-Premise가 AWS에 접근 할 게이트웨이
- 이름: CGW-Hybrid
- BGP ASN: 기본 값(65000)
- IP 주소: VPN과 연결 할 On-Premise 외부 아이피(https://ifconfig.me)
- 인증서 ARN: 선택 X
가상 프라이빗 게이트웨이 생성
VPN 연결 시 On-Premise와 연결 할 VPC의 가상 게이트웨이
- 이름: VGW-Hybrid
- ASN: Amazon 기본 ASN
VGW 연결
- ‘VGW-Hybrid’ 선택 후 작업 클릭
- VPC에 연결 클릭
- ‘VPC-Hybrid’ VPC 선택 후 연결
Routing table에 VGW 전파
- 라우팅 테이블 페이지 접속
- ‘RT-Hybrid’ 선택 후 하단의 ‘라우팅 전파’ 클릭
- ‘라우팅 전파 편집’ 클릭 후 vgw 활성화 체크 및 저장
- 라우팅 테이블에 vgw(172.24.0.0/24) 추가 식별
VPN 연결 생성
- 이름: VPN-Hybrid
- 대상 게이트웨이 유형: ‘가상 프라이빗 게이트웨이’ 체크 후 ‘VGW-Hybrid’ 선택
- 고객 게이트웨이: ‘기존’ 선택 후 ‘CGW-Hybrid’ 선택
- 라우팅 옵션: ‘정적’ 선택
- 고정 IP 접두사: On-Premise의 내부 IP (192.168.0.0/24)
- 나머지: 설정 X
Site-to-Site 연결
실험은 192.168.0.2에서 진행한다고 가정
VPN 구성 다운로드
- AWS의 ‘VPN-Hybrid’ 클릭
- ‘구성 다운로드’ 클릭 후 Openswan으로 다운로드
(On-Premise) Libreswan 설치
On-Premise에 Libreswan을 설치해서 IPSec VPN 연결 시도
- 우분투에서 진행
- 다운로드 받은 구성의 순서대로 진행
libreswan 설치
1
| sudo apt install libreswan -y
|
libreswan 설정
1
2
3
4
5
6
| vi /etc/sysctl.conf
# 아래 행 추가
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.default.accept_source_route = 0
|
conf 및 secrets 파일 설정
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| # /etc/ipsec.d/aws.conf 생성
# 구성 파일에서 아래 conn 영역 복사
conn Tunnel1
authby=secret
auto=start
left=%defaultroute
leftid= #기본: On-Premise 외부 IP
right= #기본: AWS VPN 터널 1
type=tunnel
ikelifetime=8h
keylife=1h
#### 영역 제거 ####
# phase2alg=aes128-sha1;modp1024
# ike=aes128-sha1;modp1024
# auth=esp
keyingtries=%forever
keyexchange=ike
leftsubnet= # On-Premise CIDR(192.168.0.0/24)
rightsubnet= # AWS VPC CIDR(172.32.0.0/16 or 172.32.1.0/24)
dpddelay=10
dpdtimeout=30
dpdaction=restart_by_peer
|
1
2
3
| # /etc/ipsec.d/aws.secrets 생성
# 구성파일에서 아래 PSK 영역 복사
<기본: On-Premise 외부 IP> <기본: AWS VPN 터널 1 IP>: PSK "PSK KEY"
|
libreswan restart
1
2
3
4
| # status에 loaded1, active1이 표시되면 성공
sudo ipsec restart
sudo ipsec verify
sudo ipsec status
|
VPN 연결 확인
Ping@On-Premise
1
2
| # On-Premise 환경(192.168.0.2)에서 VPC 내부 인스턴스(172.32.1.171)로 ping
ping 172.32.1.171
|
Ping@AWS-VPC
1
2
| # VPC 내부 인스턴스(172.32.1.171)에서 On-Premise(192.168.0.2)로 ping
ping 192.168.0.2
|
On-Premise의 서브넷 내에 다른 PC에서 VPN 이용
상황: A(192.168.0.2)와 172.32.1.171(VPC)가 IPSec VPN으로 연결돼 있을 때, B(192.168.0.3) PC가 해당 VPN을 이용하여 VPC 인스턴스와 통신
- B는 ipsec vpn 설정 및 설치 필요 없음
라우팅 테이블 관리
B에서 172.32.1.171로 접근할 때, A를 빌리는 라우팅 테이블 추가 작업 진행
1
2
3
| # gw에 소속 게이트웨이가 아닌 A의 내부 IP를 작성하는 것에 유의
sudo route add -net 172.32.1.0/24 gw 192.168.0.2
|