2015年2月22日日曜日

SoftEther VPN を使ってみた

遠隔地の PC から自宅にある LAN 端末に接続するため SoftEther VPN を使ってみました。いきなり遠隔地との間で通信実験するわけにも行かず、自宅内でルータ/NAT越えの環境を作り検証したうえで遠隔地との接続実験を行いました。この LAN 端末は、同一ネットワークからのみアクセスを受け付ける仕様のため、ルータを介して接続された LAN2 からは直接アクセスできません。
そこで、LAN1 に SoftEtherVPN Server を接続。LAN2 の VPN クライアントからの接続を試します。



サーバPCの設定
・SoftEther VPN Server をインストールします。
・SoftEther VPN Server 管理 Manager で "localhost"に接続します。


・"localhost" に接続し、簡易セットアップウィザード画面でリモートアクセスVPN サーバー を選ぶと、仮想 HUB の作成画面に移るので適当に名前を付けておきます。



・次に DDNS の設定画面です。これは SoftEther が学術実験目的で運営しているもので無料とのこと。設定内容を確認して画面を閉じます。


・VPN Azure は使わないので今回は無効にしました。


・ユーザの作成と VPN に対してブリッジ接続する物理 Ethernet デバイスを指定します。


・ユーザの作成は、ユーザ名とパスワードを指定するだけです。


・設定が終わり SoftEther VPN サーバー 管理マネージャの画面を拝むことが出来ました。



クライアントPCの設定
・SoftEther VPN Client をインストールします。
・SoftEhter VPN クライアント接続マネージャで”仮想 LAN カード”を作成
 仮想LAN → 新規仮想LANカードの作成 → 名前は適当に。
 これでネットワークのプロパティに仮想 LAN カードが現れました。


・SoftEhter VPN クライアント接続マネージャで”新しい接続設定の作成”
 接続 → 接続設定の新規作成

  接続設定名: 適当に
  ホスト名: DDNS の FQDN またはIP アドレス
  仮想 HUB 名
  ユーザ名
  パスワード



自宅内でルータ越え通信実験
自宅内であれば上記設定で、VPNクライアントPC1から VPN サーバを通して LAN 端末に無事アクセスできました。(ブロードバンドルータでNATされるので逆方向の通信はできません)



ところで SoftEther VPN サーバは L2TP/IPsec にも対応しています。試しに、クライアント PC から Windows の VPN 接続機能を使って接続を試みたところ、接続はできましたが、件の LAN 端末にはつながりませんでした。何か、微妙に違いがあるようです。

L2TP/IPsec を使うには、SoftEther VPN サーバー 管理マネージャの IPsec/L2TP 設定で行いました。



遠隔地からの通信実験
次に遠隔地からの通信を試してみます。自宅のホームゲートウェイでNATされますので、ポートマッピング設定(静的 IP マスカレード)を行います。インターネット側から SoftEther が使うポート番号のパケットが来たら、SoftEther VPN サーバに届くようにしてください。

・プロトコル TCP(ポート番号 443)
・プロトコル TCP(ポート番号 992)
・プロトコル TCP(ポート番号 1194)
・プロトコル TCP(ポート番号 5555)

これで、遠隔地の Windows PC に SoftEther クライアントをインストールして無事に自宅 LAN 端末へのアクセスに成功しました。(ご協力頂いた K 様ありがとうございました)

2015年2月9日月曜日

意外に使える!? 中華AndroidミニPCを試す

HDMI端子に接続するだけでテレビを”スマートテレビ”化できる、AndroidミニPCを買ってしまいました。この手のものとしてはMK809というスティックPCタイプが有名のようなんですが、その小ささゆえ発熱で不安定になるとか無線LANがどうもとか少々癖のある製品のようです。そこで、有線LAN付きで極端に小型すぎない卓上型?を選んでみました。CPUはRK3188T 1.4GHzのクワッドコアだということです。これで送料込みで1万円以下。怪しさ満点なので価格が高いのか安いのか何とも評価しづらいですが買い求めやすい価格と思います。


Amazonで注文すると、10日余りで中国・広州から小包で届きました。職場宛に送ってもらったんですが、差出人が空白になっていたり(よく見るとアパートみたいな住所で、簡体字で個人名が書いてありました)中国語の文字が書いてあったり、箱が凹んでいたりして”貴方宛の荷物で間違いないか?”と不審物扱いされてました。


電源やケーブル類、リモコンまで付属しています。キーボードとかマウスなど入力デバイスは別途欲しくなるかもですね。
早速、レグザにHDMIケーブルを接続してスイッチオン。レグザの仕様表によると1080p(60p/24p)対応で画面表示できるのか心配でしたが杞憂でしたね。1080pではなくても映るようです。


