スポンサーサイト
投稿日時 : -------- --:--
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
-------- --:-- | スポンサー広告
X05HTをOpenVPNで疑似モデム化
投稿日時 : 2010-01-13 20:49
更新日時 : 2010-01-30 14:45
 X05HT(Touch Pro)をROM焼きやICSやBT-DUN無しで疑似モデム化することに成功しました。ネットブックなどからX05HT経由であらゆるプロトコルで一切の制限なくパケット定額内で通信可能です。これは従来のBT-PAN + DeleGateによるHTTPプロキシ方式とは別ものです。疑似モデム化のためのシステム構築手順の詳細を紹介します。
 

X05HTのモデム化リスク

 X05HTはICS(Internet Connection Sharing)が有効にできないようにロックされているらしいです。これはX05HTをパケット定額プランが適用される通信でPCのモデムとして利用できないようにするための措置かと思われますが、Windows Mobile本来の設計としてはICSによるモデム化は可能です。ICSロックを外したROMを焼けばX05HTでもモデム化できるようですが、ROM焼きはそれなりに高度な知識が必要なだけでなく、失敗した場合は最悪文鎮化します。保証が無効になる上修理の受付を拒否される可能性もあります。ROMのライセンスもあやしい限りです。そんなわけでROM焼きによるモデム化は素人や貧乏人、善人が手を出すべきものでないと言えます。
 

BT-PAN + DeleGate の限界

 モデム化ではありませんが、PCとX05HTをBluetooth PAN接続(IEEE802.11b/gのアドホック接続でも可)し、X05HT上の\DeleGate for Windows Mobile/CE のHTTPプロキシサーバを経由してPCから3G回線を利用してWebアクセスすることは可能です。しかし、あくまでHTTPプロキシなのでブラウザなどの一部のソフトウェアでしか期待される通信ができません。また、SOCKSプロキシも動作していますが、PCから直接利用するにはそのソフトがSOCKSプロキシに対応している必要があり、限界があります。
 

X05HT + BT-PAN + DeleGate + OpenVPNで疑似モデム化

 今回紹介するX05HT擬似モデム化システムは従来のBT-PAN + DeleGate方式にOpenVPNを加えたものです。ネットブックのOpenVPNクライアントと自宅OpenVPNサーバ間で、BT-PAN接続したX05HTのDeleGate上のSOCKSプロキシ経由でSSL暗号化トンネルを作成、ネットブックは自宅LANにブリッジ接続され、すべての通信は自宅LANを経由してインターネットに流れます。
 こういう仕組みなので「擬似モデム」という言葉が本当に適切かは分かりませんが、改造によるリアルモデム化の場合とできることに差がないし、他に適当な名前が思いつかなかったので自分ではこう呼んでいます。ひょっとしたらテザリング(Tethering)の方がいいかもしれませんね。
 

疑似モデム化の特徴

  • ROM焼きなどの保証が無効になるような改造が一切必要ない
  • ICSやBT-DUNを使用しない
  • すべてフリーソフトで合法的に無料で実現可能
  • PCの各ソフトの設定を一切変更する必要がない
  • PCの各ソフトがSOCKS5プロキシなどに対応している必要が全くない
  • SSLトンネルにより携帯電話キャリアに通信内容が漏れない
  • SSLトンネルにより無線経路上での盗聴が不可能
また、ネットワーク的には自宅LANに物理的に接続しているのと変わらない環境になります。つまり自宅LAN内でできることはX05HT経由ですべてできるようになります。自宅LAN内の共有フォルダへ通常のExplorerを使ってアクセスしたり(NBTの速度的におすすめはしませんが・・・)、自宅ルータの管理インターフェースに直接ログインするということも可能です。BT-PAN + DeleGateのときのようにブラウザのプロキシの変更も必要ありません。出先のネットブックでサーバを立てるという変態行為も可能でしょう(確認済:外部からのアクセスは自宅PC→X05HT→ネットブック)。
 
欠点を挙げるとしたら
  1. 自宅PCでOpenVPNサーバを常時稼働させなければならない
  2. OpenVPN環境構築の難易度が高い
  3. 自宅PCを経由するのでそれなりに遅延が発生する
ということでしょうか。(1) に関してはこんな記事を読んでるギークな人は自宅サーバやってる人も少なくないと思うので、Apacheなんかと一緒にOpenVPNサーバも動かしてあげればさほど問題にならないとは思います(OpenVPNはWindows系/Unix系/Mac系に対応しています)。常時稼動の電気代が気になる人はOpenVPNサーバ専用のノートPCなどを用意するといいかもしれません。(2) はHowToページを参考にすすめていけばなんとかなるかと思います。(3) については後述しますが、問題ないレベルの遅延です。
 

