計画は繊細に行動は大胆に!

Categories

Translate

Page view

2007/01/31

02 VPN設計を考える


OpenVPNを利用してインターネットから家までのVPN環境を作るという方向はとりあえずいいとして、どのように実現するのか。
とりあえず、OpenVPNはLayer2とLayer3のVPNの両方が構築出来る優れもの。 

簡単ではあるけども、L2とL3のVPNの違いを以下にまとめてみる。

  • L2-VPN
    • 利点
      • IPv4以外のプロトコルも透過するため、IPv6などのプロトコルもOK
      • Windowsファイル共有で、コンピュータが見える(利点か?)
      • クライアントや周辺機器の設定が比較的楽
    • 欠点
      • 不必要な通信もVPNを通ってしまう。
      • アクセス制限がかけにくい(ACLのはなし)
      • 拡張性に乏しい
  • L3-VPN
    • 利点
      • 拡張性が高く、多数のマシンを収容出来る
      • 比較的アクセス制限がかけ易い
        • VPNのセグメントがはっきりするし。L2でもインタフェースで掛ければVPNと非VPNは分かるけども、ログに残るレベルはIPだと管理もしやすいし。。。
      • 一般的にL3-VPNの方がスループットが高い(はず)
        • L2でカプセル化すると、オリジナルのイーサフレームからカプセル化する必要があるため。
    • 欠点
      • IPv4以外の通信は利用出来ない
      • 他機器を含めたルーティングの設定を意識する必要がある

別に、どっちがいいとかそういう話ではないです。クライアントの設定や使い勝手を考えるとL2-VPNの方がよいかもしれません。ひとまず、私はL3-VPNを選択しました。なぜ?OpenVPNのデフォルトコンフィグがL3-VPNだったからに他なりません(笑)
というわけで、L3-VPNが正常に確立出来れば、L2-VPNにも手を出したいと思います。

では、OpenVPNの設定を・・・っと、その前に事前準備が要ります。
私の家のネットワーク環境を見て頂ければ分かるように、ルータ以下のネットワークは
プライベートネットワークが割り振られています。すなわちルータでNATされている
状態です。ここで問題が生じます。通常、外からの通信を直接、
特定のサーバに割り振ることは出来ません。内側から外側に出ていく時はルータが
SNATをしてパケットは出て行くので問題ありません。
こういった場合には、ルータ上でDNAT設定を行い必要があります。
TCP/UDPを利用した通信は必ずポート番号を利用します。OpenVPNも例外ではありません。
OpenVPNの場合、デフォルト設定で1194番が選択されています。これはIANAによって、
割り当てられたサービス番号になっています。

図のサーバ1でOpenVPNサーバを動作させるとします。
その場合、ルータ上では、インターネットからルータめがけて1194番に来た通信は
サーバ1に転送するという設定を入れる必要があります。これがDNATです。
DNATとはDestinationNATの略で行き先を変更して上げることが出来ます。
背景が緑の表にはAirStationの実際のNATテーブルを貼り付けています。
ご利用のルータは違えども、概念は同じはずですのでご参照下さい。

この設定が終われば、無事、OpenVPNのクライアントが1194番で通信をルータに
行ってきても、ルータはサーバ1に通信を転送してくれます。
通信の帰りは、NATテーブルを参照して、行きとは逆の変換をしてインターネットの
世界へと出ていくこととなります。

 

VPN通信を行うときは、仮想的なインタフェースを利用します。そのインタフェースはtun/tapドライバを利用します。tunドライバはL3-VPNで利用し、TapドライバはL2-VPNで利用することとなります。

L3-VPNでVPNを利用した場合を想定して話を進めましょう。以下がイメージ図です。

 

L3-VPNを張ると、tunインタフェースが作成されます。では、クライアントPCのVPNを張る前と張った後のルーティング情報を見てみます。

 

 

VPN接続前ルーティング情報

C:\Documents and Settings\akihito>route print

