iPhone3GS的な

iPhone3GSから始まったブログ。今はiPhone11。ポケットコンピュータ的な活用法を探る!
このエントリーをはてなブックマークに追加

VR-S1000で拠点間IPsec通信成功! auひかり←→フレッツ光プレミアム

少し前にBuffaloのVR-S1000というルーターを2台購入した。
IPsecでの拠点間通信が手軽にできるらしいところが魅力だった。

以前はZyXELのZyWALL P1という製品でPPTPでの拠点間通信を(故障するまでの)数年間利用していたので、多少簡単に考えていた。

しかし実際にはなかなか難しく、事務所と店の拠点間通信(2台のVR-S1000同士の接続)が成功するまで2週間くらいかかってしまった。(ただしL2TP/IPsecでの端末機器(PCやスマホ)からVR-S1000への接続は店・事務所ともに、作業開始後まもなく成功している)

以前のZyWALLのときとの大きな違いは、事務所のインターネット環境が、フレッツ光プレミアムからauひかりに変わったことだ。(店はずっとフレッツ光プレミアム)
なかなかうまく行かなかった原因はそこにあった。
ZyWALLが故障してからしばらくは拠点間通信を諦めて、店のWindows7でPPTPサーバーを構成し、その都度事務所から接続して用を足していて、その状況下でauひかりに切り替えたのだが、拠点間通信ではないためか接続可能ではあった。(ただ、接続状況が安定しなかったり、接続できないことは度々あった。が、その原因が「auひかりだから」なのかはよくわからないまま、現在の新しい環境に切り替わった。新しい拠点間通信に成功してからはすでに1週間くらい経過するが、一度も切断されずに繋がっている。)

備忘録として、設定について記しておこうと思う。

主な前提条件や状況


・事務所はauひかり。(グローバルIPはほぼ変わらない)

・店はフレッツ光プレミアム。(グローバルIPは割りと頻繁に変わる)

・auひかりはホームゲートウェイでのインターネット接続が必須らしく、VR-S1000は2重ルーターの2段目となる。(VR-S1000の説明書で想定していないケースである。)

・フレッツ光プレミアムは、ONUでインターネット接続するのが普通だが、ONUをスルーして、配下のルーター(本件ではVR-S1000)からPPPoE接続でインターネット接続するモードも選択できる。この場合2重ルーターとはならず、VR-S1000が最上位ルーターとなる。ONUはひかり電話のために機能するのみだ。(VR-S1000の説明書で想定してるのはこのようにVR-S1000でインターネット接続し、VR-S1000が最上位ルーターとなるケースのみである。)

・固定IPを持っていないので、拠点間通信のためには通常はDDNSを使う必要があるが、知りうる限りDDNSは有料サービスばかりになってしまったので使わない方針だ。
 auひかりの割り当てIPは実質固定(変えたくても変わらないくらいらしい)なので、DDNSは必要なさそうである。
 フレッツ光はそこそこの頻度でIPが変わるので普通はDDNSが必要だが、自分の場合は、店のグローバルIPをレンタルサーバー上に記録するphpスクリプトを自分で書いて店のPCで5分おきに自動実行させているので、外部から店のIPアドレスを知ることができる。突然IPアドレスの変更が原因で繋がらなくなっても、新しいIPアドレスは知ることができるのでちょっと面倒だが更新作業が可能だ。(この更新作業をスクリプトで自動化することが当面の課題である。)

最終的なネットワーク図


いろいろ試行錯誤したが、最終的に以下の様子で落ち着いた。
上が事務所(auひかり・2重ルーター構成)で下が店(フレッツ光プレミアム)だ。
Network Diagram(4)

auのホームゲートウェイBL900HWの設定


まず事務所(auひかり)側の設定である。
上述のように、BL900HWでインターネット接続をすることが必須であり、この下にVR-S1000を2重ルーターになるように配置することになる。
よって、インターネット側からBL900HWに届くVPN関連の通信がVR-S1000に流れるようにポートマッピングを設定しなければならない。
(またはDMZを設定しても良いようだが、自分は試行錯誤のなかで双方とも何度か試し、その都度(別の原因で)上手く行かず、最終的にたまたまポートマッピングを使用しDMZを使用しない設定のときに、別の試みによって接続に成功した感じだ。よって、現状はポートマッピングを使用している。)