通信速度について

 いったん自宅PCを経由することになるのでそこそこ重くなると予想していましたがさほど問題なさそうです(自宅回線は光100M占有)。ブラウザ上での通信速度測定によると平均して 0.6 Mbps 程度出ているようです。自宅LAN内のPCをUltraVNC(ミラードライバ・128bitDSMプラグイン使用・ネットブック解像度1024x600に合わせて自宅PC解像度800x600)で遠隔操作してみたところ、少しひっかかりはありますがイライラするほどではありません。
 

安定性について

 このシステムを思いついてから2ヶ月ほど自分で使ってきましたが怖いぐらい安定しています。もちろん3G電波の強弱には左右されますが、一定の電波強度があれば絶対的に安定しています。東京-新神戸間の新幹線(のぞみ)の中でも試してみましたが、切断されることなく終始安定してネット接続可能なほどです。
 

通信費とパケット定額フルについて

 BT-PAN + DeleGateの場合でも確認が取れていますが、疑似モデム化した場合も通信費はSoftbank Mobileのパケット定額フルの対象になります。でも何かあったときには責任取れないのですべて自己責任でお願いします。
 

通信規制について

 2009/12/01からSoftbank Mobileの通信規制の基準がかなり厳しくなりました。調子に乗って使いすぎると通信規制閾値を超えた翌々月から 「1ヶ月間」 速度規制がかかります。56kbpsになるらしいww。なぜアナログモデムと同じ56kbpsという数字を選択したのか、懲罰的意味合いを強調する目的があるような気がしてならないw。
 
通信品質確保対策の導入について | ソフトバンクモバイル株式会社
ソフトバンクモバイル株式会社では、通信品質およびネットワーク利用の公正性確保のために、パケット定額サービスに加入し一定期間に大量の通信をご利用される一部のお客さまに対して、2009年12月1日(火)より通信速度の制御を実施する場合がありますので、お知らせいたします。なお、通信の切断は行いません。
 
2009年6月1日から、通信速度を制御する試験により、お客さまへの影響とその効果を検証してまいりました。その結果、より多くのお客さまが快適にサービスをご利用いただけることが確認できたため、2009年12月1日より正式に運用開始いたします。前々月の月間パケット数が、パケットし放題、パケットし放題S、パケット定額ライト、パケット定額の場合、300万パケット以上(PCサイトブラウザ、PCサイトダイレクト利用時は1,000万パケット以上)、パケット定額フルの場合、1,000万パケット以上のお客さまについては、当月1ヶ月間、パケット定額サービスが適用されるパケット通信の速度を制御する場合があります。
 
 ということで限り有るネットワーク資源を共有する他の一般ユーザの皆様にご迷惑をおかけすることにならないよう、くれぐれも節度をもって各自自己責任でお願いします。
 

SoftBank Mobile + X05HT 以外の環境への応用について

 実際に動作確認したのはSBM + X05HTだけですが、携帯端末でSOCKS Version 5 プロキシかHTTPプロキシが動作するならどんな環境にでも応用が利くような気がします。キャリアによっては通信プロトコルに制限がかけられていることも考えられますが、OpenVPNはHTTPプロキシ経由での接続にも対応しています。下記「類似の手段」でも紹介している「MobileFree.jp VPN 実験サービス」でDocomo回線でのHTTPプロキシ経由通信が可能なことからも、おそらくすべてのキャリアに応用できます。SoftEther(Packetix VPNとOepnVPNも?)の特徴的な通信を検出して遮断することは技術的には可能なようですが、キャリアがユーザの通信内容に応じて制限をかけるということは法律的な根拠(ぷららのWinny遮断撤回事件等)からもなさそうです。
 

類似の手段

 本題に入る前に類似の技術を2つ紹介します。自由度の高さと安定性ではOpenVPNを使った擬似モデム化システムには及びませんが、従来型のBT-PAN + DeleGate(HTTPプロキシ)型よりはマシな方法がいくつかあります。
 ひとつはソフトイーサ株式会社が実験的に提供しているMobileFree.jpサービスを利用することです。
 
 
基本的にこのサービスで使われている技術は今回のOpenVPNを利用したものと変わらないと思います。ユーザがやることはクライアントソフトをインストールし、HTTPプロキシとしてX05HT上のDeleGateのIPとポートを指定するだけです。クライアントはソフトイーサ株式会社と提携している筑波大学学術情報メディアセンターにあるサーバに接続され、そこからインターネット接続されます。簡単でいいんですが、数時間ほど試してみたところ、基本的にすべての通信が通るんですが、なぜか頻繁に接断され再接続を試みてもサーバに拒否されるということが何度も起こりました。なので自分の中では自宅OpenVPNサーバ落ちたときの保険という程度の位置づけです。
 
 もうひとつ、すべての通信をSOCKSプロキシに流すProxifierというソフトがあります。
 
 
