次のページ 前のページ 目次へ

2. 理論

2.1 VPNとは何か?

VPN とは仮想プライベートネットワーク (Virtual Private Network) を意味しています。 VPN はデータの安全性を確保しつつ、その輸送機構としてインターネットを利用します。

で、実際のところ、VPN とは?

その質問にはいくつもの答えがあります。それは正にネットワークレイアウト次第です。 もっとも一般的な構成は、ひとつのメイン内部ネットワークを持ち、 VPN を使った離れた所にあるノードを中央ネットワークへ完全にアクセスできるように するものです。離れた所にあるノードというのは、通常、 離れたオフィスか自宅から作業を行う従業員などです。二つの、 より小さな (あるいは大きな!) ネットワークを繋いで、さらに大きな 単一のネットワークとすることも出来ます。

それでどういう風に動作するの?

VPN を構築するためには単に、二つのネットワーク間に安全の確保されたトンネルを 作り、それを通るように IP の経路を定めます。もし、既に私の言うことが 理解できないのでしたら、 The Linux Networking Overview HOWTO を読んで Linux における ネットワークについて勉強してください。

我慢してください。私のアスキーアートは何かに使えますから。

                                      \          \
                   --------------     /          /    --------
     リモート  ___| クライアント |____\ インター \___| サーバ |______ プライベート
   ネットワーク   |    ルータ    |    /   ネット /   | ルータ |       ネットワーク
                   --------------     \          \    --------
                                      /          /


                         クライアントルータ
                  -----------------------------------------------------
                 |   /->    10.0.0.0/255.0.0.0   \                     |
 リモート        |  |-->  172.16.0.0/255.240.0.0  |--> トンネル >--\   |
  ネットワーク>--|--|--> 192.168.0.0/255.255.0.0 /                  |--|----> インターネット
 192.168.12.0    |  |                                               |  |
                 |   \-----> 0.0.0.0/0.0.0.0 --> IPマスカレード >--/   |
                  -----------------------------------------------------


                           サーバルータ
                   ------------------------------------------------------
                  |                     /->    10.0.0.0/255.0.0.0    \   |
                  |   /--> トンネル >--|-->  172.16.0.0/255.240.0.0   |--|--> プライベート
インターネット >--|--|                  \--> 192.168.0.0/255.255.0.0 /   |    ネットワーク
                  |  |                                                   |   172.16.0.0/12
                  |   \-----> 0.0.0.0/0.0.0.0 -----> /dev/null           |  192.168.0.0/16
                   ------------------------------------------------------

上の図はネットワークをどの様に構築し得るかを示しています。 もし IP マスカレードが何であるか分からないのなら、ここにいるべきでは ありません。 The Linux Networking Overview HOWTOを読んで、それを理解してから 戻って来てください。

クライアントルータはリモートネットワークに対するゲートウェイ/ファイアウォール として動作する Linux ボックスです。見て分かるように、リモートネットワークは ローカルネットワーク 192.168.12.0 を使用しています。図を簡略化するため、 ルータ内のローカルなルーティング情報を表に出しました。基本的な考えは、 プライベートネットワーク全て (10.0.0.0, 172.16.0.0, 192.168.0.0) に対する トラフィックがトンネルを通るように経路を定めるということです。 ここで示したものは一方通行です。 つまり、リモートネットワークからプライベートネットワークが見えるからといって、 プライベートネットワークからリモートネットワークが見えるとは限りません。 そうするためには経路が双方向となるよう指定しなくてはなりません。

図より、クライアントルータを通って出たトラフィック全てはクライアントルータから 来ている、つまり全てが一つの IP アドレスから来ていることが分かるでしょう。 実際のあなたのネットワーク内からの数だけ経路を設定することも出来ますが、 そうするとあらゆる種類のセキュリティ問題が発生することになります。

2.2 SSHとPPP

VPN として、SSH および PPP を用いたシステムについても記しておきます。 基本的に私はトンネル接続するために ssh を使い、それを通して TCP/IP の送受信を 行うために、pppd を使っています。それがトンネルの作り方です。

ssh と pppd を一緒に動かす実際のうまい方法は、Arpad Magosanyi に よって書かれた役にたつ文書で、それに従えば疑似端末の標準入出力を リダイレクトすることが出来ます。これによって pppd は、 sshを通してあたかもそれがシリアル回線であるかのように通信することが 出来るようになります。サーバ側では、pppd は ssh セッションにおける ユーザのシェルのように動作しており、リンクを確立しています。 あとは経路の設定を行うだけです。

2.3 その他の VPN システム

もちろん、VPN を構築するための他の方法もあります。ここでは他のシステムのうち 3つを示します。

PPTP

PPTP はマイクロソフトの VPN のためのプロトコルです。それは Linux で サポートされていますが、深刻なセキュリティ上の問題を抱えていることが 分かっています。どのように使用するかは Linux VPN Masquerade HOWTO に示されているので、ここでは説明しません。

IP Sec

IP Sec は SSH とは異なるプロトコルのセットです。私は、実はそれについて あまりよく知らないので、誰かが説明の手助けをしてくれるなら非常に ありがたいです。再度、その使い方については Linux VPN Masquerade HOWTOに示されているので、ここでは説明しない ことにします。

CIPE

CIPE は、企業向けの設定に適した、カーネルレベルのネットワーク暗号化システム です。より詳しい内容は the CIPE homepageにあります。これについてはもう少し詳しく調べようと思っているので、 いつかここで情報を示すことができるでしょう。


次のページ 前のページ 目次へ