vyattaを使って拠点間VPNを構築する
vyattaとは高機能なソフトウェアルータを構築するソフトウェアで、debianをベースに作られています。
Linuxベースですが、CLIで操作するルータライクなコマンドが用意されており、
ゼロからLinuxで作る場合と比べてコンフィグの管理・投入が簡単になっています。
■ネットワーク構成
今回はA拠点・B拠点の2拠点を接続する構成とします。
vyattaはCDブートさせる方法で利用し、インストールは行わないライブCDでの利用とします。
■vyattaの導入&設定
・vyattaのダウンロード
vyattaコミュニティサイトのダウンロードページより、
vyatta最新版をダウンロードしてISOファイルをCDに焼きCDから起動します。
・拠点A側のvyattaログイン&設定
起動後にしばらくするとログイン画面になりますので、ID: vyatta、パスワード: vyattaでログインします。
起動直後は何も設定がされていませんので、パスワードの設定から始めたいと思います。
・コンフィグモードで起動
$ configure
・vyattaユーザーのパスワード設定
# set system login user vyatta authentication plaintext-password _PASSWORD_
・インターネット側(eth0)
・ローカル側(eth1)のIPアドレス設定、デフォルトゲートウェイ、ネームサーバーの設定
set interfaces ethernet eth0 address A.A.A.A/24 set interfaces ethernet eth1 address 192.168.163.254/24 set system gateway-address [Default Gateway Address] set system name-server [DNS Server Address]
・SSHの有効
set service ssh
・OpenVPNで使用する認証鍵を生成
generate openvpn key /config/auth/openvpn.secret
・OpenVPNの設定
set interfaces openvpn vtun1 local-address 10.103.3.1 subnet-mask 255.255.255.0 set interfaces openvpn vtun1 mode site-to-site set interfaces openvpn vtun1 remote-address 10.103.3.2 set interfaces openvpn vtun1 remote-host B.B.B.B set interfaces openvpn vtun1 openvpn-option "--fragment 1280 --mssfix" set interfaces openvpn vtun1 shared-secret-key-file /config/auth/openvpn.secret
・VPN先の静的ルーティング設定
set protocols static interface-route 192.168.164.0/24 next-hop-interface vtun1 commit save
・拠点B側のvyattaログイン&設定
拠点B側も同じく設定を行いますが、OpenVPNの設定は後から行います。
・コンフィグモードで起動
$ configure
・vyattaユーザーのパスワード設定
set system login user vyatta authentication plaintext-password _PASSWORD_
・インターネット側(eth0)
・ローカル側(eth1)のIPアドレス設定、デフォルトゲートウェイ、ネームサーバーの設定
set interfaces ethernet eth0 address B.B.B.B/24 set interfaces ethernet eth1 address 192.168.164.254/24 set system gateway-address [Default Gateway Address] set system name-server [DNS Server Address]
・SSHの有効
set service ssh commit save
・OpenVPNで使用する鍵のコピー
拠点Aで生成したOpenVPNの鍵を拠点Bに転送しますので、
拠点Aで以下のコマンドを実行して、拠点Bのvyattaユーザー用に設定したパスワードを入力します。
sudo scp /config/auth/openvpn.secret vyatta@B.B.B.B:/config/auth/
・拠点B側のOpenVPN設定
・コンフィグモードで起動
$ configure
・OpenVPNの設定
set interfaces openvpn vtun1 local-address 10.103.3.2 subnet-mask 255.255.255.0 set interfaces openvpn vtun1 mode site-to-site set interfaces openvpn vtun1 remote-address 10.103.3.1 set interfaces openvpn vtun1 remote-host A.A.A.A set interfaces openvpn vtun1 openvpn-option "--fragment 1280 --mssfix" set interfaces openvpn vtun1 shared-secret-key-file /config/auth/openvpn.secret
・VPN先の静的ルーティング設定
set protocols static interface-route 192.168.163.0/24 next-hop-interface vtun1 commit save
以上の設定でお互いに疎通ができるようになりました。
拠点Aから10.103.3.2へpingを飛ばし、拠点Bに通信ができるか確認してみてください。
問題が無ければ続いてサーバー側の設定です。
■サーバーのネットワーク設定
通常A拠点にあるサーバーは、自身が直接繋がっているネットワーク(192.168.163.0/24)以外は
必ずインターネット接続ルーターを経由して外に出て行っていますが、
192.168.164.0/24はローカルのセグメントに属していますので、この状態では通信を行う事ができません。
そこで、192.168.164.0/24に繋ぐための経路情報を追加する必要があります。
・拠点A側のサーバー設定とネットワークの再起動
以下の操作により拠点A側にあるサーバーへ経路情報を追加し、最後にネットワークの再起動を行います。
vi /etc/sysconfig/route-ethX ※ethXのXはローカルに繋がっているネットワークインターフェースになります。 -------------------------------------------------- GATEWAY0=192.168.163.254 NETMASK0=255.255.255.0 ADDRESS0=192.168.164.0 -------------------------------------------------- /etc/init.d/network restart
・拠点B側のサーバー設定とネットワークの再起動
片側だけでは通信を送るだけで、応答が帰ってきませんので、
以下の操作により拠点B側にあるサーバーへ拠点Aまでの経路情報を追加し、
最後にネットワークの再起動を行って反映させます。
vi /etc/sysconfig/route-ethX ※ethXのXはローカルに繋がっているネットワークインターフェースになります。 -------------------------------------------------- GATEWAY0=192.168.164.254 NETMASK0=255.255.255.0 ADDRESS0=192.168.163.0 -------------------------------------------------- /etc/init.d/network restart
双方で疎通が取れればOKです。
今回はvyattaというソフトウェアルータを用いてVPNを構築しました。
個人向けルータではOSPFやBGPを喋ったり、VLANを作成したり、
大量のセッション処理や高いルーティング性能を持った製品は無く、
VPN機能に絞ってみても、PPTP機能を搭載するものがあっても、
CPU依存が強い暗号化に対応したL2TPやSSL-VPN機能は無いものが殆どです。
今や価値が付かない古い世代のパソコンでもGHzクラスのCPUとGB単位のメモリを搭載し、
ソフトウェアルータでも業務用ルータと謙遜ない性能を発揮する事ができるようになりました。
Linuxでスクラッチからルータ環境を構築するのは非常に手間がかかりますが、
vyattaはCiscoやJuniperのようにコンフィグを投入して利用することができます。
皆さんも是非試してください。