これは通信プロセスを検出してパケットスニファと同じ要領でパケットを横取りしてSOCKSプロキシに流すという仕組みのようです。こちらもSOCKSサーバとしてX05HT上のDeleGateを指定するだけの簡単設定です。しかしこれはかなり問題があって、まず通信プロセスをすべて検出してくれません。そして自分の環境だけでかもしれまんが、頻繁にクラッシュします。NetShareによるiPhone 3Gのモデム化なんかの時に少し話題になったようですが実用に耐えるものではない気がしました。シェアウェアですし。ということで、
 
    擬似モデム化>>>>>MobileFree>>>>Proxifier>BT-PAN+DeleGate
 
という感じでしょうか。
 

疑似モデム化に必要なもの

  • X05HT(Windows Mobile搭載機、またはSOCKS 5 Proxyが動作する通信端末)
  • パケット定額フル(またはそれに類するパケット定額制サービス)
  • 自宅設置の常時稼動サーバPC。OpenVPNサーバが動くならOSの種類やバージョンは問わない)
  • OpenVPN
  • グローバルIPがもらえる自宅常時接続回線(マンションタイプなどの回線でもマンションゲートウェイにグローバルIPが割り当てられているなら不可能ではない)
  • ルータポート開放権限(UPnPで開けられるならそれでも可)
  • DDNSサービスへの登録(ISPから固定IPがもらえない場合)
  • Bluetooth(+ PANプロファイル)か無線LAN(IEEE802.11b/g)が利用可能なネットブック。OpenVPNクライアントが動くならOSの種類やバージョンは問わない
  • \DeleGate for Windows Mobile/CE
  • DeleGate (自宅PCが固定IPではなくDDNSを利用してホスト名でアクセスしたい場合)
  • 自宅サーバを立てられるぐらいの基本+α程度のPC全般知識
  • 小規模なサブネット化LANを自力で組めるくらいのネットワーク知識
  • 節度
 
*難易度の高いOpenVPNの代わりに比較的設定の容易なSoftEther1.0を使用することもできます。SoftEther1.0はいくつかのバグを残したまま開発が終了しましたが、一定期間試した限りでは正常に動作しているように思います。SoftEtherは現在はPacktix VPNと名前を変えて製品として販売されています。ライセンスが複雑かつ高額ですが、暇がなくてお金がある人は検討の余地があるかと思います。一応、次の記事でSoftEther1.0を使った擬似モデム化についてもまとめるつもりなのでOpenVPNで挫折した場合はそちらを参照してください。
 

環境

 今回の解説で使用している環境は以下の通りです。
 
  • 自宅PC(Mouse Computer MDV-AD6000S-EX)
    • Intel Core2 Quad Q9550 @ 2.83GHz
    • 4.00 GB RAM
    • Windows XP Pro SP3
    • OpenVPN 2.1.1(TAPドライバ署名バージョン)
 
  • ネットブック(MSI U115 Hybrid)
    • Intel Atom Z530 @ 1.60GHz
    • 2.00 GB RAM
    • Windows XP Home SP3
    • OpenVPN 2.1.1(TAPドライバ署名バージョン)
    • DeleGate 9.9.7-pre20
 
 

擬似モデム化システムの全体図

 具体的な設定情報を含めて図にしてみました。OpenVPN環境を構築したことがあって、X05HT + DeleGateで外に出たことがある人はこれ見ればなんとかなるんじゃないでしょうか。
 要はBT-PAN接続したX05HT上のDeleGateのSOCKSプロキシサーバを経由し、ネットブックと自宅PCとでVPNトンネルを作成、そこから目的の通信をするということです。この説明で分かる人はこれ以降読む必要はありませんw。キャリアはSoftbank Mobileが前提です。SBM以外のキャリアでの動作は未確認です。クリックで拡大。
 
X05HT 擬似モデム化 システム全体図
 

おおまかなシステム構築手順

  1. ネットワークアドレスの割り当て計画
  2. ネットブック + X05HT で BT-PAN + DeleGate 外部接続環境構築
  3. ネットブックでDeleGate DNS Proxyサーバ構築(自宅ゲートウェイが固定IPではなく、DDNSでホスト名解決する場合)
  4. 自宅PCでOpenVPNサーバ構築
  5. 自宅PCの物理NICと仮想NICをブリッジ接続(TAP接続の場合のみ)
  6. 自宅ルータのポート解放
  7. DDNSサービスへの登録
  8. ネットブックでOpenVPNクライアント環境構築
  9. 完成
 
以下、各手順の詳細を書いていきます。
 

