VPN 서버가 응답하지 않고 차단된 트래픽이 표시되지 않습니다.

VPN 서버가 응답하지 않고 차단된 트래픽이 표시되지 않습니다.

L2TP/IPSec VPN 서버를 실행하는 Mac OS X Server(10.9) 시스템이 있습니다. 구성이 양호한 것으로 보이며 서버와 VPN의 호스트 이름이 DynDNS 호스트 이름으로 설정되어 있습니다. 서버는 포트 전달 기능이 있는 AirPort Extreme 라우터 뒤에 구성되어 있으며 라우터가 비활성화된(브리지) Arris 모뎀/라우터에 연결되어 있습니다. 서버는 고정 내부 IP로 구성되며 라우터에는 내부 주소의 일관성을 보장하기 위해 DHCP를 통해 연결된 MAC 주소도 있습니다.

서버의 내부 IP 주소(10.0.1.x)를 입력하고 네트워크 내에서 VPN 서버에 연결을 시도하면 모든 것이 잘 작동합니다. 그런데 외부 호스트 이름(DynDNS 이름)을 입력하고 다시 네트워크 내부에서 연결을 시도하면 연결에 실패합니다. 마찬가지로 네트워크 외부(예: LTE를 통해)에서도 연결에 실패합니다.

다른 서비스(SSH, 원격 데스크톱 등)는 모두 네트워크 내부와 외부 모두에서 잘 연결됩니다. VPN만 영향을 받습니다. SSH 및 원격 데스크톱(포트 22/5900)에서 서버에 연결할 수 있는지 확인할 수 있습니다.

또한 라우터가 다른 서비스에서 사용하는 다른 포트 외에 포트 500(UDP), 1701(UDP) 및 4500(UDP)을 전달하고 있음을 확인했습니다.

연결을 시도하면 클라이언트 콘솔에 다음이 나타납니다.

12/16/13 11:13:33.213 PM configd[28]: SCNC: start, triggered by (15822) com.apple.prefe, type L2TP, status 0, trafficClass 0
12/16/13 11:13:33.229 PM pppd[15967]: publish_entry SCDSet() failed: Success!
12/16/13 11:13:33.230 PM pppd[15967]: publish_entry SCDSet() failed: Success!
12/16/13 11:13:33.230 PM pppd[15967]: pppd 2.4.2 (Apple version 727.1.15) started by user, uid 501
12/16/13 11:13:33.231 PM pppd[15967]: L2TP connecting to server 'x.x.x.x' (x.x.x.x)...
12/16/13 11:13:33.232 PM pppd[15967]: IPSec connection started
12/16/13 11:13:33.244 PM racoon[15968]: accepted connection on vpn control socket.
12/16/13 11:13:33.244 PM racoon[15968]: Connecting.
12/16/13 11:13:33.244 PM racoon[15968]: IPSec Phase 1 started (Initiated by me).
12/16/13 11:13:33.245 PM racoon[15968]: IKE Packet: transmit success. (Initiator, Main-Mode message 1).
12/16/13 11:13:33.245 PM racoon[15968]: >>>>> phase change status = Phase 1 started by us
12/16/13 11:13:33.416 PM racoon[15968]: >>>>> phase change status = Phase 1 started by peer
12/16/13 11:13:33.416 PM racoon[15968]: IKE Packet: receive success. (Initiator, Main-Mode message 2).
12/16/13 11:13:33.420 PM racoon[15968]: IKE Packet: transmit success. (Initiator, Main-Mode message 3).
12/16/13 11:13:33.429 PM racoon[15968]: IKE Packet: receive success. (Initiator, Main-Mode message 4).
12/16/13 11:13:33.447 PM racoon[15968]: IKE Packet: transmit success. (Initiator, Main-Mode message 5).
12/16/13 11:13:36.715 PM racoon[15968]: !!! skipped retransmitting frags: frag_flags 1, r->sendbuf->l 112, max 1280
12/16/13 11:13:36.715 PM racoon[15968]: Received retransmitted packet from x.x.x.x[500].
12/16/13 11:13:36.715 PM racoon[15968]: the packet is retransmitted by x.x.x.x[500].
12/16/13 11:13:36.745 PM racoon[15968]: IKE Packet: transmit success. (Phase 1 Retransmit).
12/16/13 11:13:39.872 PM racoon[15968]: !!! skipped retransmitting frags: frag_flags 1, r->sendbuf->l 112, max 1280
12/16/13 11:13:39.872 PM racoon[15968]: Received retransmitted packet from x.x.x.x[500].
12/16/13 11:13:39.873 PM racoon[15968]: the packet is retransmitted by x.x.x.x[500].
12/16/13 11:13:40.043 PM racoon[15968]: IKE Packet: transmit success. (Phase 1 Retransmit).
12/16/13 11:13:43.170 PM racoon[15968]: !!! skipped retransmitting frags: frag_flags 1, r->sendbuf->l 112, max 1280
12/16/13 11:13:43.170 PM racoon[15968]: Received retransmitted packet from x.x.x.x[500].
12/16/13 11:13:43.170 PM racoon[15968]: the packet is retransmitted by x.x.x.x[500].
12/16/13 11:13:43.335 PM racoon[15968]: IKE Packet: transmit success. (Phase 1 Retransmit).
12/16/13 11:13:55.912 PM racoon[15968]: IKE Packet: transmit success. (Phase 1 Retransmit).
12/16/13 11:13:56.367 PM racoon[15968]: !!! skipped retransmitting frags: frag_flags 1, r->sendbuf->l 112, max 1280
12/16/13 11:13:56.367 PM racoon[15968]: Received retransmitted packet from x.x.x.x[500].
12/16/13 11:13:56.367 PM racoon[15968]: the packet is retransmitted by x.x.x.x[500].
12/16/13 11:14:03.416 PM pppd[15967]: IPSec connection failed
12/16/13 11:14:03.416 PM racoon[15968]: IPSec disconnecting from server x.x.x.x
12/16/13 11:14:03.416 PM racoon[15968]: glob found no matches for path "/var/run/racoon/*.conf"

