AWS 인터넷 게이트웨이를 통해 Strongswan VPN 트래픽을 라우팅할 수 없습니다.

AWS 인터넷 게이트웨이를 통해 Strongswan VPN 트래픽을 라우팅할 수 없습니다.

감사합니다. 모든 개인 인터넷 트래픽을 라우팅하기 위해 EC2 인스턴스에 VPN 서버를 설정하고 싶지만 제대로 작동하지 않습니다. 어떤 도움이라도 주시면 감사하겠습니다.

다음 설정이 있습니다.

    Private Network  10.0.0.0/24    |               Internet              |  AWS VPC / Subnet 10.0.1.0/24
   PC                        Fritzbox Router                             IGW         EC2
 10.0.0.11   ----    10.0.0.1 ------| -- MyPublicLocalIP -- EC2PublicIP --| ------ 10.0.1.193

라우터에는 EC2 인스턴스에서 실행되는 Strongswan 인스턴스에 대한 IPSec 연결이 있습니다. EC2 인스턴스의 네트워크 인터페이스에는 소스/대상 확인이 비활성화되어 있습니다. 보안 그룹은 PublicLocalIP 및 서브넷("모든 소스 허용"도 시도함) 및 대상에서 소스가 포함된 모든 트래픽을 허용합니다.

VPN 연결을 설정할 수 있으며 개인 네트워크에서 10.0.1.142 및 10.0.1.1을 ping할 수 있습니다. EC2 인스턴스 자체도 8.8.8.8과 같은 퍼블릭 IP를 ping할 수 있습니다. 하지만 tshark를 사용하여 EC2 인스턴스에서 한 방향으로 이동하는 패킷을 볼 수 있음에도 불구하고 개인 네트워크에서 8.8.8.8 또는 다른 공용 IP를 핑할 수 없습니다.

tshark -f "icmp"

   10 7.320371756 10.0.0.11 → 8.8.8.8 ICMP 98 에코(ping) 요청 id=0x0034, seq=1/256, ttl=63
   11 8.332639368 10.0.0.11 → 8.8.8.8 ICMP 98 에코(ping) 요청 id=0x0034, seq=2/512, ttl=63
   12 9.356457465 10.0.0.11 → 8.8.8.8 ICMP 98 에코(ping) 요청 id=0x0034, seq=3/768, ttl=63
   13 10.380464177 10.0.0.11 → 8.8.8.8 ICMP 98 에코(ping) 요청 id=0x0034, seq=4/1024, ttl=63
   14 11.404715789 10.0.0.11 → 8.8.8.8 ICMP 98 에코(ping) 요청 id=0x0034, seq=5/1280, ttl=63
   15 12.428989444 10.0.0.11 → 8.8.8.8 ICMP 98 에코(ping) 요청 id=0x0034, seq=6/1536, ttl=63

EC2 ipsec.conf입니다.

구성 설정
연결 %기본값
 유형=터널
 왼쪽=%모두
 leftid=EC2PublicIP
 왼쪽서브넷=0.0.0.0/0
 자동=추가
 조각화=예
 forceencaps=아니요
 모바이크=예
 왼쪽 인증=psk
 오른쪽 인증=psk

페이스북
 ike=aes256-sha-modp1024
 esp=aes256-sha1-modp1024
 오른쪽=MyPublicLocalFQ.net
 [이메일 보호됨]
 오른쪽서브넷=10.0.0.0/24
 rightdns=8.8.8.8,8.8.4.4
 ikelifetime=3600초
 키 수명=3600초

이것은 Fritzbox 라우터 IPSec 구성입니다.