まずBL900HWでポートマッピングを設定する前に、BL900HWのLAN側IPアドレスを任意に設定する(あるいはデフォルトのままでもよい)。これが192.168.0.1だとして、VR-S1000の「WAN設定」のページでWAN側IPアドレスを192.168.0.2(など)に設定しておく。(詳しい設定は次の「VR-S1000(事務所側=auひかり)の設定」の項に記す)
ケーブルはBL900HWのLAN端子とVR-S1000のWAN端子を繋ぐ。
その上で、下の表を参考にBL900HWの設定ページでポートマッピングの設定を行う。
AH、ESP、IKEのプロトコル番号およびポート番号は以下のとおり。
AH IPプロトコル番号 : 51
ESP IPプロトコル番号 : 50
IKE UDPポート番号 : 500,4500

設定後の様子は以下のとおり。VR-S1000のWAN側IPアドレスが192.168.0.2である場合の設定だ。(BL900HWからみるとVR-S1000は「外部からの通信を転送する先のLAN側ホスト」ということになる)
portmapping.png

また、IPsecパススルー機能は「使用する」にしてある。これも試行錯誤の中で何度もオン・オフを繰り返したが、最終的にオンになっている。ただし、オンが適切なのかどうかはよく分かっていない。

DHCPはオンにしてある。これはBL900HWに繋いだ無線LANアクセスポイントに接続してくるデバイス用だ。(と言いつつ、家族のスマホは全て固定IPアドレスを振ってある。これはauひかりにしてからたくさんのデバイスを使うとネットに接続できないデバイスが出現するようになり、固定IPアドレスを振ったら解決したからだ。が、一応DHCPをオンにしておけば一時的に接続するだけのデバイスが簡単に接続できる。)

VR-S1000(事務所側=auひかり)の設定


次に事務所(auひかり)側の2段目のルーターであり、VPNサーバーでもあるVR-S1000の設定だ。
一番上の「WAN設定」のところで「固定IPアドレスを使用」を選択している点が、説明書とは異なっている。
また、「インターネットアドレス」の「IPアドレス」のところを「192.168.0.2」としているのが上の項で触れた部分である。ここは普通グローバルIPアドレスを入れる欄だが、今回は2重ルーターの2段目なので、1段目が支配する192.168.0.0/24な世界が2段目にとってのグローバルな世界となる。
「デフォルトゲートウェイ」に「192.168.0.1」つまりBL900HWを指定している。BL900HW経由で外部と交信する。
「DNSサーバー」のところはここではGoogleのDNSサーバーを指定している。(「プロバイダーから取得」でいいかどうかは試していない。)
jimu_wan.png

続いて「LAN設定」だ。
VR-S1000のLAN側IPアドレスは192.168.100.2としている。(普通192.168.100.「1」にするところだが、元々BL900HWのLAN側IPアドレスを192.168.100.1で運用していて、そこにVR-S1000を192.168.100.2にしてLANポート同士で試した後、BL900HWを192.168.0.1に変更した名残りだ。)
重要なのはそこではなく3ブロック目で、192.168.「0」.2ではなく192.168.「100」.2であることだ。(1段目と2段目が異なるサブネットになるようにここは数値を変える。「100」である必要なく、「0」以外で255までの数値ならなんでもいい。ただし、各拠点でこれが異なっている必要がある。)
DHCPは、今回割り当てIPアドレスを101から130にした。これは自由に決めればいい。ただ、「L2TP/IPsec」設定ページでも、外部から接続してきた端末に割り当てるIPの範囲を設定することになるので、被らないように設定する。
自分はこれまで多段のネットワークを組んだことがなく、DHCPにも詳しくなく単純に「一つしか存在できない」くらいに思っていたが、それぞれのサブネットに1つずつで複数あるぶんには良いようだ。まあよく考えれば当然だ。
jimu_lan_201510080137196f7.png

さらに、「L2TP/IPsec設定」。(これは拠点間通信ではなく、ネットワーク外の個別デバイスからの接続への対応)
ここは2重ルーターだからといって特に気をつけることはない。
正しいサブネットで設定することに注意するくらいだ。
jimu_L2TP_20151008115819c8d.png

