両端に高コストの固定グローバルIPアドレスが不要なVPNソリューションです。
(片方は絶対に固定グローバルIPが必要)
固定グローバルネットワークにvtundサーバを動かしておいて、vtunクライアントゲイトウェイから暗号化トンネルを張りにいく方式です。 トラフィックが増えてパフォーマンスが落ちる点が気になりますが、自社で5拠点をこれで結び安定運用ができています。
vtunクライアント側はプライベイトアドレスを振り出されるケーブルテレビやADSLも混在しています。
こういう会社って多いんじゃないでしょうか。
VTUN Server側:FreeBSD-4.8RELEASE
VTUN Client側:FreeBSD-4.8RELEASE
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以下に
起動スクリプトを書いておきます。