★VTUNによるVPN構築

両端に高コストの固定グローバルIPアドレスが不要なソリューションです。
(片方は絶対に固定グローバルIPが必要)

固定グローバルネットワークにvtundサーバを動かしておいて、vtunクライアント
ゲイトウェイから暗号化トンネルを張りにいく方式です。 トラフィックが増えて
パフォーマンスが落ちる点が気になりますが、自社で5拠点をこれで結び安定運用が
できています。vtunクライアント側はプライベイトアドレスを振り出されるケーブル
テレビやADSLも混在しています。

こういう会社って多いんじゃないでしょうか。

VTUN Server側:FreeBSD-4.8RELEASE
VTUN Client側:FreeBSD-4.8RELEASE

【構成図】


     VTUN server側                                 VTUN client側

                    OCN光アクセスIP16
                      |
                  +---+---+
                  | PPPoE |
                  | FireWL|
                  | Router|
                  +---+---+
 GlobalSubnet(DMZ)    |
------------+---------+------                             CATV(インタネットへ)
            |                                                     |
            | aaa.bbb.ccc.ddd                                     |10.?.?.?
        +---+---+                       +---------+          +----+----+
        |VTUN   | 192.168.0.2           |VTUN     |          |BroadBand|
        | Server| ===================== |  Client |          | Router  |
        +---+---+           192.168.0.1 +----+----+          +----+----+
            | 172.16.10.2        172.16.20.2 |        172.16.20.1 |
            |                                |                    |
            |                                |                    |
 -----------+-----------------           ----+--------------------+------
   LAN-A                                      LAN-B

VTUN ServerとVTUN Client間で192.168.0.1 <---> 192.168.0.2のPoint to Pointで
暗号化トンネルを掘る。

vtunサーバ側の静的経路情報
172.16.20.0/24宛は192.168.0.1へ
vtunクライアント側の静的経路情報
172.16.10.0/24宛は192.168.0.2へ

デフォルトゲイトウェイになるルータ・計算機には
サーバ側
172.16.20.0/24宛は172.16.10.2へ
クライアント側の静的経路情報
172.16.10.0/24宛は172.16.20.2へ

を追加する。

接続拠点が増えればその通りサーバ側に設定する。クライアント側も同様だが
全てのVPNパケットをVTUNサーバに投げつけるようにすれば良い。



【両方】
VTUNをインストールする。
cd /usr/ports/net/vtun
make install clean
とportsでお手軽インストール。

【LAN-A側に置いてあるVTUNサーバ】

5000/tcpで待ち受けする事になるのでファイアウォールに穴をあけておく。

rootになって
/usr/local/etc/vtund.conf を作成。内容は、


options {
 ifconfig  /sbin/ifconfig;
 route  /sbin/route;
}

default {
 type tun;
 proto tcp;
 compress zlib:9;
 encrypt yes;
 keepalive yes;
 stat yes;
 speed 0;
}

LANB {
 pass *****;

 up {
  ifconfig "%% inet 192.168.0.2 192.168.0.1";
  route "add -net 172.16.20.0/24 192.168.0.1";
 };

 down {
  ifconfig "%% delete down";
  route "delete -net 172.16.20.0/24";
 };
}


*******の部分は伏せ字です。パスワードが平分で埋め込まれてしまうため、
chown root:wheel /usr/local/etc/vtund.conf
chmod 600 /usr/local/etc/vtund.conf
とやってroot以外は読み出せないようにしておきます。

rootで
/usr/sbin/vtund -s
でサーバモードのデーモンとなります。

うまくトンネルが掘れれば、後で /usr/local/etc/rc.d/vtund-server.sh でも
作っておきます。


【LAN-B側で動いているVTUNクライアント】

クライアント側は固定のグローバルIPアドレスではない為、VTUNクライアントが
VTUNサーバにコネクションを張りにいくことになります。勿論VPNトンネルが掘れた
ら、どちらからでも接続しに行くことができます。(できなきゃ意味なし。)

rootになって
/usr/local/etc/vtund.conf を作成。内容は、

options {
        ifconfig        /sbin/ifconfig;
        route           /sbin/route;
}

default {
 compress yes;
 speed 0;
}

LANB {
 pass *****;
 persist yes;
 proto tcp;
 encr yes;
 stat yes;
 keepalive yes;

 up {
  ifconfig "%% inet 192.168.0.1 192.168.0.2";
  route "add -net 172.16.10.0/24 192.168.0.2";
 };

 down {
  ifconfig "%% delete down";
  route "delete -net 172.16.10.0/24";
 };
}


*******の部分は伏せ字です。パスワードが平分で埋め込まれてしまうため、
chown root:wheel /usr/local/etc/vtund.conf
chmod 600 /usr/local/etc/vtund.conf
とやってroot以外は読み出せないようにしておきます。

クライアントモードで起動します。

root で
/usr/local/sbin/vtund LANB aaa.bbb.ccc.ddd(VTUNサーバ名)
これでおしまい。うまくトンネルが掘れればこれも /usr/local/etc/rc.d以下に
起動スクリプトを書いておきます。

高村のホームに戻る