두 AWS 인스턴스 간의 Strongswan VPN 터널이 연결되지 않습니다


10

Ubuntu 14.04.2 LTS를 실행하는 두 Amazon AWS EC2 인스턴스간에 StrongSwan 5.1.2를 사용하여 VPN 터널을 설정하려고합니다. StrongSwan을 사용하기 전에 Amazon RedHat AMI에서 open (libre) swan을 사용했는데 정상적으로 작동했습니다. 어떤 이유로 든 IKE에서 StrongSwan을 위해 일할 수조차 없습니다. AWS 구성을 세 번 확인했는데 모두 좋아 보이므로 StrongSwan 구성에 문제가 있어야합니다.

아래에서 볼 수 있듯이 "소켓에 쓰는 동안 오류가 발생했습니다 : 잘못된 인수" 입니다. 나는 온라인을 보았고 실제로 이것에 대한 해결책을 찾을 수 없습니다. 내 strongswan ipsec.conf가 잘못 구성되어 있다고 확신합니다.

여기 내가 작업하고있는 것이 있습니다 :

Instance #1: N.Virginia - 10.198.0.164 with public EIP 54.X.X.X
Instance #2: Oregon - 10.194.0.176 with public EIP 52.Y.Y.Y

(간단한) 토폴로지는 다음과 같습니다.