서버 콘솔에는 다음과 같은 내용이 표시됩니다.

12/16/13 11:13:33.404 PM racoon[216]: IPSec Phase 1 started (Initiated by peer).
12/16/13 11:13:33.404 PM racoon[216]: IKE Packet: receive success. (Responder, Main-Mode message 1).
12/16/13 11:13:33.404 PM racoon[216]: >>>>> phase change status = Phase 1 started by us
12/16/13 11:13:33.404 PM racoon[216]: IKE Packet: transmit success. (Responder, Main-Mode message 2).
12/16/13 11:13:33.541 PM racoon[216]: IKE Packet: receive success. (Responder, Main-Mode message 3).
12/16/13 11:13:33.559 PM racoon[216]: IKE Packet: transmit success. (Responder, Main-Mode message 4).
12/16/13 11:13:33.566 PM racoon[216]: Connecting.
12/16/13 11:13:36.697 PM racoon[216]: IKE Packet: transmit success. (Phase 1 Retransmit).
12/16/13 11:13:36.697 PM racoon[216]: IKE Packet: transmit success. (Phase 1 Retransmit).
12/16/13 11:13:39.989 PM racoon[216]: IKE Packet: transmit success. (Phase 1 Retransmit).
12/16/13 11:13:43.286 PM racoon[216]: IKE Packet: transmit success. (Phase 1 Retransmit).
12/16/13 11:13:56.484 PM racoon[216]: IKE Packet: transmit success. (Phase 1 Retransmit).
12/16/13 11:14:06.392 PM racoon[216]: IKE Packet: transmit success. (Phase 1 Retransmit).
12/16/13 11:14:12.978 PM racoon[216]: IKE Packet: transmit success. (Phase 1 Retransmit).
12/16/13 11:14:32.767 PM racoon[216]: IKE Packet: transmit success. (Phase 1 Retransmit).
12/16/13 11:14:39.390 PM racoon[216]: IKEv1 Phase 1: maximum retransmits. (Phase 1 Maximum Retransmits).
12/16/13 11:14:39.390 PM racoon[216]: Phase 1 negotiation failed due to time up. 45b24df5cc9713e7:9b427f72231ccb59

내가 알아차린 한 가지는 클라이언트가 11:14:03에 실패했고 서버는 시간이 초과될 때까지 30초 동안 패킷을 계속 재전송했다는 것입니다. 이 경우 클라이언트는 Mac OS X이지만 iOS 클라이언트도 비슷하게 동작합니다.

여기서 찾아야 할 문제 해결 단계는 무엇입니까?

답변1

좋아요, 알고 보니 최신 버전의 Mac OS X Server에 있는 "버그"였습니다. 내가 찾은 바에 따르면 IKE 데몬은 racoon소스 포트가 UDP 4500이 아닌 경우 연결을 허용하지 않습니다. NAT를 통과하는 대부분의 연결은 소스 포트를 무작위로 지정하므로 연결되지 않습니다. 이전 버전의 데몬에는 이러한 제한이 없습니다. 네트워크 내부에서의 연결은 서버의 IP에 직접 연결하는 경우 포트를 무작위로 지정하지 않지만 루프백 및 외부 연결은 분명히 그렇게 하여 오류가 발생합니다.

그렇다면 빠른 해결책은 다음과 같습니다.racoon바이너리를 OS 10.8의 이전 버전으로 교체하세요 ., 물론 이름을 지정하여 이전 항목을 백업합니다 racoon.old(또는 racoon.new더 정확할까요? :D).

Apple은 이 문제를 인식하고 있는 것으로 보이며 수정 사항을 발표할 것으로 예상됩니다. 그동안 바이너리를 되돌리는 작업이 작동합니다.

관련 정보