vpncfg {
  연결 {
    활성화 = 아니요;
    편집 가능 = 예;
    conn_type = conntype_lan;
    이름 = "EC2VPN";
    boxuser_id = 0;
    Always_renew = 예;
    accept_not_encrypted = 아니요;
    dont_filter_netbios = 예;
    로컬립 = 0.0.0.0;
    local_virtualip = 0.0.0.0;
    원격IP = 0.0.0.0;
    원격_가상립 = 0.0.0.0;
    keepalive_ip = 0.0.0.0;
    지역 ID {
      fqdn = "MyPublicLocalFQ.net";
    }
    원격 ID {
      fqdn = "EC2PublicIP";
    }
    모드 = Phase1_mode_idp;
    Phase1ss = "전체/전체/전체";
    키 유형 = connkeytype_pre_shared;
    키 = "THE_PSK_KEY";
    cert_do_server_auth = 아니요;
    use_nat_t = 예;
    use_xauth = 아니오;
    use_cfgmode = 아니오;
    Phase2localid {
      IP넷 {
        ipaddr = 10.0.0.0;
        마스크 = 255.255.255.0;
      }
    }
    Phase2remoteid {
      IP넷 {
        ipaddr = 10.0.1.0;
        마스크 = 255.255.255.0;
      }
    }
    Phase2ss = "esp-all-all/ah-none/comp-all/pfs";
    accesslist = "모든 IP 허용";
  }
  ike_forward_rules = "udp 0.0.0.0:500 0.0.0.0:500",
  "udp 0.0.0.0:4500 0.0.0.0:4500";
}

IPsec 상태 전체

IKE charon 데몬 상태(strongSwan 5.8.2, Linux 5.4.0-1029-aws, x86_64):
  가동 시간: 91초, 2020년 12월 13일 01:57:01 이후
  malloc: sbrk 1622016, mmap 0, 사용된 648096, 무료 973920
  작업자 스레드: 유휴 16개 중 11개, 작업 중 5/0/0/0, 작업 대기열: 0/0/0/0, 예약됨: 3
  로드된 플러그인: charon aesni aes rc2 sha2 sha1 md5 mgf1 무작위 nonce x509 취소 제약 조건 pubkey pkcs1 pkcs7 pkcs8 pkcs12 pgp dnskey sshkey pem openssl fips-prf gmp 에이전트 xcbc hmac gcm drbg attr kernel-netlink 해결 소켓 기본 connmark 스트로크 업다운 eap-mschapv2 xauth -일반 카운터
수신 IP 주소:
  10.0.1.193
사이:
          fb: %모든...MyPublicLocalFQ IKEv1/2
          fb: local: [EC2PublicIP]는 사전 공유 키 인증을 사용합니다.
          fb: 원격: [MyPublicLocalFQ]는 사전 공유 키 인증을 사용합니다.
          fb: 하위: 0.0.0.0/0 === 10.0.0.0/24 터널
보안 연결(1개, 0개 연결):
          fb[2]: 90초 전에 설정됨, 10.0.1.193[EC2PublicIP]...MyPublicLocalIP[MyPublicLocalFQ]
          fb[2]: IKEv1 SPI: c1c1ef074becc316_i 3e3007efcc116605_r*, 43분 내에 사전 공유 키 재인증
          fb[2]: IKE 제안: AES_CBC_256/HMAC_SHA1_96/PRF_HMAC_SHA1/MODP_1024
          fb{1}: 설치됨, 터널, 필수 ID 1, UDP SPI의 ESP: cba035a9_i 4fbe83d8_o
          fb{1}: AES_CBC_256/HMAC_SHA1_96/MODP_1024, 5610 bytes_i(83 pkts, 74초 전), 840 bytes_o(10 pkts, 74초 전), 43분 후 키 재생성
          fb{1}: 10.0.1.0/24 === 10.0.0.0/24

iptables-저장