[ Instance #1 within N.Virginia VPC <-> Public internet <-> Instance #2 within Oregon VPC ]

다음 AWS 구성이 올바른지 확인했습니다.

Security groups permit all
IP information is correct
Src/Dest disabled on both instances
ACLs permit all
routes are present and correct (route to 10.x will point to that local instance in order to be routed out to the VPN tunnel)

아래는 /etc/ipsec.conf입니다 (이것은 오레곤 출신이지만 N.Virginia 인스턴스에서 왼쪽 값이 바뀌는 것을 제외하고는 동일합니다) .

config setup
        charondebug="dmn 2, mgr 2, ike 2, chd 2, job 2, cfg 2, knl 2, net 2, enc 2, lib 2"
conn aws1oexternal-aws1nvexternal
        left=52.Y.Y.Y (EIP)
        leftsubnet=10.194.0.0/16
        right=54.X.X.X (EIP)
        rightsubnet=10.198.0.0/16
        auto=start
        authby=secret
        type=tunnel
        mobike=no
        dpdaction=restart

아래는 /etc/ipsec.secrets * (다른 인스턴스의 경우에는 반대로)입니다.

54.X.X.X 52.Y.Y.Y : PSK "Key_inserted_here"

아래는 /etc/strongswan.conf입니다.

charon {
        load_modular = yes
        plugins {
                include strongswan.d/charon/*.conf
        }
}

아래는 /etc/sysctl.conf입니다.

net.ipv4.ip_forward=1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0

다음은 / var / log / syslog의 디버그 출력입니다. 여기서 문제는 "소켓에 쓰는 동안 오류가 발생했습니다 : 잘못된 인수입니다. 모든 시도 후에도 계속 동일한 오류가 발생합니다 .

Jun 17 17:34:48 ip-10-198-0-164 charon: 13[IKE] retransmit 5 of request with message ID 0
Jun 17 17:34:48 ip-10-198-0-164 charon: 13[NET] sending packet: from 54.X.X.X[500] to 52.Y.Y.Y[500] (1212 bytes)
Jun 17 17:34:48 ip-10-198-0-164 charon: 03[JOB] next event in 75s 581ms, waiting]
Jun 17 17:34:48 ip-10-198-0-164 charon: 16[NET] sending packet: from 54.X.X.X[500] to 52.Y.Y.Y[500]
Jun 17 17:34:48 ip-10-198-0-164 charon: 13[MGR] checkin IKE_SA aws1vexternal-aws1oexternal[1]
Jun 17 17:34:48 ip-10-198-0-164 charon: 13[MGR] check-in of IKE_SA successful.
Jun 17 17:34:48 ip-10-198-0-164 charon: 16[NET] error writing to socket: Invalid argument
Jun 17 17:36:04 ip-10-198-0-164 charon: 03[JOB] got event, queuing job for execution
Jun 17 17:36:04 ip-10-198-0-164 charon: 03[JOB] no events, waiting
Jun 17 17:36:04 ip-10-198-0-164 charon: 08[MGR] checkout IKE_SA
Jun 17 17:36:04 ip-10-198-0-164 charon: 08[MGR] IKE_SA aws1vexternal-aws1oexternal[1] successfully checked out
Jun 17 17:36:04 ip-10-198-0-164 charon: 08[IKE] giving up after 5 retransmits
Jun 17 17:36:04 ip-10-198-0-164 charon: 08[IKE] establishing IKE_SA failed, peer not responding
Jun 17 17:36:04 ip-10-198-0-164 charon: 08[MGR] checkin and destroy IKE_SA aws1vexternal-aws1oexternal[1]
Jun 17 17:36:04 ip-10-198-0-164 charon: 08[IKE] IKE_SA aws1vexternal-aws1oexternal[1] state change: CONNECTING => DESTROYING
Jun 17 17:36:04 ip-10-198-0-164 charon: 08[MGR] check-in and destroy of IKE_SA successful

아래는 내가 지금까지 시도한 것입니다.

1) 검증 된 계층 3

2) 재부팅 된 머신

3) leftid =에 추가를 시도했습니다

4) ipsec 업데이트를 시도한 후 ipsec 재시작

5) confif 설정에서 nat_traversal = yes를 추가하려고 시도했습니다 (IPsec 상태는 모두 IKEv2를 사용하여 확인되었으므로 중요하지 않습니다. 문서에 따르면 자동으로 nat_traversal을 사용합니다)

6) virtual_private 생략을 시도했습니다 <-AWS openswan 설명서에 따라 사용되었으므로 strongswan 구성에 포함 시켰습니다.

7) /etc/sysctl.conf에서 net.ipv4.conf.all.send_redirects = 0 및 net.ipv4.conf.all.accept_redirects = 0 비활성화 시도

8) EIP 대신 개인 IP를 사용해 보았습니다. 더 이상 소켓 오류가 발생하지 않지만 분명히 두 IP가 서로 통신 할 수 없습니다 ...

9) strongswan.conf에 이것을 추가하려고 시도했습니다 : load = aes des sha1 sha2 md5 gmp random nonce hmac stroke kernel-netlink socket-default updown

10) leftfirewall = yes를 사용하려고 시도했지만 작동하지 않았습니다.

도와주세요! 감사!

편집 # 1 :

Michael의 답변으로 원래 문제가 해결되었지만 라우팅과 관련된 새로운 문제가 있습니다. 두 VPN 인스턴스가 서로 ping 할 수 없습니다. 또한 서브넷의 임의 인스턴스에서 다른 임의 인스턴스 또는 파 엔드 VPN 인스턴스로 핑을 시도하면 다음과 같은 핑 응답이 나타납니다.

root@ip-10-194-0-80:~# ping 10.198.0.164
PING 10.198.0.164 (10.198.0.164) 56(84) bytes of data.
From 10.194.0.176: icmp_seq=1 Redirect Host(New nexthop: 10.194.0.176)
From 10.194.0.176: icmp_seq=2 Redirect Host(New nexthop: 10.194.0.176)
From 10.194.0.176: icmp_seq=3 Redirect Host(New nexthop: 10.194.0.176)
From 10.194.0.176: icmp_seq=4 Redirect Host(New nexthop: 10.194.0.176)

Oregon 서브넷의 10.194.0.80 호스트가 Oregon VPN 인스턴스로부터 응답을 수신 할 수 있기 때문에 이는 두 VPN 인스턴스 (대부분 strongswan 구성 또는 인스턴스 라우팅 테이블로 인해 발생 함) 사이의 라우팅 문제 여야합니다. 인스턴스의 라우팅 테이블 + 추적 경로 :

root@ip-10-194-0-80:~# netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         10.194.0.1      0.0.0.0         UG        0 0          0 eth0
10.194.0.0      0.0.0.0         255.255.255.0   U         0 0          0 eth0

root@ip-10-194-0-80:~# traceroute 10.198.0.164
traceroute to 10.198.0.164 (10.198.0.164), 30 hops max, 60 byte packets
 1  10.194.0.176 (10.194.0.176)  0.441 ms  0.425 ms  0.409 ms^C

openswan을 사용할 때는 각 인스턴스의 라우팅 테이블을 수동으로 수정할 필요가 없었습니다.

다음은 Oregon VPN 인스턴스의 라우팅 테이블입니다.

root@ip-10-194-0-176:~# netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         10.194.0.1      0.0.0.0         UG        0 0          0 eth0
10.194.0.0      0.0.0.0         255.255.255.0   U         0 0          0 eth0

나는 약간 혼란 스러워요.

편집 # 2 :

VPN 인스턴스 간 라우팅이 문제가되지 않는 것 같습니다. / var / log / syslog는 한 VPN 인스턴스 퍼블릭 IP에서 다른 VPN 인스턴스로 수신되는 패킷을 보여줍니다.

Jun 23 19:57:49 ip-10-194-0-176 charon: 10[NET] received packet: from 54.X.X.X[4500] to 10.194.0.176[4500] (76 bytes)

아동 안전 협회와 관련된 문제인 것 같습니다.

aws1oexternal-aws1nvexternal:   child:  10.194.0.0/16 === 10.198.0.0/16 TUNNEL, dpdaction=restart
Security Associations (1 up, 0 **connecting**):

/ var / log / syslog :

Jun 23 19:52:19 ip-10-194-0-176 charon: 02[IKE] failed to establish CHILD_SA, keeping IKE_SA
Jun 23 19:52:48 ip-10-194-0-176 charon: 11[IKE] queueing CHILD_CREATE task
Jun 23 19:52:48 ip-10-194-0-176 charon: 11[IKE]   activating CHILD_CREATE task
Jun 23 19:52:48 ip-10-194-0-176 charon: 06[IKE] establishing CHILD_SA aws1oexternal-aws1nvexternal
Jun 23 19:52:48 ip-10-194-0-176 charon: 10[IKE] received FAILED_CP_REQUIRED notify, no CHILD_SA built
Jun 23 19:52:48 ip-10-194-0-176 charon: 10[IKE] failed to establish CHILD_SA, keeping IKE_SA
Jun 23 19:52:49 ip-10-194-0-176 charon: 14[CFG] looking for a child config for 10.194.0.0/16 === 10.198.0.0/16 
Jun 23 19:52:49 ip-10-194-0-176 charon: 14[CFG] found matching child config "aws1oexternal-aws1nvexternal" with prio 10
Jun 23 19:52:49 ip-10-194-0-176 charon: 14[IKE] configuration payload negotiation failed, no CHILD_SA built
Jun 23 19:52:49 ip-10-194-0-176 charon: 14[IKE] failed to establish CHILD_SA, keeping IKE_SA

*** 편집 # 3 : 문제가 해결되었습니다 (실제로 아래 편집 # 4 참조) ****

문제가 해결되었습니다.

1) Michael의 구성 지침을 제대로 따르지 않았습니다. 또한 rightsourceip과 leftsourceip을 함께 구성하여 두 인스턴스가 모두 초기 자라고 믿었습니다. 하나는 개시 자이고 하나는 요청 자임을 확인했습니다. 이것은 IKE 문제를 해결했습니다.

2) 나는 또한 esp 매개 변수를 명시 적으로 설정해야한다는 것을 알았습니다. 이미 기본값 (aes128-sha1,3des-sha1)이 있지만 인스턴스가 esp OR ah (둘다는 아님)를 사용하도록하려면 esp 매개 변수를 설정해야합니다. 나는 aes128-sha1-modp2048을 사용했습니다.

이 게시물이 다음 리눅스 초보자가 이것을 설정하는 데 도움이되기를 바랍니다.

건배!

편집 # 4 : 문제 (실제로는 해결되지 않음)

strongswan과 관련된 별도의 문제를 해결하는 동안 "leftfirewall"매개 변수를 변경하고 테스트 한 후 별도의 문제를 해결하지 않은 다음 미리 orig 구성으로 되돌아갔습니다 (왼쪽 방화벽). 나는 이제 터널을 가로 질러 핑을 할 수 없다는 것을 알아 차렸다. 무슨 일이 일어 났는지 알아 내려고 몇 시간 동안 미쳐 나간 후, esp 매개 변수를 주석 처리하여 무슨 일이 일어날 지 알았습니다. 이제 TUNNEL을 다시 핑 (ping) 할 수 있습니다! <-, 나에게 트릭을 연주하는 것 주위에 ipsec 유령이있을 가능성이 있으며 esp 매개 변수가 실제로 TS_UNACCEPTABLE 오류의 수정 사항이 아닐 수도 있습니다 (다른 자원은 온라인 상태이지만 esp 매개 변수는 수정입니다 ...)

편집 # 5 : 문제가 완전히 해결되었습니다.

결국 모든 것을 테스트 환경으로 옮기고 처음부터 시작했습니다. 우분투 저장소 (5.1.2)에있는 이전 버전이 아닌 최신 버전 (5.3.2)을 사용하여 소스에서 설치했습니다. 이것은 내가 겪고 있던 문제를 해결하고 VPN 터널을 통해 여러 서브넷 사이에서 netcat (좋은 도구 !!)를 사용하여 계층 7 연결을 확인했습니다.

또한 : VPC에 대해 DNS 호스트 이름을 활성화 할 필요 는 없습니다 (아마존에 의해 잘못 믿게되었으므로), FYI>

이 모든 것이 도움이되기를 바랍니다 !!!!!!

추가 편집 2/11/2017 :

JustEngland의 요청에 따라 아래의 작업 구성을 복사합니다 (어떤 식 으로든 식별을 방지하기 위해 특정 세부 정보 제외).

A면 :

# ipsec.conf - strongSwan IPsec configuration file

# basic configuration
config setup
# Add connections here.
conn %default
 ikelifetime= You choose; must match other side
 keylife= You choose; must match other side
 rekeymargin= You choose; must match other side
 keyingtries=1
 keyexchange= You choose; must match other side
 authby=secret
 mobike=no

conn side-a
 left=10.198.0.124
 leftsubnet=10.198.0.0/16
 leftid=54.y.y.y
 leftsourceip=10.198.0.124
 right=52.x.x.x
 rightsubnet=10.194.0.0/16
 auto=start
 type=tunnel
# Add connections here.


root@x:~# cat /etc/ipsec.secrets 
A.A.A.A B.B.B.B : PSK "Your Password"

B면 :

# ipsec.conf - strongSwan IPsec configuration file

# basic configuration
config setup

conn %default
 ikelifetime= You choose; must match other side
 keylife= You choose; must match other side
 rekeymargin= You choose; must match other side
 keyingtries=1
 keyexchange= You choose; must match other side
 authby=secret
 mobike=no

conn side-b
 left=10.194.0.129
 leftsubnet=10.194.0.0/16
 leftid=52.x.x.x
 right=54.y.y.y
 rightsubnet=10.198.0.0/16
 rightsourceip=10.198.0.124
 auto=start
 type=tunnel

root@x:~# cat /etc/ipsec.secrets 
B.B.B.B A.A.A.A : PSK "Your Password"

작업 구성을 게시 할 수 있습니다.
JustEngland

물론, 원래 질문 게시물에 편집으로 구성을 추가합니다. 더 이상 설정에 액세스 할 수 없으므로 구성이 올 바르면 100 %를 확인할 수 없습니다. 그러나, 그들은 있어야합니다 :)
lobi

답변:


7

VPC에서 인스턴스의 퍼블릭 IP 주소는 인스턴스의 스택에 바인딩되지 않으므로 내부 프라이빗 주소와 외부 퍼블릭 주소를 모두 구성해야합니다. 잘못된 인수는 아마도 인스턴스에 알려져 있지 않다 공용 IP 주소에서 직접 소스 트래픽을 시도하여 발생합니다.

left=10.10.10.10         # instance private IP of local system
leftsourceip=10.10.10.10 # instance private IP of local system
leftid=203.x.x.x         # elastic IP of local system
leftsubnet=10.x.x.x/xx

rightsubnet=10.x.x.x/xx
right=198.x.x.x          # elastic IP of remote system

안녕 마이클, 원래 문제를 해결했지만 이제는 강력한 백조 구성으로 인해 라우팅 문제가있는 것 같습니다. 한 VPN 인스턴스에서 다른 VPN 인스턴스 (시간 초과)로 ping을 할 수 없으며 서브넷 내에서 다른 인스턴스에서 ping을 시도하면 다음과 같은 결과가 나타납니다. 10.194.0.176에서 : icmp_seq = 4 Redirect Host (New nexthop : 10.194.0.176)
lobi

원래 게시물을 수정했습니다
lobi

알아 냈습니다. Michaels의 구성을 올바르게 구현하지 않았습니다 (rightsourceip도 포함하여 어떤 것이 초 기자이고 어느 것이 요청자인지 혼동합니다). 또한 esp 매개 변수를 명시 적으로 설정해야했습니다.
lobi 2016 년

1

문제가 해결되었습니다.

1) Michael의 구성 지침을 제대로 따르지 않았습니다. 또한 rightsourceip과 leftsourceip을 함께 구성하여 두 인스턴스가 모두 초기 자라고 믿었습니다. 하나는 개시 자이고 하나는 요청 자임을 확인했습니다. 이것은 IKE 문제를 해결했습니다.

2) 나는 또한 esp 매개 변수를 명시 적으로 설정해야한다는 것을 알았습니다. 이미 기본값 (aes128-sha1,3des-sha1)이 있지만 인스턴스가 esp OR ah (둘다는 아님)를 사용하도록하려면 esp 매개 변수를 설정해야합니다. 나는 aes128-sha1-modp2048을 사용했습니다.


이것이 100 % 고정인지 확실하지 않습니다. 원본 게시물의 편집 # 4를 참조하십시오.
lobi
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.