こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

VPN接続時のルータの静的ルーティングについて

VPN接続時のルータの静的ルーティングに関して質問なんですが、少し長いのでご容赦ください。

現在下記のような環境で自宅にVPNサーバを立てています。

VPNサーバ:Mac OS X 10.10.2 (yosemite) 上にVPNActivatorを使用して構築
VPNで割り当てるIPの範囲:192.168.0.14 ~ 192.168.0.16
ルータに割り当てられているグローバルIP:xxx.xxx.xxx.xx
VPNサーバに割り当てられたプライベートIP:192.168.0.10
ポート・マッピング:
変換対象のプロトコルとポート:TCP, 500 宛先アドレス:192.168.0.10
変換対象のプロトコルとポート:TCP, 1701 宛先アドレス:192.168.0.10
変換対象のプロトコルとポート:TCP, 4500 宛先アドレス:192.168.0.10
変換対象のプロトコルとポート:UDP, 1723 宛先アドレス:192.168.0.10

この状態でクライアント側でxxx.xxx.xxx.xx(グローバルIP)に対してVPN接続を試みると、
正しく接続ができ、afpやsmbを使用してVPNサーバのプライベートIP宛に接続を試みても、共有フォルダ等にアクセスができましたので問題ありません。
VPNに接続したクライアントにはプライベートIP:192.168.0.14が割り当てられました。

しかし、同じようにafpやsmbを使用してVPNサーバと同じLAN環境下にある
外付けHDDなどストレージのプライベートIP(192.168.0.2)宛に接続を試みると、タイムアウトとなり失敗してしまいます。

解消法としてルータに静的ルーティングの設定を下記のように行いました。
宛先IPアドレス: 192.168.0.0
インタフェース:ゲートウェイ
ゲートウェイ: 192.168.0.10(VPNサーバのプライベートIP)

すると、ストレージにも接続が可能になりました。
この原理の認識が合っているのかどうかわからなかったので質問させてください。
下記の認識であっておりますでしょうか?

■スタティック・ルーティングを指定していなかった時の現象
これは、ストレージ(プライベートIP:192.168.0.2)に対して
リクエストのパケットは届いて、レスポンスのパケットをルータに返したけど、
ルータがパケットの送信元であるクライアント(192.168.0.14)の場所を知らないから、
パケットを届けられず破棄されてクライアント側はタイムアウトとなり、エラーになった

■スタティック・ルーティングを指定した場合
ストレージからルータへレスポンスのパケットが渡され、
192.168.0.14(クライアント)の場所が分からないので、
ゲートウェイに指定されている192.168.0.10(VPNサーバ)にパケットを送った。
VPNサーバは192.168.0.14(クライアント)を知っているので、
そこに送るように宛先を書き換えて再度ルータに送り返し、
ルータはクライアントにパケットを届けることができた。

もし間違っている場合は、ご指摘いただけますと幸いです。

よろしくお願いいたします。

投稿日時 - 2015-01-23 14:15:00

QNo.8901267

c3d

困ってます

質問者が選んだベストアンサー

当方Windowsユーザなので、VPN Activatorは利用した経験が無いので推測になりますが、私の意見を述べます。原則として、クライアントとVPNサーバ(上のVPN Activator)間は、L2TPでトンネリングされているので、その間にあるルータが、パケットの中身である宛先IPアドレスを知ることが出来ません。ですので、クライアントからのパケットは、全てVPNサーバ上のVPN Activatorに届きます(届くはずです)。

1.スタティック・ルーティングを指定していなかった時の現象
クライアントからのパケットを受け取ったVPNサーバは、192.168.0.14からのパケットとして、ストレージ宛に転送します。ストレージは、同一サブネットからのパケットなので、ルータに返すことなく、192.168.0.14のMACアドレスを知るため、ARP(Who is 192.168.0.14?)をブロードキャストします。本来なら、192.168.0.14が応答を返し、通信が可能となるわけですが、VPN Activator上の192.168.0.14が応答を返さなかったため、エラーになったと考えます。

2.スタティック・ルーティングを指定した場合
ストレージからのARPに対して、ルータが代理応答(ProxyARP)したのでは?と考えます。

WireShark等のパケットキャプチャソフトを起動させた端末(例えば192.168.0.100)にアクセスしてみれば、もう少し詳細が分かるかと思いますが、VPNActivatorの「Advanced」の設定に、何かヒントが隠されているかもしれません。

投稿日時 - 2015-01-23 14:53:56

お礼

おお、なるほど。
ルータが192.168.0.10(VPNサーバ)のMACアドレスをストレージに返して、
パケットを受け取ったVPNサーバがARPしてMACヘッダーを書き換えて、クライアントに送り返すということですね。
すごく納得いきましたが、確かにwireshark等でパケット覗いてみたほうがいいですね。
ストレージでは無く別PCに同様のアクセスをした場合の動きを見た方がいいですね。
ご回答ありがとうございます!

投稿日時 - 2015-01-23 16:07:56

このQ&Aは役に立ちましたか?

6人が「このQ&Aが役に立った」と投票しています

回答(1)