# 2020년 12월 13일 일요일 02:30:39에 iptables-save v1.8.4에 의해 생성됨
*압착 롤러
:라우팅 사전 승인 [214:19671]
:입력 수락 [163:15822]
:앞으로 수락 [0:0]
:출력 수락 [82:7863]
:포스트라우팅 수락 [82:7863]
-A FORWARD -s 10.0.0.0/24 -o eth0 -p tcp -m 정책 --dir in --pol ipsec -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1361:1536 -j TCPMSS --set-mss 1360
저지르다
# 2020년 12월 13일 일요일 02:30:39 완료
# 2020년 12월 13일 일요일 02:30:39에 iptables-save v1.8.4에 의해 생성됨
*낫
:라우팅 사전 승인 [51:3849]
:입력 수락 [0:0]
:출력 수락 [4:361]
:포스트라우팅 수락 [4:361]
-A POSTROUTING -s 10.0.0.0/24 -o eth0 -m 정책 --dir out --pol ipsec -j ACCEPT
-A 포스트라우팅 -s 10.0.0.0/24 -o eth0 -j 마스커레이드
저지르다
# 2020년 12월 13일 일요일 02:30:39 완료
# 2020년 12월 13일 일요일 02:30:39에 iptables-save v1.8.4에 의해 생성됨
*필터
:입력 드롭 [0:0]
:앞으로 드롭 [0:0]
:출력 승인 [0:0]
:ufw-이후-앞으로 - [0:0]
:ufw-입력 후 - [0:0]
:ufw-로그인 후-앞으로 - [0:0]
:ufw-로깅 후-입력 - [0:0]
:ufw-로깅 후-출력 - [0:0]
:ufw-출력 후 - [0:0]
:ufw-앞-앞으로 - [0:0]
:ufw-입력 전 - [0:0]
:ufw-전-로깅-포워드 - [0:0]
:ufw-로깅 전-입력 - [0:0]
:ufw-로깅 전-출력 - [0:0]
:ufw-출력 전 - [0:0]
:ufw-로깅-허용 - [0:0]
:ufw-로깅-거부 - [0:0]
:ufw-not-local - [0:0]
:ufw-거부-전달 - [0:0]
:ufw-거부-입력 - [0:0]
:ufw-거부-출력 - [0:0]
:ufw-정책 전달로 건너뛰기 - [0:0]
:ufw-정책 입력으로 건너뛰기 - [0:0]
:ufw-skip-to-policy-output - [0:0]
:ufw-트랙-앞으로 - [0:0]
:ufw-트랙-입력 - [0:0]
:ufw-트랙-출력 - [0:0]
:ufw-사용자-전달 - [0:0]
:ufw-사용자 입력 - [0:0]
:ufw-사용자 제한 - [0:0]
:ufw-사용자 제한-수락 - [0:0]
:ufw-사용자-로깅-포워드 - [0:0]
:ufw-사용자-로깅-입력 - [0:0]
:ufw-사용자-로깅-출력 - [0:0]
:ufw-사용자-출력 - [0:0]
-A 입력 -j ufw-로깅 전-입력
-A 입력 -j 입력 전 ufw
-A 입력 -j 입력 후 ufw
-A 입력 -j ufw-로깅 후-입력
-A 입력 -j ufw-거부-입력
-A 입력 -j ufw-트랙-입력
-A FORWARD -j ufw-로깅 전-포워드
-A FORWARD -j ufw-앞으로-앞으로
-A FORWARD -j ufw-이후-앞으로
-A FORWARD -j ufw-로그인 후-앞으로
-A FORWARD -j ufw-거부-전달
-A FORWARD -j ufw-트랙 포워드
-A 출력 -j ufw-로깅 전-출력
-A 출력 -j 출력 전 ufw
-A 출력 -j 출력 후 ufw
-A 출력 -j ufw-로깅 후-출력
-A 출력 -j ufw-거부-출력
-A 출력 -j ufw-트랙-출력
-A ufw-입력 후 -p udp -m udp --dport 137 -j ufw-skip-to-policy-input
-A ufw-입력 후 -p udp -m udp --dport 138 -j ufw-skip-to-policy-input
-A ufw-입력 후 -p tcp -m tcp --dport 139 -j ufw-skip-to-policy-input
-A ufw-입력 후 -p tcp -m tcp --dport 445 -j ufw-skip-to-policy-input
-A ufw-입력 후 -p udp -m udp --dport 67 -j ufw-skip-to-policy-input
-A ufw-입력 후 -p udp -m udp --dport 68 -j ufw-skip-to-policy-input
-A ufw-입력 후 -m addrtype --dst-type BROADCAST -j ufw-skip-to-policy-input
-A ufw-logging-forward -m 제한 --limit 3/min --limit-burst 10 -j LOG --log-prefix "[UFW BLOCK] "
-A ufw-logging-input -m 제한 --limit 3/min --limit-burst 10 -j LOG --log-prefix "[UFW BLOCK] "
-A ufw-before-forward -s 10.0.0.0/24 -m 정책 --dir in --pol ipsec --proto esp -j ACCEPT
-A ufw-before-forward -d 10.0.0.0/24 -m 정책 --dir out --pol ipsec --proto esp -j ACCEPT
-A ufw-before-forward -m conntrack --ctstate 관련, 설정됨 -j 수락
-A ufw-before-forward -p icmp -m icmp --icmp-type 3 -j 수락
-A ufw-before-forward -p icmp -m icmp --icmp-type 11 -j 수락
-A ufw-before-forward -p icmp -m icmp --icmp-type 12 -j 수락
-A ufw-before-forward -p icmp -m icmp --icmp-type 8 -j 수락
-A ufw-전달 전 -j ufw-사용자-전달
-A 입력 전 ufw -i lo -j 수락
-입력 전 ufw -m conntrack --ctstate 관련, 설정됨 -j 수락
-A ufw-입력 전 -m conntrack --ctstate INVALID -j ufw-logging-deny
-A ufw-before-input -m conntrack --ctstate INVALID -j DROP
-A 입력 전 ufw -p icmp -m icmp --icmp-type 3 -j 수락
-A 입력 전 ufw -p icmp -m icmp --icmp-type 11 -j 수락
-A 입력 전 ufw -p icmp -m icmp --icmp-type 12 -j 수락
-A 입력 전 ufw -p icmp -m icmp --icmp-type 8 -j 수락
-A 입력 전 ufw -p udp -m udp --sport 67 --dport 68 -j 수락
-입력 전 ufw -j ufw-not-local
-A 입력 전 ufw -d 224.0.0.251/32 -p udp -m udp --dport 5353 -j 수락
-A 입력 전 ufw -d 239.255.255.250/32 -p udp -m udp --dport 1900 -j 수락
-A ufw-입력 전 -j ufw-사용자-입력
-A 출력 전 ufw -o lo -j 수락
-A ufw-before-output -m conntrack --ctstate 관련, 설정됨 -j 수락
-A ufw-출력 전 -j ufw-사용자-출력
-A ufw-logging-allow -m 제한 --limit 3/min --limit-burst 10 -j LOG --log-prefix "[UFW ALLOW] "
-A ufw-logging-deny -m conntrack --ctstate INVALID -m Limit --limit 3/min --limit-burst 10 -j RETURN
-A ufw-logging-deny -m 제한 --limit 3/min --limit-burst 10 -j LOG --log-prefix "[UFW BLOCK] "
-A ufw-not-local -m addrtype --dst-type LOCAL -j RETURN
-A ufw-not-local -m addrtype --dst-type MULTICAST -j RETURN
-A ufw-not-local -m addrtype --dst-type BROADCAST -j RETURN
-A ufw-not-local -m 제한 --limit 3/min --limit-burst 10 -j ufw-logging-deny
-A ufw-not-local -j DROP
-A ufw-정책 전달로 건너뛰기 -j DROP
-A ufw-정책 입력으로 건너뛰기 -j DROP
-A ufw-정책 출력으로 건너뛰기 -j 수락
-A ufw-track-output -p tcp -m conntrack --ctstate NEW -j 수락
-A ufw-트랙-출력 -p udp -m conntrack --ctstate NEW -j 수락
-A ufw-user-input -p tcp -m tcp --dport 22 -m comment --comment "\'dapp_OpenSSH\'" -j ACCEPT
-A ufw-user-input -p udp -m multiport --dports 500,4500 -j 수락
-A ufw-user-limit -m 제한 --limit 3/min -j LOG --log-prefix "[UFW LIMIT BLOCK] "
-A ufw-user-limit -j REJECT --reject-with icmp-port-unreachable
-A ufw-사용자 제한-수락 -j 수락
저지르다
# 2020년 12월 13일 일요일 02:30:39 완료