そしていよいよ「IPsecポリシー」の設定だ。
「IKEポリシー」と「VPNポリシー」を設定することになるが、「VPNポリシー」は説明書どおりで全く問題ないので割愛する。
「IKEポリシー」は色々試行錯誤して下のように落ち着いた。
jimu.png
「123.123.123.123」となっているところは実際は「今現在相手側に割り当てられているグローバルIPアドレス」を入力する。
試行錯誤の初期ではローカルもリモートもIPアドレスで指定していたが上手く行かず、2段構成の事務所側をFQDNで指定してさらにDNSサーバーを立ち上げることで成功した。
もう少し詳細に書いておこう。
「モード」のところは、当初は「メイン」モードを選択し、「ローカル」で「ローカルWAN IPアドレス」を選択して「192.168.0.2」と入力していたが、こちら(事務所)からは店に接続できるが店からはこちらに接続できず、実際には通信できない状況だった。
要は、店側のVR-S1000の「リモートWAN IPアドレス」とこちらの「ローカルWAN IPアドレス」は同じ内容でないと認証できないみたいだった。が、当然店側からはBL900HWに割り当てられている本当のグローバルIPアドレスでないとこちらを特定できるはずがないので、この2重ルーターの構成では「メイン」モードはだめなようだった。
そこで、jimu.mynetというホストネームをでっち上げて「アグレッシブ」モードで試すことにした。(これを試そうという発想にたどり着くまでに2週間かかってしまった。本来はDDNSを利用する場合のモードだからだ。)
DDNSを利用しないでこのモードを使うために、事務所・店双方にローカルDNSサーバーを立ち上げてjimu.mynetというホスト名から適切なIPアドレスを引けるようにすることにした。(長期的には、プロバイダから割り当てられるグローバルIPアドレスが変わる度にDNSサーバーの設定内容を自分で更新する必要があるので、やはり普通は素直にDDNSを使うべきだろう。)
BL900HWやVR-S1000がDNSサーバー機能を持っていないか調べたが、どうも見当たらなかったので、自分で立てることにした。
ただ、結果的には「双方」ではなく、店でDNSサーバーを立てた段階で接続に成功してしまった。
事務所側ではこのjimu.mynetというホスト名は解決できていないはずだ。それでも接続できているところを見ると、「ローカル」の「FQDN」は認証に使っているだけで、通信自体には使われていない感じだ。
(だとすると、「メイン」モードで、事務所の「ローカルWAN IPアドレス」のところにあえて本当のグローバルIPアドレスを入れてみればそれだけで成功してしまうのかもしれない。それはまだ試していない気がする。取り敢えず今現在は接続出来ているので、その間は現状の設定で変えないつもりだが、今後店のフレッツの割り当てIPアドレスが変わってしまったタイミングで、どうせ色々更新しないといけないので、ついでに一度試してみようと思う。)

店側の設定


店側の設定は、「PPPoEを使用」しての接続で、ほとんど説明書どおりなので、詳細はほとんど割愛する。

説明書と異なるのは「IKEポリシー」くらいである。
mise.png
「123.123.123.123」となっているところは実際は「今現在こちら側(店側)に割り当てられているグローバルIPアドレス」を入力する。
変更されるたびに再入力する必要がある。(事務所・店で複数箇所の更新が必要なのでスクリプトで自動化できるようにしたい。この部分の手間がDDNSに支払う理由となるわけだ。)
上の項で登場したjimu.mynetというホスト名がここでは「リモート」の「FQDN」として再登場している。
こちら側では実際に相手に接続する際のアドレスとしての役割を果たすので、ちゃんと名前を解決できないといけない。
上でも書いたように店でFaxサーバーとして使っているWindows7ノート上にDNSサーバーを立ち上げた。
今回はBlackJumboDogを使用した。こちらの記事を参考にさせていただいた。

関連して、もう1か所設定で注意が必要なところがある。
画像は掲載しないが、「WAN設定」ページの「DNSサーバー」のところを普通は「プロバイダーから取得」とすると思うが、今回自前DNSサーバーをWindows7上に立てたので、「プライマリーDNSサーバー」のところにWindows7ノートのIPアドレス(固定IPアドレスを振っておくほうがいいだろう)を入れておく。ただし、この自前DNSサーバーでは通常のURLを解決できないので「セカンダリーDNSサーバー」にプロバイダーのDNSサーバーだったり、GoogleのDNSサーバーだったりのIPアドレスを入れておく。

