事前に 60 CentOS OpenVPN の事前準備が完了している前提です。
# yum install bridge-utils
# vi /etc/openvpn/server.conf port 1194 dev tap0 ← VPNインタフェースとしてTAPを指定 ;dev tun ← コメントアウト ;server 10.8.0.0 255.255.255.0 ← コメントアウト server-bridge 10.8.0.4 255.255.255.0 10.8.0.50 10.8.0.100 ← Bridge IP 10.8.0.4を指定し、クライアントを10.8.0.50-100割り当て 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 ← 最終行へ追加(管理インタフェースの有効化※後述)
# cp /usr/share/doc/openvpn-2.2.2/sample-scripts/bridge-start /etc/openvpn # cp /usr/share/doc/openvpn-2.2.2/sample-scripts/bridge-stop /etc/openvpn # chmod 755 /etc/openvpn/bridge-start /etc/openvpn/bridge-stop
# vi bridge-start ※ブリッジ開始の設定を編集 br="br0" ※ブリッジインターフェース名。 tap="tap0" ※ブリッジするOpenVPNのTAPインターフェース名。 eth="eth1" ※ブリッジするローカルセグメントのインターフェース名。 eth_ip="10.8.0.4" eth_netmask="255.255.255.0" eth_broadcast="10.8.0.255" # vi bridge-stop ※ブリッジ停止の設定を編集 br="br0" ※bridge-startに合わせる tap="tap0" ※bridge-startに合わせる
# vi bridge-stop ※ブリッジ停止の設定を編集 br="br0" ※bridge-startに合わせる tap="tap0" ※bridge-startに合わせる
# vi /etc/rc.d/init.d/openvpn [略] case "$1" in start) echo -n $"Starting openvpn: " /etc/openvpn/bridge-start ※開始時OpenVPNが始まる前にブリッジ開始 /sbin/modprobe tun >/dev/null 2>&1 [略] stop) echo -n $"Shutting down openvpn: " for pidf in `/bin/ls $piddir/*.pid 2>/dev/null`; do if [ -s $pidf ]; then kill `cat $pidf` >/dev/null 2>&1 fi rm -f $pidf done # Run shutdown script, if defined if [ -f $work/openvpn-shutdown ]; then $work/openvpn-shutdown fi /etc/openvpn/bridge-stop ※OpenVPNが停止した後でブリッジ停止