複数クライアント対応OpenVPNの構築

提供: mechanical Wiki
ナビゲーションに移動 検索に移動

はじめに

このページには、複数のクライアントから接続ができるOpenVPNサーバと、そのクライアントの構築概要を記載する。 公開鍵・秘密鍵を使った認証。

参考文献

  1. http://www.openvpn.jp/document/how-to/
  2. http://d.hatena.ne.jp/eth0jp/20100325/1269453880

認証局(CA)の設置とOpenVPN用証明書と鍵の生成

認証局(CA)の設置とOpenVPN用証明書と鍵の生成の補足。

今回の環境の場合、OpenSSLの基本操作に従って作成した。

接続を受け付けるサーバ側は「サーバ証明書」、接続を要求する側は「クライアント証明書」が必要。

サーバー用/クライアント用の設定ファイルの作成

サーバー用/クライアント用の設定ファイルの作成の補足は、特にない。

iptablesの設定

iptablesによる通信制限をかけている場合、OpenVPN起動・終了時に設定変更が必要。 サーバ、クライアントともに必要となる。

OpenVPN起動時にtunの通信を許可するようにし、OpenVPN停止時にその設定を削除するようなスクリプトを作成する。 詳細は、参考文献2を参照のこと。

以下の2つのファイルを作成する。

/etc/openvpn/openvpn-startup

#!/bin/bash

# VPNインタフェースiptablesルール削除スクリプト実行※必須
/etc/openvpn/openvpn-shutdown

# VPNサーバーからの送信を許可※必須
iptables -I OUTPUT -o tun+ -j ACCEPT
iptables -I FORWARD -o tun+ -j ACCEPT

# VPNクライアントからVPNサーバーへのアクセスを許可する場合
iptables -I INPUT -i tun+ -j ACCEPT

# VPNクライアントからLANへのアクセスを許可する場合
#iptables -I FORWARD -i tun+ -d 192.168.0.0/24 -j ACCEPT

/etc/openvpn/openvpn-shutdown

#!/bin/bash

# VPNインタフェース(tun+)用iptablesルール削除関数
delete() {
    rule_number=`iptables -L $target --line-numbers -n -v|grep tun.|awk '{print $1}'|sort -r`
    for num in $rule_number
    do
        iptables -D $target $num
    done
}

# VPNインタフェース(tun+)用iptables受信ルール削除
target='INPUT'
delete

# VPNインタフェース(tun+)用iptables転送ルール削除
target='FORWARD'
delete

# VPNインタフェース(tun+)用iptables送信ルール削除
target='OUTPUT'
delete

管理番号: 350