IP 경로

10.0.1.1 dev eth0 proto dhcp src 10.0.1.193 메트릭 100을 통한 기본값
10.0.1.0/24 dev eth0 proto 커널 범위 링크 src 10.0.1.193
10.0.1.1 dev eth0 proto dhcp 범위 링크 src 10.0.1.193 미터법 100

EC2는 Ubuntu 20.04.1 LTS 이미지를 사용합니다.

rightsourceip=10.10.10.0/24또한 pahse2remoteid.ipnet.ipaddr을 table-save 출력의 ipaddr = 10.10.10.0모든 항목을 table-restore로 바꾸고 사용하는 것으로 대체하여 ipsec에 추가하려고 시도했지만 여전히 작동하지 않았습니다. 풀이 할당되더라도 클라이언트는 VirtualIP를 할당받지 않습니다.10.0.0.0/2410.10.10.0/24

IKE charon 데몬 상태(strongSwan 5.8.2, Linux 5.4.0-1029-aws, x86_64):
  가동 시간: 32분, 2020년 12월 13일 01:09:10 이후
  malloc: sbrk 1622016, mmap 0, 사용된 728048, 무료 893968
  작업자 스레드: 유휴 16개 중 11개, 작업 중 5/0/0/0, 작업 대기열: 0/0/0/0, 예약됨: 3
  로드된 플러그인: charon aesni aes rc2 sha2 sha1 md5 mgf1 무작위 nonce x509 취소 제약 조건 pubkey pkcs1 pkcs7 pkcs8 pkcs12 pgp dnskey sshkey pem openssl fips-prf gmp 에이전트 xcbc hmac gcm drbg attr kernel-netlink 해결 소켓 기본 connmark 스트로크 업다운 eap-mschapv2 xauth -일반 카운터
