TomatoVPNでOpenVPNブリッジモード

TomatoVPNはTomatoにOpenVPNを導入したファームです
参考
TomatoVPN 1.25vpn3.4 http://tomatovpn.keithmoyer.com/
OpenVPN 2.1.1+OpenVPN GUI for Windows 1.0.3 [日本語版] http://www.openvpn.jp/guijp.html
TomatoVPNのWebGUIの説明 http://www.linksysinfo.org/forums/showpost.php?p=334426

ルーティングモード(TUN)かブリッジモード(TAP)か
VPNを構成する場合、2つのモードがあります
ルーティングモード:異なるサブネットをルーターで継いだようなイメージ
ブリッジモード:全てのPCが1つのサブネットに属するようなイメージ
まずブリッジモードで設定してみました

============================================================================

ブリッジモード(TAP)

============================================================================

実験のため親ルーターをインターネットに見立てTomatoルーターがインターネットに繋がっていると仮定して設定する
PC1,PC2,PC3が同じサブネットにあるように構成するのが目標
接続図

Tomato1,Tomato2 は Buffalo WHR-HP-G54,WHR-G54S に TomatoVPN を導入したもの
PC1,PC2,PC3 はWindowsXPパソコンで、PC3にはOpenVPNをインスツールしている
[親ルーター]
インターネット回線と見立てる
普通にDHCPで子にIPを配り、NAPTでインターネットに接続する設定
ここではDHCPで192.168.11.*のIPを配るよう設定した(Buffaloデフォルト)


----------------------------------------------------------------------------

【静的鍵での設定】


利点:簡単
欠点:1つのサーバーに1つのクライアントしか接続しかできない

[静的鍵の作成]
OpenVPN / OpenVPN GUI for Windows 日本語版
http://www.openvpn.jp/guijp.html
からダウンロードしてインスツール
スタート→すべてのプログラム→OpenVPN→Utilities→Generate a static Open VPN key を選択
C:\Program Files\OpenVPN\config に key.txt が作成される



[サーバー側(Tomato1)]
Basic の項目
 WAN側でインターネット接続の設定をする。
  ここではDHCP。192.168.11.2が振られた。
 LAN側でDHCPの設定
  Router IP Address は 192.168.12.1。
  DHCP Server:ON。192.168.12.*のIPを配るよう設定した。*範囲はデフォルトで100-149。
VPNの設定
VPN Tunneling→server→server1→Basic
  Start with Router を チェック(手動で起動する場合はチェックしなくて良い)
  Interface Type は TAP
  Protocol は UPD(デフォルト)
  Port は 1194(デフォルト)
  Firewall は Automatic(デフォルト)
  Authorization Mode は StaticKey
  [Save]を押す
VPN Tunneling→server→server1→Keys
  Keys StaticKey にKey.txtの中身を全てコピー
  [Save]を押す
VPN Tunneling→server→server1→status
  [StartNow]を押す
  Server is not running or status could not be read の表示が消えてGeneral Statisticsが表示されればOK
  起動しないときはStatus→Logs→でLOGのエラーを確認

[クライアント側1(Tomato2)]
Basic の項目
 WAN側でインターネット接続の設定をする。
  ここではDHCP。192.168.11.3が振られた。
 LAN側でDHCPの設定
  Router IP Address は 192.168.12.2。
  DHCP Server:OFF。
VPNの設定
VPN Tunneling→Client→Client1→Basic
  Start with Routerをチェック
  Interface Type は TAP
  Protocol は UPD(デフォルト)
  Server Address/Port :接続先のIP/Port 192.168.11.2/1194
  Firewall は Automatic(デフォルト)
  Authorization Mode は StaticKey
  Server is on the same subnet をチェック
  [Save]を押す
VPN Tunneling→Client→Client1→Keys
  Keys StaticKey にKey.txtの中身を全てコピー
  [Save]を押す
VPN Tunneling→Client→Client1→status
  [StartNow]を押す
  Server is not running or status could not be read の表示が消えてGeneral Statisticsが表示されればOK
  起動しないときはStatus→Logs→でLOGのエラーを確認

サーバー側(Tomato1)のLANにPC1を接続
  DHCPで192.168.12.117が振られた

クライアント側(Tomato2)のLANにPC2を接続
  DHCPで192.168.12.118が振られた

PC1からPing 192.168.12.118
PC2からPing 192.168.12.117
でどちらもOKなら成功
それぞれのマイネットワークに相手のPCが表示されることを確認。

[クライアント側2(PC3)]
OpenVPN / OpenVPN GUI for Windows 日本語版
http://www.openvpn.jp/guijp.html
からダウンロードしてインスツール

C:\Program Files\OpenVPN\config に key.txt をコピー
C:\Program Files\OpenVPN\sample-config\sample.ovpnをC:\Program Files\OpenVPN\configにコピー

sample.ovpn の変更箇所

remote myremote
  ↓
remote 192.168.11.2(接続先のIP)

