구조도
- 목표
라우팅 인스턴스인 VYOS (호스트) - 클라이언트에서 생성한 vpn 을 연결하여 프라이빗서브넷을 통한 데이터 마이그레이션 인프라 구축
(vyos 를 통해 클라이언트의 vpc가 호스트 vpc 의 로컬네트워크에 있는 것처럼 작동하게 위해서 구축)
1. 클라이언트 VPN 생성
-CGW 생성 -> VYOS와만 연결된 게이트웨이이므로 연결대상에 VYOS PUBLIC IP 입력 후 생성.
-TGW (대상게이트웨이) CGW 와 연결하여 VPN 생성
네트워크와 네트워크와 연결이기 때문에 bgp 라우팅 프로토콜로 연결
TGW 와의 연결이유는 관리 용이화와 추후 확장성을 계획하여 대상게이트웨이로써 연결함.
- TGW 테이블 생성 -> VPN과 VPC 의 연결을 담당하기 위해 필요 -> 테이블이 2개는 필요하다. (VPN -> VPC, VPC->VPN)
-테이블 생성을 위해 VPN 에 연결된 attachment 와 VPC 에 연결된 attachment 생성
- 테이블 작성 - 통로 역할이라고 보면 된다
(클라이언트는 VPC -> VPN 을 통해 HOST 와 통신하는 테이블, 호스트는 VPN -> VPC 를 통해 클라이언트와 통신하는 테이블)
VPC -> VPN 라우팅 테이블 (연결은 VPC 전파는 VPN)
VPN -> VPC 라우팅 테이블 (연결은 VPN 전파는 VPC)
2. 호스트의 VYOS 인스턴스는 마켓 플레이스에서 검색하여 FREE-TRIAL 로 설치 할 수 있다.
vyos 는 라우팅을 담당하는 인스턴스로써 프라이빗 인스턴스와 연결이 되어야 하고 프라이빗 라우팅 테이블에서
클라이언트의 vpc의 앤드포인트가 되어야 한다.
-vyos의 소스 확인 대상/변경 중지 - 이 부분은 acl 보안과 관련된 부분인데 db 와의 연결을 위해 3306포트도 열어줘야 되고 매번 재시작 하기 번잡하므로 편의상 중지함.
- 네트워크 인터페이스를 아이디를 확인해야 된다. 프라이빗라우팅테이블에 연결해야 되기 때문.
호스트 네트워크 내부는 프라이빗 서브넷과 vyos 의 라우팅 ip 를 정적으로 연결한다. (cf. vyos 는 자신이 속한 서브넷에 대한 제어권을 행사할 수 있다.)
ssh -i "[keyname].pem" vyos@[ec2 IP Address]
configure
set protocols static route [온프레미스 PrivateSubnet CIDR] next-hop [Vyos의 Subnet의 VPC 라우터 용 IP]
라우터용 ip 란 서브넷의 첫 ip 이므로 예를 들어 10.0.0.0/24 의 경우엔 10.0.0.1 이 라우터용 ip 가 된다.
vyos@ip-10-0-0-197:~$ show protocls
Invalid command: show [protocls]
vyos@ip-10-0-0-197:~$ configure
[edit]
vyos@ip-10-0-0-197# show protocols
bgp 65000 {
address-family {
ipv4-unicast {
network 10.0.0.0/16 {
}
}
}
neighbor 169.254.155.33 {
remote-as 64512
timers {
holdtime 30
keepalive 10
}
}
neighbor 169.254.163.21 {
remote-as 64512
timers {
holdtime 30
keepalive 10
}
}
}
static {
route 10.0.5.0/24 {
next-hop 10.0.0.1 {
}
}
}
-> 연결이 되었나 확인한다.
- 일본 SITE TO SITE VPN 에 돌아가 구성파일을 다운로드 -> 자동화 및 스크립팅 -> VPN 의 터널과 VYOS 의 IP 를 연결
IPSec Tunnel #1 IPSec Tunnel #2
#수정전
set vpn ipsec site-to-site peer XXX.XXX.XXX.XXX local-address ['VyOS의 public IP Address']
set protocols bgp 65000 network 0.0.0.0/0
#수정후
set vpn ipsec site-to-site peer XXX.XXX.XXX.XXX local-address ['VyOS의 private IP Address']
set protocols bgp 65000 network [온프레미스 VPC IP CIDR]
이동 후 위의 내용처럼 [] 부분에 [VyOS의 private IP Address] 와 [온프레미스 VPC IP CIDR]로 수정 해줍니다. 위에서 다운받고 수정한 구성파일을 전부 복사하여 VyOS 설정모드에서 붙여놓기를 합니다.
commit
설정된 내용을 커밋 합니다.
save
커밋을 완료한 후 오류가 없으면 저장해줍니다.
exit
저장이 완료된 후 설정 모드에서 빠져나옵니다.
set protocols bgp 65000 address-family ipv4-unicast network [온프레미스 VPC CIDR]
->
-> 온프레미스 네트워크가 VPN을 통해 전파되어 추가 (tgw 라우팅테이블 리소스-vpc) -> 클라이언트의 vpc 와 연결됨
터널링 up 상태 확인
3. 프라이빗 라우팅 테이블에 앤드포인트와 각 vpc 입력
서울의 프라이빗 라우팅 테이블에 vyos 와 eni 와 클라이언트 vpc cidr 입력 -프라이빗서브넷으로만 통신하기 위함
클라이언트의 프라이빗 라우팅 테이블에 tgw 와 호스트이 vpc cidr 입력
4. ping 테스트를 통해 연결확인
클라이언트의 경우는 터널과 연결된 vyos 를 통해 호스트의 클라이언트에 접속할 수 있으나
호스트의 프라이빗 인스턴스는 vyos 와 정적경로로 연결되어 있으므로 vyos 의 인바운드 규칙에 icmp 3306 포트를 열어줘야 된다.
ping 테스트
호스트의 프라이빗 ip (10.0.5.166 -> 172.31.50.5)
클라이언트의 프라이빗 ip (172.31.50.5 -> 10.0.5.166)
SITE-TO-SITE VPN 을 활용한 백업데이터센터 구축 -(2) (0) | 2024.03.10 |
---|