기본적으로 Amazon VPC로 시작하는 인스턴스는 자체(원격) 네트워크와 통신할 수 없다.
그러나 AWS Site-toSite VPN(Site-to-Site VPN) 연결을 생성하고 연결을 통해 트래픽을 전달하도록 라우팅을 구성하여 VPC에서 원격 네트워크에 대한 액세스를 활성화할 수 있다.
Site-to-Site 기본적인 개념은 다음과 같다.
• VPN 연결: 온프레미스 장비와 VPC 간의 보안 연결.
• VPN 터널: 데이터가 고객 네트워크에서 AWS와 주고받을 수 있는 암호화된 링크, 각 VPN 연결에는 고가용성을 위해 동시에 사용할 수 있는 두 개의 VPN 터널이 포함되어 있다.
• 고객 게이트웨이: 고객의 온프레미스 디바이스에 대한 정보를 AWS에 제공하는 AWS 리소스.
• 고객 게이트웨이 디바이스: Site-to-Site VPN 연결을 위해 고객 측에 설치된 물리적 디바이스 또는 소프트 웨어.
• 대상 게이트웨이(Target gateway): 사이트 간 VPN 연결의 Amazon 측 VPN 엔드포인트.
• 가상 프라이빗 게이트웨이(Virtual private gateway): 가상 프라이빗 게이트웨이는 단일 VPC에 연결할 수 있는 사이트 간 VPN 연결의 Amazon 측 VPN 엔드포인트.
• 전송 게이트웨이(Transit gateway): 사이트 간 VPN 연결의 Amazon 측 VPN 엔드포인트로 여러 VPC와 온 프레미스 네트워크를 상호 연결하는 데 사용될 수 있는 전송 허브.
기본적인 아키텍처는 위의 그림을 따르며, 여러 VPC를 연결할 수 있으나 여기서는 단일 VPC만 설정하며, 라우터를 사용하지 않는 정적로컬로 설정하겠다.
먼저 Local Device 정보가 있는 고객게이트웨이를 생성한다.
여기서 필수항목은 IP주소로 Local Device의 Public IP를 기입하면된다.
인증서 ARN은 지정하지않으면 Aws에서 인증서를 생성해서 사용한다.
ASN은 BGP라우팅에서 사용하기 위한 식별번호인데 이 글에서는 정적라우팅을 사용하므로 기본값으로 설정한다.
VGW를 생성하고 나면 Detached상태인데
VPC에 연결을 눌러서 원하는 VPC에 연결해주자.
다음 Aws VPC에 라우팅을 해주기 위해서 라우팅테이블로 접속 후
라우팅 테이블에 접속
통신하고자 하는 서브넷이 있는 라우팅테이블을 선택 후
라우팅 전파 편집을 예로 변경해준다.
다음 VPN 연결을 생성하여
이전에 생성했던 리소스를 선택한다.
정적라우팅을 할 것이기 때문에
고정IP접두사 : 온프레미스의 Private CIDR 를 기입한다. ex) 10.0.0.0/16
통신을 제한하고 싶으면 로컬IPv4, 원격IPv4 네트워크 CIDR를 기입한다.
다음 우측 상단의 구성다운로드 클릭
원하는 업체를 선택하면 되나 업체마다 Config가 다르다.
이 글에서는 libreswan을 사용하겠음.
IKE 버전은 프로토콜버전인데, 버전이 다르면 통신이 불가능하다. 여기서는 IKEv2로 설정한다.
터널은 #1, #2 총 2개라 가용성을 위해 2개를 연결할 수 있다.
구성파일에서는 Pre-Shared Key가 통신을 위해 필요하다.
여기서 부터는 s2s 연결을 위한 Local Device 설정이다.
sudo yum install libreswan
로 libreswan을 설치해준다.
libreswan의 기본경로는
/etc/ipsec.d
이다.
기본경로에 myconnection 이름의 설정파일을 생성해준다.
vi /etc/ipsec.d/myconnection.conf
conn myconnection
left=%defaultroute
leftsubnet=<LOCAL_PRIVATE_SUBNET>
right=<TUNNEL_OUTSIDE_IP>
rightsubnet=<AWS_VPC>
authby=secret
auto=start
ikev2=yes
설정파일 양식은 다음과 같다.
right=<TUNNEL_OUTSIDE_IP>
는 VPN 연결생성에서 아래의 터널외부IP를 기입하면된다.
IKE 버전 1을 사용하고 싶으면
ikev2=yes
를 no로 변경한다.
다음은 secrets파일을 생성해야하는데
vi /etc/ipsec.d/myconnection.secrets
기본경로에 myconnection 이름의 secrets파일을 생성한다.
<TUNNEL_OUTSIDE_IP> 0.0.0.0 %any: PSK “<Pre-Shared Key>"
secrets파일의 양식이다.
앞서 사용한 터널외부IP를 작성하고
다운로드한 구성파일의 키값을 작성한다.
작성 시 가시성을 위해 < > 표시를 했는데 실제로
leftsubnet=10.0.0.0/16
처럼 표기해야한다.
ipsec verify
로 설정이 끝났으면 확인 해본다.
설정이 완료되면 모두 OK로 뜬다.
- 오류해결법 -
Checking rp_filter [ENABLED] 이면
echo 0 > <PATH>
Ex)
echo 0 > /proc/sys/net/ipv4/conf/enp0s31f6/rp_filter
Two or more interfaces found, checking IP forwarding [FAILED] 일 경우
vi /etc/sysctl.conf
net.ipv4.ip_forward=1
를 마지막행에 삽입해준다.
* 다른 오류도 발생할 수 있으나 잘 해결 해보자.
systemctl start ipsec
로 ipsec을 실행해준다.
ipsec stauts
으로 확인 했을때 active 1 이라는 상태가 뜨면 수 분안에 터널 상태가 UP으로 전환된다.
* UDP 500, 4500 사용
로컬과 Aws의 연결 테스트를 해보고 싶다면 연결 한 해당 VPC에 EC2를 생성해서 Local에서 Ping을 날려보자.
'CSP (Cloud Service Provider) > AWS' 카테고리의 다른 글
쿠버네티스 EC2 ubuntu에 k8s 구성하기 (0) | 2022.06.29 |
---|---|
[AWS] 도메인 등록 (0) | 2022.06.27 |
[AWS] EC2 (0) | 2022.06.24 |
AWS Athena 란? (0) | 2022.06.23 |
AWS CLI 리눅스에 설치 및 사용 (0) | 2022.06.21 |
댓글