ネットワークアドレスの割り当て計画

 まず最初にネットワークアドレスの割り当て方を決めます。今回の解説ではBT-PANネットワークに172.16.100.0/30、自宅LANに192.168.100.0/24を割り当てています。今回構築したOpenVPN環境を擬似モデム化システムとしてのみ使用するつもりならあまり深く考える必要はありませんが、公衆無線アクセスポイントなどからも自宅LANにVPN接続したいという場合は、一般的によく使われるネットワークアドレスを避けて割り当てる必要があります。
 例えば自宅LANが192.168.0.0/24など、一般的なルータのデフォルトのネットワークアドレスのままの場合、公衆無線LANで割り当てられるIPが同じ192.168.0.0/24に属していると、OSは192.168.0.0/24宛のパケットを自宅LANにブリッジ接続されたOpenVPNの仮想NICと公衆無線LANに繋がるWi-Fi-NICのどちらから送出するべきか判断できません。つまり複数のNICが同じネットワークアドレスに属するという事態は避けなればならないということです。OpenVPNのマニュアルにも書いてありますが、10.0.0.0/8ネットワークの真ん中あたりでサブネットを切って使用するというのがベストのようです。実際、OpenVPNのTUN接続のデフォルト設定では10.8.0.0/24ネットワークが使用されています。
 

ネットブック + X05HT + BT-PAN + DeleGate 外部接続環境構築

 まずはOpenVPNを加えない、従来のBT-PAN(もしくはIEEE802.11b/g) + DeleGate方式でネットブックからWebアクセスできる環境を構築しておきます。従来型ではDeleGateのHTTPプロキシを利用しますが、OpenVPN型ではHTTPプロキシの代わりにSOCKSプロキシを使います。違いはそれだけなのでHTTPプロキシで外に出れるようにしておけばSOCKSプロキシでも外に出れることが保証されます(SBMでのみ確認、非推奨ですがOpenVPNでHTTPプロキシを経由することもできます)。
 
■Bluetooth PAN接続 と IEEE802.11b/gアドホック接続
 PCとX05HT間はBluetoothでPAN接続するか、Wi-Fi(IEEE802.11b/g)でアドホック接続するか選択できます。消費電力の観点からはBTの方が断然有利です。Wi-Fi接続の場合、充電が追いつかないぐらい消費が激しいです。X05HTの発熱もBTの方が少ないように思います。速度ではWi-Fiの方が若干有利ですが、消費電力と天秤にかけるとそれほどのメリットとは思えません。これらの理由からPCとX05HT間はBT-PAN接続することをおすすめします。
 それとX05HTのデフォルト状態ではX05HTのスリープとともにWi-Fi電源が切れます。Advanced Configuration Toolを使ってスリープ時も通信を継続するように設定できます。
 
 以下にBT-PAN接続の場合とWi-Fiアドホック接続の場合の設定手順を示しますが、X05HTにwasabi用VFJP接続等の複数の接続設定がある環境は考慮していません。確認が取れ次第追記したいと思います。
 
■Bluetooth PAN接続の場合
  • X05HTで、本体メモリのルート(マイポケットPC直下)に「DeleGate」という名前のフォルダを作り、そこに\DeleGate for Windows Mobile/CEから「winmo-dg.exe」と「dgcezlib1.dll」をダウンロードして保存。
  • X05HTで「設定」-「接続」-「Wi-Fi」の「ネットワークアダプタ」タブで「社内ネットワーク設定」を選択し、その下のアダプタ一覧から「Bluetooth PAN Driver」を選択して「編集」→「IPアドレス」タブの「指定したIPアドレスを使用する」にチェックを入れて「172.16.100.1/255.255.255.252」を設定。デフォルトゲートウェイやネームサーバ(DNS)の設定は不要。
  • ネットブックでToshiba Bluetooth StackBluesoleil、その他OS標準のプロファイル等でPANサーバを有効化
  • PCのBT-PAN NICに固定IP(172.16.100.2/255.255.255.252)を設定。デフォルトゲートウェイは設定してはいけない。自宅ネットワークのゲートウェイ(ルータ)に固定IPが割り当てられていない場合は、DNSを「127.0.0.1」とする(DeleGate DNS Proxyサーバ用:後述)。
  • PCとX05HTでBluetoothペアリング後、PCからX05HTにPAN接続確立。PING等で172.16.100.1と通信確認。
  • X05HTでDeleGate起動(GSFinder+などのファイラからwinmo-dg.exe直接起動。ショートカットを作ったりランチャに登録するなどしても可)
  • PCのブラウザのプロキシ設定をX05HTのBT-NICのIPアドレス(172.16.100.1:8080)に設定
  • ブラウザからWebページが表示できるか確認
  • ブラウザのプロキシ設定を元に戻す
 