次いで、Androidの画面出力を変更します。設定→ ディスプレイ → HDMI Mode にて 1920×1080p-60に変更します。無事1080pに変更できました。


このAndroidは、Google Playがプリインストールされているのでアプリを追加してみます。例のピクセラのアプリを試してみます。が、残念ながら非対応。駄目な理由を明かさなくてどうするの!と文句を言いたいです。



さて Radiko はどうでしょうか。結論から言うと、GPS がないので駄目でした。疑似ロケーションを無効にしてくれというので、言うとおりやってみましたけど。
代わりに "Raziko" を試したところ、PCと同様にちゃんとラジオを聴くことができました。



そういう訳で、駄目っぽいアプリはやはり制約がありましたが テレビで見る Youtube は PC よりキレイに見えますし、動作もスムーズで好印象でした。メディアプレーヤ的に使うには、やっぱり適しています。



2015年2月5日木曜日

スマホで自宅へVPN

VPN ルータ RTX1100 を使って、スマホから自宅へ VPN 接続する実験をしてみました。VPN のプロトコルには、種々ありますが比較的新しい L2TP/IPsec を試しました。
我が家のインターネット接続は、au ひかり でプロバイダとホームゲートウェイ間は PPPoE 接続。ホームゲートウェイには動的グローバル IP が割り振られています。ただ、”動的” とは言っても IP アドレスの変動は少ないようです。
VPN ルータは、インターネットに直接接続したいところですが、ホームゲートウェイに ひかり電話機能がついている都合上、ホームゲートウェイの LAN 側に接続せざるを得ませんでした。


ホームゲートウェイの設定
VPNルータの応用例を見ると、インターネットに直接接続することを前提にされている場合がほとんどです。今回の場合、インターネット → ホームゲートウェイ → VPNルータ という二重ルータ構成になってしまいます。このためインターネット側からの接続を可能とするため、IPsec で必要なポートマッピング設定(静的 IP マスカレード)を行います。

・プロトコル ESP: LAN側ホスト 192.168.0.240
・プロトコルUDP(ポート番号 500): LAN側ホスト 192.168.0.240
・プロトコルUDP(ポート番号 4500): LAN側ホスト 192.168.0.240

また、ホームゲートウェイで IP アドレス変換されてしまうので VPN パススルー機能を有効化しておきます。


VPNルータの設定
ここではVPNトンネルを3本用意し、5名分のユーザ登録をしてみました。


上記と同じ内容のテキスト文は次の通りです。

ip route default gateway 192.168.0.1

ip lan1 address 192.168.0.240/24
ip lan1 proxyarp on

pp select anonymous
pp bind tunnel1-tunnel3
pp auth request mschap-v2
pp auth username user1 password1
pp auth username user2 password2
pp auth username user3 password3
pp auth username user4 password4
pp auth username user5 password5
ppp ipcp ipaddress on
ppp ipcp msext on
ppp ccp type stac
ppp ipv6cp use off
ip pp remote address pool 192.168.0.200-192.168.0.210
ip pp mtu 1258
ip pp tcp mss limit auto
pp enable anonymous

tunnel select 1
tunnel encapsulation l2tp
ipsec tunnel 101
ipsec sa policy 101 1 esp aes-cbc sha-hmac
ipsec ike keepalive use 1 off
ipsec ike local address 1 192.168.0.240
ipsec ike nat-traversal 1 on
ipsec ike pre-shared-key 1 text himitsu
ipsec ike remote address 1 any
l2tp tunnel disconnect time off
l2tp keepalive use on 10 3
l2tp keepalive log on
l2tp syslog on
ip tunnel tcp mss limit auto
tunnel enable 1

tunnel select 2
tunnel encapsulation l2tp
ipsec tunnel 102
ipsec sa policy 102 2 esp aes-cbc sha-hmac
ipsec ike keepalive use 2 off
ipsec ike local address 1 192.168.0.240
ipsec ike nat-traversal 2 on
ipsec ike pre-shared-key 2 text himitsu
ipsec ike remote address 2 any
l2tp tunnel disconnect time off
l2tp keepalive use on 10 3
l2tp keepalive log on
l2tp syslog on
ip tunnel tcp mss limit auto
tunnel enable 2

tunnel select 3
tunnel encapsulation l2tp
ipsec tunnel 103
ipsec sa policy 103 3 esp aes-cbc sha-hmac
ipsec ike keepalive use 3 off
ipsec ike local address 1 192.168.0.240
ipsec ike nat-traversal 3 on
ipsec ike pre-shared-key 3 text himitsu
ipsec ike remote address 3 any
l2tp tunnel disconnect time off
l2tp keepalive use on 10 3
l2tp keepalive log on
l2tp syslog on
ip tunnel tcp mss limit auto
tunnel enable 3

