【VPNサーバ】OpenVPN設定

  • OpenVPN設定

    # OpenVPN設定ファイルをOpenVPN設定ファイル格納ディレクトリへコピー
    cp /usr/share/doc/openvpn-*/sample/sample-config-files/server.conf /etc/openvpn/
    # OpenVPN設定ファイルを編集
    vi /etc/openvpn/server.conf
    
    下記内容を確認/追加/変更
    # VPNインターフェースとしてtunデバイスを指定
    dev tun
    
    # プロトコルとしてudp、ポートは1194を指定
    proto udp
    port 1194
    
    # 認証局証明書、サーバー証明書、サーバー秘密鍵のファイルパスを指定
    # 配置場所を変更している場合、変更する
    ca ca.crt
    cert server.crt
    key server.key
    
    # DHパラメータファイルのパスを指定
    # 配置場所を変更している場合、変更する
    dh dh.pem
    
    # VPNクライアント割当てアドレス範囲として10.8.0.0/24を指定(デフォルト)
    server 10.8.0.0 255.255.255.0
    
    # LAN(例:192.168.1.0/24)へのルートをVPNサーバー経由にする
    ;push "route 192.168.10.0 255.255.255.0"
    ;push "route 192.168.20.0 255.255.255.0"
    push "route 192.168.11.0 255.255.255.0"
    
    # TLS認証有効化(行頭の;を削除し、コメント解除)
    tls-auth ta.key 0 # This file is secret
    
    # OpenVPN実行権限を下げる(行頭の;を削除し、コメント解除)
    user nobody
    group nobody
    
    # 起動時に鍵読み込み、tunデバイスオープン
    persist-key
    persist-tun
    
    # ログの設定
    status /var/log/openvpn-status.log
    log-append  /var/log/openvpn.log
    verb 3
    
    # LZO圧縮を利用
    comp-lzo
    
    # OpenVPNクライアントのIP固定設定を利用しない
    # 利用する場合、行頭の;を削除
    ;client-config-dir ccd
    
    # 管理インタフェースの有効化(最終行に追加)
    # 証明書廃止リストの有効化(最終行に追加)
    management localhost 7505
    crl-verify crl.pem
    
    # OpenVPN経由でSambaへのアクセスがエラーになる場合、最終行に追加
    fragment 1280
    mssfix 1280
    link-mtu 1400
    
  • OpenVPN起動時実行スクリプト作成

    # OpenVPN起動時実行スクリプト作成
    vi /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へのアクセスを許可
    # VPNクライアントから192.168.11.0/24へのアクセスを許可する場合、
    # 192.168.11.0/24側のファイアウォール等でVPNクライアント(10.8.0.0/24)からのアクセスを許可すること
    iptables -I FORWARD -i tun+ -d 192.168.11.0/24 -j ACCEPT
    
    # OpenVPN起動時実行スクリプトへ実行権限付加
    chmod +x /etc/openvpn/openvpn-startup
    
  • OpenVPN停止時実行スクリプト新規作成

    # OpenVPN停止時実行スクリプト新規作成
    vi /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
    
    # OpenVPN停止時実行スクリプトへ実行権限付加
    chmod +x /etc/openvpn/openvpn-shutdown
    
  • OpenVPNログローテーション設定

    # OpenVPNログローテーション設定ファイル新規作成
    vi /etc/logrotate.d/openvpn
    
    /var/log/openvpn.log {
        missingok
        notifempty
        sharedscripts
        postrotate
            systemctl restart openvpn 2>&1 > /dev/null || true
        endscript
    }
    
  • OpenVPN起動スクリプト変更

    # OpenVPN起動スクリプト変更
    vi /etc/rc.d/init.d/openvpn
    
    下記内容を変更
    # 行頭の#を削除し、コメント解除
    # パケット転送を有効化する
    echo 1 > /proc/sys/net/ipv4/ip_forward