■IEEE802.11b/g アドホック接続の場合
  • X05HTで、本体メモリのルート(マイポケットPC直下)に「DeleGate」という名前のフォルダを作り、そこに\DeleGate for Windows Mobile/CEからwinmo-dg.exeをダウンロードして保存。
  • X05HTで「設定」-「接続」-「Wi-Fi」の「ワイヤレス」タブで「メニュー」の「新しい設定の追加」をタップ、ネットワーク名に適当な名前「DeleGate」などを入力、「接続先」は「社内ネットワーク設定」を選択、「これはデバイスとデバイス(ad-hoc)の接続です」にチェック、「次へ」で認証は「オープン」を選択、「データ暗号化」は「WEP」を選択、「ネットワークキー」に任意の5文字もしくは13文字もしくは16文字のASCII文字を入力、「キーインデックス」は「1」を選択、「次へ」、「完了」をタップ。戻ってきたメイン画面で「アクセスするネットワーク」で「コンピュータからコンピュータ」を選択、今作成した「DeleGate」が表示されているか確認する
  • X05HTで「設定」-「接続」-「Wi-Fi」の「ネットワークアダプタ」タブで「社内ネットワーク設定」を選択し、その下のアダプタ一覧から「IEEE 802.11b/g Compatible Wi-Fi Adapter」を選択して「編集」→「IPアドレス」タブの「指定したIPアドレスを使用する」にチェックを入れて「172.16.100.5/255.255.255.252」を設定(上記BT-NICの設定とかぶらないようにしています)。デフォルトゲートウェイやネームサーバ(DNS)の設定は不要。
  • PCで「Wireless Zero Configuration」サービス有効化(サードパーティ製のツールを使ってWi-Fi接続を制御している場合はこの操作は不要)
  • PCのWi-Fi NICに固定IP(172.16.100.6/255.255.255.252)を設定(上記BT-NICの設定とかぶらないようにしています)。デフォルトゲートウェイは設定してはいけない。自宅ネットワークのゲートウェイ(ルータ)に固定IPが割り当てられていない場合は、DNSを「127.0.0.1」とする(DeleGate DNS Proxyサーバ用:後述)。
  • X05HTでWi-Fi有効化
  • PCの「ワイヤレスネットワークの選択」に「DeleGate」が表示されるので選択してアドホック接続確立(サードパーティ製のツールを使ってWi-Fi接続を制御している場合はその操作方法に従ってください)。
  • X05HTでDeleGate起動(GSFinder+などのファイラからwinmo-dg.exe直接起動。ショートカットを作ったりランチャに登録するなどしても可)
  • PCのブラウザのプロキシ設定をX05HTのWi-Fi NICのIPアドレス(172.16.100.5:8080)に設定
  • ブラウザからWebページが表示できるか確認
  • ブラウザのプロキシ設定を元に戻す
 

DeleGate DNS Proxyサーバの構築

 自宅のルータ(インターネットゲートウェイ)に固定IPが割り当てられていない場合はDDNSなどを利用してホスト名で接続したいところですが、DeleGate CEはDNSプロキシとしては動作させられないようなので、ネットワーク接続が存在しない状態のネットブックから初めて外部に接続するときに、通常の方法ではホスト名の名前解決ができません。そこでなんらかの手段で自宅ゲートウェイの現在のグローバルIPを知る必要があります。さまざまな方法が考えられますが、お手軽なのは先程構築した従来型のBT-PAN + DeleGate(HTTPプロキシ)経由でブラウザでIPひろばでホスト名で検索したり、DDNSサービスサイトにログインして現在のグローバルIPを確認したりすることです。しかしOpenVPNの設定ファイル中に確認したグローバルIPを手動で書く必要があるので面倒です。
 そこでネットブックでPC版DeleGateでDNS Proxyサーバを構築します。先程ネットブックのBT-NICのDNS設定を「127.0.0.1」に設定しましたが、これはローカルで動作するDeleGate DNS Proxyサーバを指定しています。DeleGate DNS Proxyは外部のSOCKSサーバを経由することが可能なので、ローカルからの名前解決リクエストをX05HT上のDeleGateのSOCKSサーバを経由して実行することができます。
 以下からPC版のDeleGate(win32-dg.exe)をダウンロードし、「C:\DeleGate\win32-dg.exe」などに保存します。  
コマンドプロンプトから以下を実行してDNS Proxyサーバをサービスに登録します。改行されて表示されていますが1行で入力してください。
C:\DeleGate\win32-dg.exe -P53 SERVER=dns SOCKS=172.16.100.1:1080 CONNECT=socks RES_NS=8.8.8.8:53,8.8.4.4:53//172.16.100.1:1080 RELIABLE=127.0.0.1 DGROOT=C:/DeleGate ADMIN=itmst71@gmail.com
 