===========================================================================
Active Routes:
Network Destination Netmask Gateway Interface Metric
0.0.0.0 0.0.0.0 220.159.33.100 220.159.33.100 1
127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1
192.168.106.0 255.255.255.0 192.168.106.1 192.168.106.1 20
192.168.106.1 255.255.255.255 127.0.0.1 127.0.0.1 20
192.168.106.255 255.255.255.255 192.168.106.1 192.168.106.1 20
192.168.184.0 255.255.255.0 192.168.184.1 192.168.184.1 20
192.168.184.1 255.255.255.255 127.0.0.1 127.0.0.1 20
192.168.184.255 255.255.255.255 192.168.184.1 192.168.184.1 20
211.14.82.201 255.255.255.255 220.159.33.100 220.159.33.100 1
220.159.33.100 255.255.255.255 127.0.0.1 127.0.0.1 50
220.159.33.255 255.255.255.255 220.159.33.100 220.159.33.100 50
224.0.0.0 240.0.0.0 192.168.106.1 192.168.106.1 20
224.0.0.0 240.0.0.0 192.168.184.1 192.168.184.1 20
224.0.0.0 240.0.0.0 220.159.33.100 220.159.33.100 1
255.255.255.255 255.255.255.255 192.168.106.1 192.168.106.1 1
255.255.255.255 255.255.255.255 192.168.184.1 192.168.184.1 1
255.255.255.255 255.255.255.255 220.159.33.100 80004 1
255.255.255.255 255.255.255.255 220.159.33.100 90005 1
255.255.255.255 255.255.255.255 220.159.33.100 140008 1
255.255.255.255 255.255.255.255 220.159.33.100 20006 1
255.255.255.255 255.255.255.255 220.159.33.100 220.159.33.100 1
Default Gateway: 220.159.33.100
===========================================================================
Persistent Routes:
None

 

VPN接続後ルーティング情報

C:\Documents and Settings\akihito>route print
===========================================================================
Active Routes:
Network Destination Netmask Gateway Interface Metric
0.0.0.0 0.0.0.0 220.159.33.100 220.159.33.100 1
10.8.0.1 255.255.255.255 10.8.0.5 10.8.0.6 1 
10.8.0.4 255.255.255.252 10.8.0.6 10.8.0.6 30
10.8.0.6 255.255.255.255 127.0.0.1 127.0.0.1 30
10.255.255.255 255.255.255.255 10.8.0.6 10.8.0.6 30
127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1
192.168.0.0 255.255.255.0 10.8.0.5 10.8.0.6 1 → 192.168.0.0行きのアドレスはVPN経由で。
192.168.106.0 255.255.255.0 192.168.106.1 192.168.106.1 20
192.168.106.1 255.255.255.255 127.0.0.1 127.0.0.1 20
192.168.106.255 255.255.255.255 192.168.106.1 192.168.106.1 20
192.168.184.0 255.255.255.0 192.168.184.1 192.168.184.1 20
192.168.184.1 255.255.255.255 127.0.0.1 127.0.0.1 20
192.168.184.255 255.255.255.255 192.168.184.1 192.168.184.1 20
211.14.82.201 255.255.255.255 220.159.33.100 220.159.33.100 1
220.159.33.100 255.255.255.255 127.0.0.1 127.0.0.1 50
220.159.33.255 255.255.255.255 220.159.33.100 220.159.33.100 50
224.0.0.0 240.0.0.0 10.8.0.6 10.8.0.6 30
224.0.0.0 240.0.0.0 192.168.106.1 192.168.106.1 20
224.0.0.0 240.0.0.0 192.168.184.1 192.168.184.1 20
224.0.0.0 240.0.0.0 220.159.33.100 220.159.33.100 1
255.255.255.255 255.255.255.255 10.8.0.6 140008 1
255.255.255.255 255.255.255.255 10.8.0.6 90005 1
255.255.255.255 255.255.255.255 10.8.0.6 80004 1
255.255.255.255 255.255.255.255 10.8.0.6 10.8.0.6 1
255.255.255.255 255.255.255.255 192.168.106.1 192.168.106.1 1
255.255.255.255 255.255.255.255 192.168.184.1 192.168.184.1 1
255.255.255.255 255.255.255.255 220.159.33.100 220.159.33.100 1
Default Gateway: 220.159.33.100
===========================================================================
Persistent Routes:
None

VPN接続後の赤字で表示している部分がVPN接続時に追加されたルーティング情報です。

ちなみに
サーバのTUNドライバ 10.8.0.1
クライアントのTUNドライバ 10.8.0.6
の環境の話です。

192.168.0.0 255.255.255.0 10.8.0.5 10.8.0.6 1

は192.168.0.0/24行きの通信は10.8.0.6(tunドライバ)に投げるということです。
※ちなみにWIndowsはローカルネットワークxとかいう名前でデバイスが出来てます。

あとは、Tunドライバによりパケットはカプセル化され対抗のOpenVPNサーバに送られます。

上記はVPN接続後にTunドライバにより、仮想的に接続されたときの図を描いたものです。

さて、もう1点考える必要があります。上記で書いたようにクライアントのIPアドレスは
10.8.0.6が送信元として送信されます。しかし、VPNの先にある、家庭内の各機器は
10.8.0.6って誰?といった感じになります。
そこで、ルータに10.8.0.6の人はOpenVPNサーバが知っているという事をルーティング情報に
いれます。下の図にはルーティング情報が追加されています。

これで、VPNクライアントから家庭内の各機器に接続出来ることになりました。
L2VPNの概念もありますが、とりあえず次からはL3VPNで接続する実践的な方法を
書きます。それでは。



0 comments:

コメントを投稿