以上、2台のVR-S1000による拠点間通信の設定の備忘録。
この内容を試される場合は自己責任でお願いします。(正しい方法であるという自信はなく、「なんとか繋がった」という状況)
また、内容の誤りや追加情報をコメントとしていただけると幸いです。


【追記 2015/11/20】
最初に成功してから今日までずっと繋がったままだったが、今日(2015/11/20)繋がっていないことに気がついた。
店側のグローバルIPが変更されたためだ。(なぜ変わったのかはよくわからない)
急ぎの仕事をしようとして気がついたため、焦って余計なところを変更してしまい、随分再接続までに時間がかかってしまった。
結局は再接続できたので、上記の方法で接続できるということは再確認できた。

今回取るべきだった対応
・たぶん店と事務所で各1箇所。計2箇所だけを変更すればよかった。(上で123.123123.123となっているところ)

今回の失敗ポイント
・店側で立ち上げたDNSサーバーは触る必要がなかったのに、よく考えずにDNSサーバーのIP(つまり事務所側のIP)を変更してしまった。
・上の誤りに気が付かず、店のVR-S1000を再起動したが、たぶんそのタイミングで事前共有キーが「undefined」になっていた(違うタイミングかも知れない)が、そのことにも気が付かず。
・再起動したことで、再度IPが変わったのだが、そのことにも気が付かず。

この3つの失敗でかなりの時間を浪費してしまった。
最後まで気が付かなかったのが共有キーだった。
ログにあった「received Hash Payload does not match computed value」でWEB検索をかけて
https://www.cisco.com/cisco/web/support/JP/102/1020/1020798_common_ipsec_trouble-j.html
に行き着き、そのページ内でさらに同じ文字列で検索をかけて見つからず、文字列を後ろから削って「received Hash Payload」まで削ったときにページ内検索にヒットした。
事前共有鍵を再入力するか元に戻す
IPSec VPN トンネルが起動しないときには、単純な入力ミスが原因になっていることもよくあります。たとえば、セキュリティ アプライアンスでは、事前共有鍵は入力されると非表示になります。このため、キーが誤っていることがわかりません。各 VPN エンドポイントについて、事前共有鍵が正しく入力されていることを確認してください。

これを見てようやく事前共有キーが「undefined」になっていたことに気がついた。

これに気がつく前は、「店側だけローカルDNSを立ち上げていて、事務所側ではDNSサーバーを立ち上げていない(=IPアドレスを引けていない)ことが原因なのかな」と思い、(とは言え、前回その必要がなかったのだから要らないはずだが、)「でも事務所側のMacBook Proはほぼ常時起動だが毎日一定時間外に持ち出しているから、店のDNSサーバーを参照したほうがいいかな?」と思い、店のDNSサーバーの設定を変更して、事務所のIPアドレスからの参照を許可するようにし、店のVR-S1000の「アドレス変換」のところで、事務所のIPアドレスからのDNSの参照を店のパソコンにフォワードするようにした。
さらに、事務所側のVR-S1000のWAN設定で「プライマリDNSサーバー」を店のIPアドレスに変更した。
一応これで事務所のVR-S1000からもでっち上げのjimu.mynetを解決できるようになったが、接続に成功しなかった。

で、事前共有キーが「undefined」になっていたことが判明して修正し、接続に成功した。
だから、まだやっていないが、事務所の「プライマリDNSサーバー」は元に戻したほうがいいだろう。(事務所のIPアドレスは今回のように時々変わるので、その度に変更しなければならないし、多分事務所側ではjimu.mynetを解決できなくても接続に差し支え無いから)

以上長くなったが、IPアドレスが変わった際の注意点の備忘録として追記した。

【追記 2017/3/13】
久しぶりに接続が切れた。1年と数ヶ月ぶりだ。理由はこれまで通り、店側のグローバルIPが変化していたことだ。
何もかも忘れてしまっていたので、上の追記が役立った。
やはり変更が必要だったのは2ヶ所だけだった。

だが、すぐには接続は復活せず、ぞれなりに時間を要した。最初に繋がらない時点で今までの自分ならすぐにあれこれ変更して試すのだが、前回の反省から余計な設定変更はしなかった。やってみたことは、店側のパソコンの再起動で、それでもダメだったので、店のパソコン上に立ち上げているDNSサーバーを再起動してみた。それでもダメだったが、同じようなことを繰り返しながら様子をみていた。そのうち、何度目かのDNSサーバー再起動の後のタイミングで突然繋がった。時間が必要だったのか、再起動したことが効いたのかよく分からないが、結局変更したのは上の2ヶ所だけだ。