それぞれのパラメータを軽く説明します。
  • 「-P53」はListenポート番号(DNS)
  • 「SERVER=dns」はDNS Proxyサーバとして動作
  • 「SOCKS=172.16.100.1:1080」は経由するSOCKSサーバのIPとポート番号(X05HT上のDeleGateのSOCKSサーバ)
  • 「CONNECT=socks」は通信試行順序の指定(SOCKSサーバのみ使用)
  • 「RES_NS=8.8.8.8:53,8.8.4.4:53//172.16.100.1:1080」は名前解決にGoogleパブリックDNSサーバ8.8.8.8:53と8.8.4.4:53を利用し、接続はSOCKSサーバ172.16.100.1:1080(X05HT上のDeleGateのSOCKSサーバ)を経由
  • 「RELIABLE=127.0.0.1」は接続を許可するホストIP
  • 「DGROOT=C:/DeleGate」はDeleGateのルートディレクトリの指定
  • 「ADMIN=itmst71@gmaill.com」は管理者のメールアドレス
*IEEE802.11b/gアドホック接続の場合は「172.16.100.1:1080」をすべて「172.16.100.5:1080」に読み替えてください。
 
 実行してしばらく待つとサービスに登録するかどうか聞かれるのでYESを選択する。以後、PC起動時に自動的にDeleGate DNS Proxyも起動されるようになります。サービスから削除するには以下のコマンドを実行します。
C:\DeleGate\win32-dg.exe -P53 -Fkill
 
これらのコマンドはバッチファイル(*.bat)化しておくと楽です。
 
正常に動作しているかはコマンドプロンプトから
C:\WINDOWS\system32>nslookup www.yahoo.co.jp
Server: localhost
Address: 127.0.0.1
 
Name: www.yahoo.co.jp
Address: 203.216.235.154
というように127.0.0.1をDNSサーバとして名前解決ができているかで分かります。
 

自宅PCでOpenVPNサーバ構築

 OpenVPNサーバの構築については基本的には以下ページの手順通りやっていけばなんとかなるかと思います。
 
公式マニュアルページはこちら
 
詳細に説明すると膨大なのでここでは設定のポイントだけ。
 
■TAP接続とTUN接続の選択
 OpenVPNにはTAP接続とTUN接続があります。TAP接続はL2接続で自宅物理LANにブリッジ接続する形になります。ネットワークに詳しくない人はTAP接続の方がルーティングが絡んでこない分、トラブルが少ないと思います。ブロードキャストも通るのでクライアントPCはまるで自宅LANに直接接続してるかのような状態になります。TUN接続はL3接続で、物理ネットワークとは切り離されたOpenVPN仮想ネットワークに接続され、物理ネットワークとの通信にはサーバでIPルーティングが必要です。ルータに仮想ネットワークへの静的ルートを追加する必要もあります。このようにTUN接続は敷居が高いので今回はTAP接続に絞って解説します。ただし自宅にルータがなく、PCが直接モデムにつながってPC自体にグローバルIPが割り当てられている環境ではTAP接続ではなくTUN接続しなければなりません。あと、Windows 2000ではブリッジ接続できないのでこの場合もTUN接続を選択してください。
 
■TCP接続とUDP接続の選択
 TCP接続とUDP接続が選択できます。速度的に有利なので基本的にUDP接続を選択するべきです。ただしキャリアのプロトコル規制等でSOCKSプロキシによるUDP通信が通らない場合は、HTTPプロキシによるTCP通信するしかありません。これはSoftEther(Packetix VPN)等で採用されている手法ですが、TCP over TCPの問題があるので不安定な回線だとより一層不安定になってしまいます。
 
■X509 PKI(証明書と秘密鍵を使った公開鍵認証)を採用するべき
 クライアントの認証に公開鍵認証を使うか静的鍵を使うか選択でき、「静的鍵の方が簡単」という記述がありますが、HowToの通りにやれば公開鍵認証は何も難しいことはありません。拡張性・柔軟性の観点からしても公開鍵認証を使用するべきです。
 
現在自宅で運用中のOpenVPNサーバのTAP接続用設定ファイルは以下のようになっています。鍵ファイル名などは上記HowToサイトの解説のものと同じです。
 
OpenVPNサーバ TAP接続用設定ファイルサンプル
port 1194
management localhost 7505
proto udp
dev tap
dev-node TAP-Network-Adapter
 
server-bridge 192.168.100.2 255.255.255.0 192.168.100.64 192.168.100.127
 
ca ca.crt
cert server.crt
key server.key
dh dh1024.pem
client-to-client
keepalive 5 120
comp-lzo
persist-key
persist-tun
status openvpn-status.log
verb 3
 
