Asial Blog

Recruit! Asialで一緒に働きませんか?

OpenVPNで細々便利な設定

カテゴリ :
バックエンド(インフラ)
タグ :
Tech
Linux
OpenVpn
route
network
以前OpenVPNについて紹介しましたが、今回はもう少し深い部分について書こうと思います。

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

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

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

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

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

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

■クライアント側で指定
一部のクライアントのみ有効にしたい場合などは、クライアント側に指定もできます。
指定というか、起動時にrouteコマンドを実行するだけですが、
  1. route-up "route add -net 172.16.0.0/16 gw 10.0.0.1"
route-up で、任意のコマンドを実行できるので、routeコマンドを直接実行します。

■その他、クライアント側で指定する場合
L2で接続している場合は、見える範囲なら普通にrouteコマンドを使用出来ます。
L3で接続している場合ですが、クライアント側から出ていくためのゲートウェイが存在しますので、そこに投げればOKです。
  1. ※クライアントが192.168.100.6の場合
  2. $ /sbin/route -n
  3. (ry)
  4. 192.168.100.5     0.0.0.0          255.255.255.255 UH    0      0        0 tun0 <- VPN側のGWへのルート
  5. 192.168.10.0      192.168.100.5    255.255.0.0     UG    100    0        0 tun0 <- 接続先へはVPNのGWを通る

2・暗号化方式の変更

下記のように指定してやれば暗号化方式を変更することができます。
速度と強度の兼ね合いでお好きな物をご使用ください。
  1. cipher aes-256-cbc
方式のアルゴリズムや強度については割愛します。
なお、自分の場合はAES256を使用しています。

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

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