ifconfig 10.3.0.1 255.255.255.0
  ↓
;ifconfig 10.3.0.1 255.255.255.0(コメントアウト)

必要な部分だけ書き出すと
remote 192.168.11.2
dev tap
secret key.txt
ping 10
comp-lzo
verb 4
mute 10
以上

スタート→すべてのプログラム→OpenVPN→OpneVPNGUI で起動
それぞれのPCからお互いにPingが通れば成功
それぞれのマイネットワークに相手のPCが表示されることを確認。

上にも書いたが静的鍵を使う場合1対1の接続しかできないので、
Tomato1とTomato2(PC1とPC2)、またはTomato1とPC3(PC1とPC3)のどちらかの接続しかできない。
PC1,PC2,PC3を接続したければ下記のTLSでの方法が必要
(試してないがTomato1でVPNサーバーを2つ起動するという方法もある)

----------------------------------------------------------------------------

【TLSでの設定】


利点:1つのサーバーに対して複数のクライアントが接続できる
欠点:面倒

[証明書・秘密鍵等の作成]
PCで行う
OpenVPN / OpenVPN GUI for Windows 日本語版
http://www.openvpn.jp/guijp.html
からダウンロードしてインスツール

1.プライベートCAの構築とCA証明書・秘密鍵の作成
2.サーバ証明書・サーバ秘密鍵の作成
3.クライアント証明書・クライアント秘密鍵の作成
4.DHパラメータの生成

敷田研究室 OpenVPN on Windows (1) http://www-shikida.jaist.ac.jp/modules/xeblog/index.php?action_xeblog_details=1&blog_id=59
ゼロ円でできるインターネットVPN(3/4) http://www.atmarkit.co.jp/flinux/special/openvpn/openvpnc.html

などに従って作成

できたファイル
ca.crt server.crt server.key dh1024.pem
Client1.crt Client1.key
Client2.crt Client2.key
クライアント用ファイルはクライアントの数だけ必要なのでここでは2組作成

サーバー側に必要なファイル
ca.crt server.crt server.key dh1024.pem

クライアント側に必要なファイル
ca.crt Client1.crt Client1.key Client2.crt Client2.key

Tomato1とTomato2の時計とタイムゾーンは正しく合わせておかないと認証に失敗するので注意
(そのために実験時にも最上位をインターネットに接続している)

[サーバー側(Tomato1)]
Basic の項目
 WAN側でインターネット接続の設定をする。
  ここではDHCP。192.168.11.2が振られた。
 LAN側でDHCPの設定
  Router IP Addressは192.168.12.1
  DHCP Server:ON。192.168.12.*のIPを配るよう設定した。*範囲はデフォルトで100-149。
VPNの設定
VPN Tunneling→server→server1→Basic
  Start with Router を チェック(手動で起動させるならチェック不要)
  Interface Type は TAP
  Protocol は UPD(デフォルト)
  Port は 1194(デフォルト)
  Firewall は Automatic(デフォルト)
  Authorization Mode は TLS
  Extra HMAC authorization は Disabled(デフォルト)
  Client address pool
    以下の2つの設定がある
    1:DHCPをチェック (クライアントのIP設定をDHCPに任せる)
    2:DHCPのチェックを外す さしあたって192.168.12.50-192.168.12.55
    (クライアントのIP設定をOpenVPNでする)
    (同じサブネット内で他の機器のIPやDHCPの範囲と重ならないように設定)
  [Save]を押す
VPN Tunneling→server→server1→Keys
  Certificate Authority に ca.crt の中身を全てコピー
  Server Certificate に server.crt の中身を全てコピー
  Server Key に server.key の中身を全てコピー
  Diffie Hellman parameters に dh1024.pem の中身を全てコピー
  [Save]を押す
VPN Tunneling→server→server1→status
  [StartNow]を押す
  Server is not running or status could not be read の表示が消えて接続状態が表示されればOK
  起動しないときはStatus→Logs→でLOGのエラーを確認

[クライアント側1(Tomato2)]
Basic の項目
 WAN側でインターネット接続の設定をする。
  ここではDHCP。192.168.11.3が振られた。
 LAN側でDHCPの設定
  Router IP Addressは192.168.12.2。
  DHCP Server:OFF。
VPNの設定
VPN Tunneling→Client→Client1→Basic
  Start with Router を チェック(手動で起動させるならチェック不要)
  Interface Type は TAP
  Protocol は UPD(デフォルト)
  Server Address/Port :接続先のIP/Port 192.168.11.2/1194
  Firewall は Automatic(デフォルト)
  Authorization Mode は TLS
  Server is on the same subnet をチェック
  [Save]を押す
VPN Tunneling→Client→Client1→Keys
  Certificate Authority に ca.crt の中身を全てコピー
  Client Certificate に Client1.crt の中身を全てコピー
  Client Key に Client1.key の中身を全てコピー
  [Save]を押す