赤文字部分について解説します。
  • 「port 1194」でListenポートを指定しています。「proto」が「udp」なのでこれはUDPの1194番ポートのことです。
  • 「dev」が「tap」なので後述の通り、物理NICと仮想NICをブリッジ接続する必要があります。
  • 「TAP-Network-Adapter」というのはWin32-TAPアダプタが複数存在する場合にどのアダプタを使用するかを指定しています(ウチではTAP接続とTUN接続の2つのインタンスを実行しているので識別が必要)。ひとつしかない場合はこの行は不要です。アダプタ名は「ネットワーク接続」で任意の名前をつけたものを使用しています。この設定はOSがWindowsの場合のみ意味があります。
  • 「192.168.100.2 255.255.255.0 192.168.100.64 192.168.100.127」は「192.168.100.2」がOpenVPNサーバのローカルIP、「192.168.100.64」がクライアントに割り当てるIPの最初のアドレス、「192.168.100.127」が最後のアドレス。IP割当範囲に関しては環境や好みによると思うので適当に変更してください。
  • 「comp-lzo」はLZO圧縮を使用することを指定しています。LZO圧縮の有無はクライアント側と統一する必要があります。
 

自宅PCの物理NICと仮想NICをブリッジ接続(TAP接続の場合のみ)

 Windows XP以降に標準で搭載されているNICのブリッジ接続機能を使って、物理NICと仮想NICをブリッジ接続し、ネットワークブリッジを作成します。両者をブリッジ接続することで物理NICと仮想NICが同一のネットワークセグメント上に存在しているかのように扱われるようになります。
 ネットワークブリッジを作成するにはコントロールパネルの「ネットワーク接続」を開いて、物理NICと仮想NICを二つとも選択した状態で右クリックし、「ブリッジ接続」を選択するだけです(Vista~の場合)。Linuxの場合はbrctlコマンドを使います。
 注意点はネットワークブリッジを作成すると物理NICと仮想NICが結合されたひとつのNICのように扱われるようになるので、IPアドレスの割り当てなどは個別のNICに対してではなく、ネットワークブリッジに対して行わなければならないということです。各NICにIPアドレスなどを割り当てていたとしても、作成したネットワークブリッジの設定はデフォルトの「自動的に取得」になっているので、設定し直さなければなりません。通常は物理NICの設定をそのまま引き継げばいいと思います。
 

自宅ルータのポート解放

 外部から接続できるように自宅ルータのIPマスカレード(NAPT)設定をします。UDP 1194をOpenVPNサーバ192.168.100.2に転送するように設定します。設定方法はルータの説明書を見てください。回線がマンションタイプなどでルータの管理画面にログインできないなら、UPnPを使えばなんとかなると思います。UPnPCJUPnP Port MapperBss UpNpなどを使って該当ポートの開放を試してみてください。
 

DDNSサービスへの登録

 自宅サーバを運営する人には常識ですが、ISPから割り当てられるIPアドレスが固定IPではなく接続するたびに変化する動的IPの場合、DDNS(Dynamic DNS)サービスに登録することを激しくお薦めします。DDNSサービスを利用すれば、自宅ルータへの割り当てIPが変化してもいつも同じホスト名でアクセスすることができます。DDNSサービスの提供元はたくさんあります。有名どころはDynDNS.comNo-IP.comあたりでしょうか。ユーザ登録して任意のホスト名を作成、クライアントソフトをサーバPCにインストールしてサービス登録しておけば、勝手にグローバルIPの変化を検出してDDNSサービス提供元に通知、DNSエントリの書き換えを実行してくれます。バッファロー・ダイナミックDNSサービスなんてものもありますね。
 

ネットブックでOpenVPNクライアント環境構築

 OpenVPNクライアント側の設定も基本的にHowToマニュアルを見れば分かるかと思います。
 
ここでも設定のポイントだけ説明します。
 
■サーバ設定に合わせる
 クライアントの設定は自宅のOpenVPNサーバの設定に合わせる必要があります。TAP接続なのかTUN接続なのか、TCPなのかUDPなのか、lzo圧縮は使用しているのかいないのか のあたりは必ずサーバ側と統一しなければなりません。
 
現在実際に使用しているOpenVPNクライアントのTAP接続用設定ファイルを貼ります。
 
OpenVPNクライアント TAP接続用設定ファイルサンプル
client
dev tap
dev-node TAP-Network-Adapter
proto udp
 
remote mproxy.no-ip.net 1194
resolv-retry infinite
socks-proxy 172.16.100.1 1080
socks-proxy-retry
 
route 0.0.0.0 0.0.0.0 192.168.100.1
dhcp-option DNS 192.168.100.1
 
nobind
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
ns-cert-type server
comp-lzo
verb 3
 