ちなみに前回は焦って、事務所と店を何往復かしながらハマっていたわけだが、今回は事務所に居ながらにして接続を回復することができた。(自分はいつも事務所側に居る)
ただし、これを可能にするには事前の下準備が必要だ。
店のグローバルIPアドレスがいつ変更になってもそれを外部から知ることができるように、店のパソコンから数分ごとにレンタルサーバー上に置いたスクリプトにアクセスし、IPをサーバー上に保存するようにタスクスケージューリングしている。

今回、拠点間通信が切断されていることを知ったのち、まずこの情報を取得することで店の最新のグローバルIPを調べ、L2TP/IPsec接続で店に接続し、リモートデスクトップ画面で店側の設定を書き直した。こちら側(事務所側)も書き直し、拠点間接続の復帰を試みた。最短ならこの時点で繋がると思うのだが、よく分からないがその時点では繋がらず、上のような経過となった。

また、これまでどうだったか記憶にないのだが、今回の試行では店側からの「接続」は成功せず、事務所側からの何回目かの「接続」が成功したという状況だ。
また、接続成功後、事務所の「VPNステータス」の「ステータス」欄は「接続」となっているが、店側は「切断」のままである。
これが前からそういう感じだったかどうかの記憶がない。


 
関連記事
スポンサーサイト




<広告>

Comment

Hiro says... "ブログ拝見させていただきました。"
突然失礼いたします。
ブログを拝見させていただきました。
私もAuthor:ti01さんとほぼ同じシステム構成で、拠点間通信がなかなかできない状態でした。
このようなやり方があったのかと非常に勉強になりました。
この手の情報はほとんどなく、情報公開して頂きありがとうございます。

私の場合、
2重ルータ側のVR-S1000のIKEポリシーは、メインモードでローカルWANIP入力欄に、
BL900HWに割り当てられているグローバルIPを入力してみましたが通信できませんでした。
試しにVR-S1000のMACアドレスをBL900HWと同じにし、接続をONU→VR-S1000→NASにすると通信できました。しかし光電話も使うため、この方法は使えませんでした。

Author:ti01さんと同じく、DNSサーバーを立ち上げてみたいと思いますが、
常時PCを立ち上げていなくてはならないため、代替案も探したいと思います。
2015.10.11 23:09 | URL | #- [edit]
ti01 says... "Re: ブログ拝見させていただきました。"
メインモードはやはりダメでしたか。
情報をありがとうございます。

DNSサーバーは常時PCを立ち上げていないとダメだと自分も思っていましたが、もしかしたら、認証時にさえ立ち上がっていればその後は起動していなくても大丈夫かもしれません。

昨日、DNSサーバーをサービスとしていなかったことに気がついて、サービスとして登録する作業をしましたが、その際DNSサーバーを一度終了する必要がありました。

遠隔で操作していたので、そのタイミングで接続が切れてしまうことを覚悟しつつ終了しましたが、接続が切れることはなく作業を継続できました。
少なくとも一時的にDNSサーバーが起動していなくてもそれで接続が切れることはないようですね。

一定の間隔でDNSサーバーを見に行くようなことであればダメかもしれませんが、その辺はどうなんだろう?

と、ここまで書いてからログを調べたところ、毎日1回ほぼ同時刻に認証し直しているような感じです。(ログの見方があっていればですが)

その時間帯にだけDNSサーバーが立ち上がっていればOKなのかな?
2015.10.12 13:43 | URL | #- [edit]
hiro says... ""
ご返信ありがとうございます。
今日まで気づいておりませんでした。
失礼致しました。

DNSサーバの件、貴重な情報ありがとうございます。
私の場合、両拠点にNASをおいており
互いの定期バックアップの為にIPsec通信が
必要な状態でした。

週末試してみたいと思います。
ありがとうございました。
2015.10.15 09:01 | URL | #- [edit]

Post comment

管理者にだけ表示を許可する

Trackback

trackbackURL:https://ti001.blog.fc2.com/tb.php/455-0d90ac39