VPN Tunneling→Client→Client1→status
  [StartNow]を押す
  Server is not running or status could not be read の表示が消えてGeneral Statisticsが表示されればOK
  起動しないときはStatus→Logs→でLOGのエラーを確認

サーバー側(Tomato1)のLANにPC1を接続
  DHCPで192.168.12.117が振られた

クライアント側(Tomato2)のLANにPC2を接続
  DHCPで192.168.12.118が振られた

PC1からPing 192.168.12.118
PC2からPing 192.168.12.117
でどちらもOKなら成功
それぞれのマイネットワークに相手のPCが表示されることを確認。

[クライアント側2(PC3)]
OpenVPN / OpenVPN GUI for Windows 日本語版
http://www.openvpn.jp/guijp.html
からダウンロードしてインスツール

C:\Program Files\OpenVPN\config に3つのファイルをコピー
ca.crt
Client2.crt
Client2.key

C:\Program Files\OpenVPN\sample-config\client.ovpn を C:\Program Files\OpenVPN\config にコピー

client.opn の変更箇所
;dev tap
dev tun
 ↓
dev tap
;dev tun

;dev-node MyTap
 ↓
dev-node "ローカル エリア接続 3"(マイネットワーク→プロパティーで表示されたTAP-W32AdapterV9の名前を書く)

remote my-server-1 1194
 ↓
remote 192.168.11.2 1194(サーバーのIPを書く)

cert client.crt
key client.key
 ↓
cert client2.crt(コピーしたファイル名を書く)
key client2.key(コピーしたファイル名を書く)

必要な部分だけ書き出すと
client
dev tap
dev-node "ローカル エリア接続 3"
proto udp
remote 192.168.11.2 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client2.crt
key client2.key
ns-cert-type server
comp-lzo
verb 3
以上

スタート→すべてのプログラム→OpenVPN→OpneVPNGUI で起動
それぞれのPCからお互いにPingが通れば成功
それぞれのマイネットワークに相手のPCが表示されることを確認。
-----------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------

クライアント側のLAN側DHCPをONにするかOFFにするか?

クライアントのDHCPサーバーOFFの場合、
VPNを通してサーバー側からIPが振られる
このときのデフォルトゲートウエイはサーバー側のルータのIPになるので
インターネット接続はVPNを通してサーバー側から行われるようになる
その後VPNが切れるとクライアント側ではデフォルトゲートウエイがなくなりネットワークがダウンする

クライアントのDHCPサーバーONの場合
クライアント側のDHCPサーバーでIPが割り振られることが多いようだ
その場合のゲートウエイはクライアントのIPになる
この場合VPNが切れてもインターネットは使用できネットワークもダウンしない

ネットワークに2台のDHCPサーバーがある場合先に届いたほうのIPをPCは採用して、後のほうは無視される
この場合直接つながっているクライアントのDHCPサーバーのほうが
VPNでつながっているDHCPサーバーより速く返事を返すのでクライアント側のIPになる
ただしPCは以前のIPを記憶しているので、サーバー側に一度継いでサーバー側からIPを受け取っている場合は クライアント側に継いでも以前のIPで接続される


クライアント側のLAN側DHCPをONにする時の設定例
Tomato1(サーバー側)
本体 192.168.12.1
DHCP範囲 192.168.12.50-100
Client address pool DHCPのチェックを外す 192.168.12.40-192.168.12.45
Tomato2(クライアント側)
本体 192.168.12.101
DHCP範囲 192.168.12.150-200
などと重ならないように設定する

-----------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------

Tomatoをメインルータとして使わずにVPNを構成できるか



子ルーターはNAPTをONで使用
PC1とPC2が同じサブネットにあるようにする

サーバー側
[子ルータ1]
ポートフォワーディング設定
WAN側UPD1194ポートをLAN側192.168.12.2のUPD1194ポートへ
DHCPをON 192.168.12.50-100を振るように設定

[Tomato1]
Basic→Network
  Type Disabled
  Use WAN port for LAN をチェック
  RouterIpAddress 192.168.12.2
  DefaultGateway 192.168.12.1
  Static DNS 192.168.12.1
  DHCP Server チェックはずす
VPNの設定は上記と同じ
Client address pool DHCPのチェックを外す 192.168.12.40-192.168.12.45

クライアント側
[子ルータ2]
DHCPをON 192.168.12.150-200を振るように設定

[Tomato2]
Basic→Network
  Type Disabled
  Use WAN port for LAN をチェック
  RouterIpAddress 192.168.12.102
  DefaultGateway 192.168.12.101
  Static DNS 192.168.12.101
  DHCP Server チェックはずす
VPNの設定は上記と同じ
VPN Tunneling→Client→Client1→Basic
  Server Address/Port :接続先のIP/Port 192.168.11.2/1194(子ルーター1を指定)

PC1からPC2へ、PC2からPC1へPingが通ることを確認
マイネットワークに互いのPCが表示されることを確認

-----------------------------------------------------------------------------------------

TOPに戻る

2010/3/10