L2TP/IPSec VPNサーバーを実行しているMac OS X Server(10.9)マシンがあります。構成は正常であるように見え、サーバーとVPNの両方のホスト名がDynDNSホスト名に設定されています。サーバーは、ポート転送を備えたAirMac Extremeルーターの背後に構成され、ルーターが無効(ブリッジ)になっているArrisモデム/ルーターに接続されています。サーバーは静的内部IPで構成されており、ルーターのMACアドレスもDHCPを介して関連付けられているため、内部アドレスの一貫性が保証されます。
サーバーの内部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
私が気づいたことの1つは、サーバーがタイムアウトになるまで、サーバーがさらに30秒間パケットを再送信し続けている間に、クライアントが11:14:03に失敗したことです。この場合のクライアントはMac OS Xですが、iOSクライアントも同様に動作します。
ここで探す必要のあるトラブルシューティング手順は何ですか?
さて、それはMac OS XServerの最新バージョンの「バグ」であることがわかりました。私が見つけたものから、ソースポートがUDP 4500でない場合、彼のIKEデーモンracoon
は接続を受け入れません。NATを通過するほとんどの接続は、ソースをランダム化しますポート、つまり接続しません。古いバージョンのデーモンにはこの制限はありません。サーバーのIPに直接接続する場合、ネットワーク内からの接続ではポートがランダム化されませんが、ループバック接続と外部接続では明らかに、失敗につながる。
簡単な解決策はracoon
バイナリをOS 10.8の古いバージョンに置き換えるでした。もちろん、古い名前を付けてracoon.old
(またはracoon.new
より正確になりますか? :D)。
Appleはこの問題を認識しているようで、うまくいけば修正を発行するでしょう。その間、バイナリの動作を元に戻します。