가상 IP 풀(크기/온라인/오프라인):
  10.10.10.0/24: 254/0/0
수신 IP 주소:
  10.0.1.193
사이:
          fb: %모든...MyPublicLocalFQ.net IKEv1/2
          fb: local: [EC2PublicIP]는 사전 공유 키 인증을 사용합니다.
          fb: 원격: [MyPublicLocalFQ.net]은 사전 공유 키 인증을 사용합니다.
          fb: 하위: 0.0.0.0/0 === 10.0.0.0/24 터널
라우팅된 연결:
          fb{1}: 라우팅됨, 터널, 필수 ID 1
          fb{1}: 0.0.0.0/0 === 10.0.0.0/24
보안 연결(1개, 0개 연결):
          fb[2]: 32분 전에 설정됨, 10.0.1.193[EC2PublicIP]...MyPublicLocalIP[MyPublicLocalFQ.net]
          fb[2]: IKEv1 SPI: 0da6b7368f560272_i 166b8161eae230c8_r*, 12분 내에 사전 공유 키 재인증
          fb[2]: IKE 제안: AES_CBC_256/HMAC_SHA1_96/PRF_HMAC_SHA1/MODP_1024
          fb{2}: 설치됨, 터널, 필수 ID 2, UDP SPI의 ESP: cda4bbc0_i 1ea590b2_o
          fb{2}: AES_CBC_256/HMAC_SHA1_96/MODP_1024, 170072 bytes_i(2601 pkts, 26초 전), 1344 bytes_o(16 pkts, 26초 전), 12분 후 키 재설정
          fb{2}: 10.0.1.0/24 === 10.0.0.0/24

어떤 아이디어라도 환영합니다.

관련 정보