ipsec transport 1 101 udp 1701
ipsec transport 2 102 udp 1701
ipsec transport 3 103 udp 1701
ipsec auto refresh on

dns server 192.168.0.1
dns private address spoof on
l2tp service on
save


スマホの設定
ヤマハのWebに設定方法が記載されています。

 ヤマハ: アンドロイドからリモートアクセスする
 ヤマハ: iOSからリモートアクセスする

Android 4.0 では微妙に画面が違いました。
システム設定 → (ワイヤレスとネットワーク)その他の設定 → VPNネットワーク → 基本VPN → VPNネットワークを追加

・VPN名: (適当に名前をつける)
・タイプ: L2TP/IPSec PSK
・サーバーのアドレス: グローバルIPアドレス または FQDN
・L2TP保護: (未使用)
・IPSec ID: (未使用)
・IPSec事前共有鍵: (VPNルータに設定した文字列)


VPN接続で速度は?
スピードテストをやってみました。3G 回線で1.69Mbps のところ、VPN接続で自宅経由では976kbpsに低下しました。こんなものなんですかね?もっと遅くなるかと思っていました。

2015.02.07 追記
平均速度でみると、1.41Mbps が VPN 経由では 615kbps になってます。理論値はわかりませんが感覚的にはしっくりときます。


ところで Android 4.0でのスクリーンショットは、電源ボタンとボリュームキー(下)を同時長押しすると、カメラのシャッター音が出て取得できました。





WindowsでVPN接続
実家の Windows7 から自宅に VPN 接続してみました。実家のルータは、特段の設定変更なしに接続できました。
コントロールパネル → ネットワークとインターネット → ネットワークと共有センター → 新しい接続またはネットワークのセットアップ → 職場に接続します → インターネット接続(VPN)を使用します → 下図の通り設定 して次へ

インターネットアドレス: 接続先のFQDNかIPアドレス
接続先の名前: 適宜
今は接続しない にチェック


次へ をクリック。
ユーザ名、パスワード: VPNルータで設定したもの
ドメイン: (空白)

作成をクリック後、閉じる。(「今すぐ接続します」を選ばないこと)


コントロールパネル → ネットワークと共有センター → アダプターの設定の変更
作成したVPN接続をクリック → プロパティ→ セキュリティ タブ

・VPNの種類 で L2TP/IPSecを選ぶ
・詳細設定 で 認証に事前共有キーを使う を選び VPNルータに設定した事前共有キーをセット



次に、NATトラバーサル機能を有効にするため、Windowsのレジストリを変更します
Windows Vista や 7 の場合には "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PolicyAgent" 

に、"AssumeUDPEncapsulationContextOnSendRule" という名前の "REG_DWORD" を作成して、値には "2" を設定します。

値の意味は次の通りです。
 0: NAT トラバーサルを無効にします。何も指定しなかった場合はこれが選択されているものとします。
 1: NAT トラバーサルを有効にします。片一方が NAT の背後の場合に設定するそうです。
 2: NAT トラバーサルを有効にします。サーバとクライアントの両方が NAT の背後にある場合に使用するそうです。

これらから、適切な値を設定して Windows を再起動すれば、設定した動作モードが有効になります。





Windows で radikoを聞いてみる
実家から自宅に VPN 接続して radiko を聞いてみました。すると、"MIYAGI JAPAN" と表示されます。自宅では山形なのに宮城と誤認識されてますので、まさに自宅に VPN 接続されていることを確認出来ました。



Android でブラウザを使って radiko を聞いてみる
ブラウザで radiko にアクセスすると、アプリのダウンロードへ誘導されてしまいます。そこで Firefox ブラウザでPCサイトモードでアクセスしてみました。しかし、Flash がないので肝心な再生ボタンが表示されません。そこで Play ストアで Flash を検索しましたが出てきません。そういえばスマホ向け Flash はサポート終了していたんでしたっけ。
それでも Adobe のサイトに Flash Player アーカイブ版のインストール方法が掲載されています。こうしてようやく radiko を使うことが出来ました。


参考資料
ヤマハRTX1200の設定例:複数のL2TPクライアント(アドレス不定)の接続を受け付ける場合
はむのブログ Ver.4.8.6 ~= Irregular childRTX1100でF-05d→ひかり電話のVPN組んでみた
Aterm.jp: VPNパススルー機能
アライドテレシス: ダイナミックDNSを利用した動的IPアドレスを持ったルーター同士のIPsec VPN
マイナビニュース: ヤマハルータでつくるインターネットVPN
インターネットイニシアティブ SEIL: Windows 7のVPN(L2TP/IPsec)設定手順