BLOG

vyattaを使って拠点間VPNを構築する

vyatta_logo

vyattaとは高機能なソフトウェアルータを構築するソフトウェアで、debianをベースに作られています。
Linuxベースですが、CLIで操作するルータライクなコマンドが用意されており、
ゼロからLinuxで作る場合と比べてコンフィグの管理・投入が簡単になっています。

 

■ ネットワーク構成
vyatta
今回は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のようにコンフィグを投入して利用することができます。
皆さんも是非試してください。

Tweet about this on TwitterShare on FacebookShare on Google+