アシアルブログ

アシアルの中の人が技術と想いのたけをつづるブログです

OpenVPNで細々便利な設定

以前OpenVPNについて紹介しましたが、今回はもう少し深い部分について書こうと思います。

1・ルート追加
例えば、下記のようにVPNサーバのセグメント以外に接続先ネットワークを指定する場合に使用できます。


|クライアント|-----|VPNサーバ|------|接続先サーバorネットワーク|


■サーバ側からpushする方法
接続する全クライアントに対して適用させることができます。

設定方法は簡単で、サーバ側の設定ファイルに下記のように追加してください。
※L3を使用している場合に使用可能な方法です。
 L2を使用する場合は調べきれていないので割愛。


push "route 192.168.10.0 255.255.255.0"


pushにて第一引数にクライアントで実行するコマンドを指定、
routeは、第一引数に接続先ネットワーク、第二匹数にネットマスクを指定

上記設定のみで、接続先ネットワークに行くにはこのVPNサーバを使用するという命令を発行できます。
OpenVPNサーバを再起動後、クライアントから接続すれば適用されているはずです。

実は、下記のように書けばメトリックを指定できますので、
PCでは年中OpenVPNを起動しておいて、社内に移動した時は通常のLANを使用(Metricが0なので)、社外に出た時はOpenVPN経由にするなどの使い方ができます。


push "route-metric 100"


■クライアント側で指定
一部のクライアントのみ有効にしたい場合などは、クライアント側に指定もできます。
指定というか、起動時にrouteコマンドを実行するだけですが、


route-up "route add -net 172.16.0.0/16 gw 10.0.0.1"

route-up で、任意のコマンドを実行できるので、routeコマンドを直接実行します。

■その他、クライアント側で指定する場合
L2で接続している場合は、見える範囲なら普通にrouteコマンドを使用出来ます。
L3で接続している場合ですが、クライアント側から出ていくためのゲートウェイが存在しますので、そこに投げればOKです。


※クライアントが192.168.100.6の場合
$ /sbin/route -n
(ry)
192.168.100.5     0.0.0.0          255.255.255.255 UH    0      0        0 tun0 <- VPN側のGWへのルート
192.168.10.0      192.168.100.5    255.255.0.0     UG    100    0        0 tun0 <- 接続先へはVPNのGWを通る


2・暗号化方式の変更

下記のように指定してやれば暗号化方式を変更することができます。
速度と強度の兼ね合いでお好きな物をご使用ください。


cipher aes-256-cbc

方式のアルゴリズムや強度については割愛します。
なお、自分の場合はAES256を使用しています。

こっちの方が重要で、AES-NI対応のCPUの場合は数倍のスループットを引き出せるようです。
※自分の場合はサーバが対応していないため未検証
設定は下記のようになります。


engine aesni


以上、少し便利にする設定でした。

OpenVPNで拠点間VPN

OpenVPNで拠点間VPN

元々、個人専用のWEBサーバーを立ち上げ、ファイルサーバーのデータを外部から参照可能にしているが、
単純にファイルを転送するだけならともかく、ディレクトリごとダウンロードや、一部だけ読み取ることなどは出来ないため割と不便。
解決法はWebDAVとかFTPとかいろいろとある中、どうせなら自宅ネットワークに直接接続出来れば、便利じゃないかと思いVPNを張ることを計画。
NFSとかFTPとかSVNとかrsyncなどの内部用の設定なため、外部に公開したらひどいことになる通信も使える!)
VPNといえば、IPSecとかPPTPなどの有名どころはありますが、割と設定が面倒で設定をしっかりしないと穴が開くこともあるので、設定が簡単な(デフォルトでもそこそこしっかりしている)OpenVPNを採用。

OpenVPNとは
SSLVPNの一つで、設定がシンプル。そこそこ堅牢。IPSecなどと違い、ユーザーランドで動作するのでセキュリティホールがあった場合にも影響が少ないはず。暗号化の方式も割と自由に選択可能。

以下、詳しいことはいつものとおり割愛して、具体的な設定方法。

インストール


$ sudo apt-get install openvpn


証明書の作成
まずは、easy-rsaをコピー


hoge@localhost:~$ sudo cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0/ /etc/openvpn/easy-rsa-hoge/


移動


hoge@localhost:~$ cd /etc/openvpn/easy-rsa-hoge/


お好みにより証明書の内容を編集(オレオレ証明書なので適当に)


hoge@localhost:/etc/openvpn/easy-rsa-hoge$ vi vars
##############
export KEY_COUNTRY="HO"
export KEY_PROVINCE="GE"
export KEY_CITY="hogecity"
export KEY_ORG="Hoge corp"
export KEY_EMAIL="me@myhost.mydomain"
##############


varsの内容を環境変数にセット


hoge@localhost:/etc/openvpn/easy-rsa-hoge$ . ./vars


CAを作成


hoge@localhost:/etc/openvpn/easy-rsa-hoge$ ./build-ca
Generating a 1024 bit RSA private key
......++++++
......++++++
writing new private key to 'ca.key'