目次

61 CentOS OpenVPNトンネル接続

事前に 60 CentOS OpenVPN の事前準備が完了している前提です。

①設定ファイル修正

# vi /etc/openvpn/server.conf

port 1194

dev tun ← VPNインタフェースとしてTUNを指定(デフォルト)

server 10.8.0.0 255.255.255.0 ← VPNクライアント割当てアドレス範囲として10.8.0.0/24を指定(デフォルト)

push "route 192.168.1.0 255.255.255.0" ← 追加(LAN(例:192.168.1.0/24)へのルートをVPNサーバー経由にする)
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"

tls-auth ta.key 0 # This file is secret ← 行頭の;を削除してコメント解除(TLS認証有効化)

user nobody ← 行頭の;を削除してコメント解除(OpenVPN実行権限を下げる)
group nobody ← 行頭の;を削除してコメント解除(OpenVPN実行権限を下げる)

client-to-client

log-append  /var/log/openvpn.log ← 行頭の;を削除してコメント解除(ログを/var/log/openvpn.logに記録する)

crl-verify /etc/openvpn/crl.pem
management localhost 7505 ← 最終行へ追加(管理インタフェースの有効化※後述)

②OpenVPN用スクリプト用意

1.起動時用

# 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.1.0/24へのアクセスを許可する場合)
# ※192.168.1.0/24側のファイアウォール等でVPNクライアント(10.8.0.0/24)からのアクセスを許可すること
iptables -I FORWARD -i tun+ -d 172.18.0.0/24 -j ACCEPT

# VPNクライアントからLAN内特定マシンのみへのアクセスを許可する場合
# (例としてVPNクライアントから192.168.1.3へのアクセスを許可する場合)
# ※192.168.1.3側のファイアウォール等でVPNクライアント(10.8.0.0/24)からのアクセスを許可すること
#iptables -I FORWARD -i tun+ -d 192.168.1.3 -j ACCEPT

# VMなどでFORWADが許可されてない場合、ソースNATを利用すると問題無し
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -d 192.168.1.0/24 -o eth1 -j SNAT --to-source 192.168.1.3

2.停止時用

# cat /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='O