赤文字部分について解説します。
  • 前述の通り「dev tap」や「proto udp」や「comp-lzo」はサーバ設定と統一してください。
  • 「TAP-Network-Adapter」はWin32-TAPアダプタが複数存在するときにどのアダプタを使用するかを指定するためのものです。Win32-TAPアダプタをひとつしかインストールしていない場合はこの行は不要です。
  • 「mproxy.no-ip.net」がDDNSに登録してあるホスト名です。ここを環境に合わせて変更してください。自宅ゲートウェイに固定IPが割り当てられている場合や、ローカルのDeleGate DNS Proxyを利用しない場合はここにIPアドレスを記述します。
  • 「socks-proxy 172.16.100.1 1080」がX05HT上のDeleGate SOCKSプロキシを指しています。もしHTTPプロキシを使用する場合はここが「http-proxy 172.16.100.1 8080」に、関連してその下の「socks-proxy-retry」も「http-proxy-retry」になります。*IEEE802.11b/gアドホック接続の場合は172.16.100.1を172.16.100.5に読み替えてください。
  • 「route 0.0.0.0 0.0.0.0 192.168.100.1」でデフォルトゲートウェイを自宅ネットワークのインターネットゲートウェイ(ルータ)の「192.168.100.1」に設定しています。
  • 同じく「dhcp-option DNS 192.168.100.1」でDNSサーバを「192.168.100.1」と自宅ルータに設定しています。
  • これらのDNSサーバやデフォルトゲートウェイの設定をサーバ側設定ファイルにpushディレクティブを使って「push "dhcp-option DNS 192.168.100.1"」や「push "route 0.0.0.0 0.0.0.0 192.168.100.1"」のように書いておくこともできますが、サーバ側の設定は出先からは簡単に変更できないのでクライアント側にこのように書いておくとトラブルに柔軟に対応できるかと思います。
 

接続

 いよいよ接続です。手順は以下のようになります。
 
■BT-PAN接続の場合
  1. X05HTのBluetoothをオン
  2. X05HTでDeleGate起動
  3. ネットブックのBluetoothオン
  4. ネットブックからX05HTへBT-PAN接続
  5. ネットブックのDeleGate DNS Proxyサーバ起動(サービス登録していない場合)
  6. ネットブックのOpenVPNクライアントと自宅OpenVPNサーバと接続
  7. PINGやブラウザでのWEBページ表示等で通信確認
 
■IEEE802.11b/gアドホック接続の場合
  1. X05HTのWi-Fiをオン
  2. X05HTでDeleGate起動
  3. ネットブックのWi-Fiオン
  4. ネットブックからX05HTとアドホック接続
  5. ネットブックのDeleGate DNS Proxyサーバ起動(サービス登録していない場合)
  6. ネットブックのOpenVPNクライアントと自宅OpenVPNサーバと接続
  7. PINGやブラウザでのWEBページ表示等で通信確認
 
OpenVPNクライアントの起動方法ですが、はじめはOpenVPN GUIなどのツールを使うのではなく、設定ファイル(*.ovpnファイル)を右クリックして「Start OpenVPN on this config file」を実行する方がいいです。起動プロセスが確認できます。
 

トラブルシューティング

 一発で接続できればいいのですが、そうも簡単にはいかないというのが現実かもしれません。OpenVPNクライアントでハマりがちなポイントをいくつか紹介しておきます。
 
■「TCP connection established with 172.16.100.1:1080」と表示されたまま反応がない
X05HT上のDeleGateとは通信が確立していますがその先に進めない状態です。DDNSを利用してホスト名でアクセスしようとしている場合はホスト名の名前解決ができているか確認してください。名前解決できていない場合はネットブックで動作しているDeleGate DNS Proxyの設定を見直すか、自宅ゲートウェイのIPを設定ファイルに直接入力して試してみください。
 
■「UDPv4 link remote: xxx.xxx.xxx.xxx:1194」と表示されたまま反応がない
接続先IPアドレスが自宅ルータの現在のIPアドレスと本当に同じか確認してください。また、ポート番号の指定が間違っていたり、ルータのポート開放ができていない可能性もあります。
 
■接続完了後LAN内PCからPINGは返ってくるのにブラウザでWebページが表示できない
デフォルトゲートウェイの問題の可能性が高いです。コマンドプロンプトで「route print」として「0.0.0.0 0.0.0.0」で始まる行が複数存在しないか確認してください。または、出力の末尾に「Default Gateway: 192.168.100.1」のような表示があるか、また、その値は自宅LANのルータを指しているかを確認してください。
 
スポンサーサイト
2010-01-13 20:49 | X05HT | Comment(0) | Trackback(0)
Comment
コメントを書く
#

管理者にだけ表示
Trackback
Trackbak URL:http://itmst.blog71.fc2.com/tb.php/189-3a841f01
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。