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"