OpenVPN을 통해 AWS VPC에서 트래픽 라우팅

OpenVPN을 통해 AWS VPC에서 트래픽 라우팅

AWS VPC 프라이빗 서브넷에서 OpenVPN을 통해 액세스할 수 있는 일부 호스트에 액세스해야 합니다. 내 VPC 설정은 설명된 것과 유사합니다.여기.

개인 네트워크 내부에서 다음 명령을 사용하여 OpenVPN 클라이언트를 설정하는 EC2 인스턴스를 만들었습니다.

openvpn --verb 3 --config config.ovpn  --script-security 2 --up up.sh

up.sh 스크립트 파일의 내용:

#!/bin/bash

/sbin/sysctl -w net.ipv4.ip_forward=1
/sbin/iptables -A FORWARD -i eth0 -o tun0 -j ACCEPT 2>&1
/sbin/iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED \
-j ACCEPT 2>&1
/sbin/iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE 2>&1

171.20.0.0/16이 VPN 뒤의 서브넷이라고 가정해 보겠습니다. 프라이빗 서브넷의 라우팅 테이블은 다음과 같습니다.

DESTINATION    TARGET
10.0.0.0/16    local
0.0.0.0/0      nat-gateway
171.20.0.0/16  ec2-instance-with-openvpn-client

기본 보안 그룹을 사용하고 있습니다.

내 문제는 프라이빗 서브넷 내부의 ECS 클러스터에서 실행되는 Docker 이미지에서 VPN 뒤의 호스트에 액세스할 수 없다는 것입니다. EC2 인스턴스에서 직접 VPN 뒤의 호스트에 액세스할 수 있기 때문에 OpenVPN 클라이언트가 제대로 작동하고 있습니다. 제가 관찰한 바에 따르면 docker의 트래픽은 결코 EC2 인스턴스에 도달하지 않는 것으로 생각되지만 이에 대해 100% 확신할 수는 없습니다.

답변1

VPC 네트워크는 이더넷을 에뮬레이트하는 레이어 3 네트워크인 소프트웨어 정의 네트워크입니다. 기본적으로 네트워크는 (트래픽 방향에 따라) 해당 인스턴스의 주소가 소스 또는 대상 주소로 정확하게 존재하지 않는 EC2 인스턴스로 트래픽이 전달되는 것을 허용하지 않습니다. 따라서 확인을 비활성화해야 합니다. 이런 경우에는요.

소스 또는 대상 확인 변경

소스/대상 확인 속성은 인스턴스에서 소스/대상 확인이 활성화되는지 여부를 제어합니다. 이 속성을 비활성화하면 인스턴스가 특별히 해당 인스턴스로 향하지 않는 네트워크 트래픽을 처리할 수 있습니다. 예를 들어 네트워크 주소 변환, 라우팅 또는 방화벽과 같은 서비스를 실행하는 인스턴스는 이 값을 로 설정해야 합니다 disabled. 기본값은 입니다 enabled.

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html#change_source_dest_check

관련 정보