いやー、長いタイトルだなぁと。。。
自分の課題だった、Hyper-VのCentOS7でブリッジモードのOpenVPNのインストールがやっとできたので、備忘録てきな手順まとめ。。。
・Hyper-Vでの設定
仮想マシンの設定で、「ネットワークアダプター」の「高度の設定」の中の「MACアドレスのスプーフィングを有効にする」にチェックを入れること。

こうしないと、サーバと同じセグメントに対しての通信ができません。
おまじないとして覚えておきましょう。
・CentOS7の設定
SELinuxは無効にしておきましょう。
Firewalldやiptablesを止めるか、ポートを開けておきましょう。
IPv4 フォワーディングを有効にしておきましょう。
#IPv4 フォワーディングの有効 # vi /etc/sysctl.d/99-sysctl.conf net.ipv4.ip_forward = 1 ←この行を追加 # service network restart ←ネットワーク再起動
・OpenVPNのインストール
openvpnだけではなく、bridge-utils・easy-rsa・net-toolsもインストールすること。
# yum install openvpn bridge-utils easy-rsa net-tools
・証明書の作成
ここを参照して作成してください。
・設定ファイルの作成
server.confファイルを作成します。
# vi /etc/openvpn/server.conf #OpenVPN サーバのIPアドレス local 192.168.0.1 #OpenVPN サーバがリスンするポート(必要があれば変更) port 1194 #udpでの通信 proto udp #ブリッジモードとしてtap0を使用※必ずtap0とすること dev tap0 #証明書のパスを追記して記載 ca keys/ca.crt cert keys/server.crt key keys/server.key dh keys/dh2048.pem # ブリッジ(tap0)に割り当てるIP マスク クライアントに割り当てるIPの範囲 server-bridge 192.168.0.1 255.255.255.0 192.168.0.150 192.168.0.199 #VPNクライアント側にルーティングとDNSサーバの割当 push "route 192.168.0.0 255.255.255.0" push "dhcp-option DNS 192.168.0.1" #VPNクライアントへ固定IPアドレスの割り当て設定 client-config-dir ccd #VPNクライアント間での通信を許可 client-to-client #以下は環境にあわせて設定 keepalive 10 120 comp-lzo user nobody group nobody persist-key persist-tun status openvpn-status.log log /var/log/openvpn.log log-append /var/log/openvpn.log verb 3
・VPNクライアントへ固定IPアドレスの割り当て設定用ディレクトリの作成
“client-config-dir ccd”を設定したので、ディレクトリを作成する。
ディレクトリを作成しないとエラーとなってOpenVPNが起動しない
# mkdir /etc/openvpn/ccd
・ブリッジ設定スクリプトのコピー
# cp /usr/share/doc/openvpn-*/sample/sample-scripts/bridge-st* /etc/openvpn/
・bridge-startの設定
# vi bridge-start
#!/bin/sh
br="br0"
tap="tap0"
eth="eth0" ←自分の環境に合わせて変更
eth_ip="192.168.0.1" ←ブリッジ(tap0)に割り当てるIP
eth_netmask="255.255.255.0" ←ネットマスク
eth_broadcast="192.168.0.255" ←ブロードキャスト
gw="192.168.0.254" ←デフォルトゲートウェイアドレス
for t in $tap; do
openvpn --mktun --dev $t
done
brctl addbr $br
brctl addif $br $eth
for t in $tap; do
brctl addif $br $t
done
sleep1 ←おまじないとして追記
for t in $tap; do
ifconfig $t 0.0.0.0 promisc up
done
sleep 1 ←おまじないとして追記
ifconfig $eth 0.0.0.0 promisc up
ifconfig $br $eth_ip netmask $eth_netmask broadcast $eth_broadcast
route add default gw $gw ←デフォルトゲートウェイアドレスを設定
ip -6 addr add fd99:9999:9999::1/64 dev br0 ←IPv6アドレスを使用している場合は追記
・bridge-stopの設定
# vi bridge-stop
#!/bin/sh
br="br0"
tap="tap0"
ifconfig $br down
brctl delbr $br
for t in $tap; do
openvpn --rmtun --dev $t
done
systemctl restart networking ←ネットワーク再起動のおまじない
ip -6 addr add fd99:9999:9999::1/64 dev br0 ←IPv6アドレスを使用している場合は追記
・ブリッジ設定スクリプトに実行権を追加
# chmod +x bridge-st*
・OpenVPN起動・停止時にブリッジ設定スクリプトも実行するように設定
# cp /lib/systemd/system/openvpn@.service /etc/systemd/system/openvpn@.service # vi /etc/systemd/system/openvpn@.service [Unit] Description=OpenVPN Robust And Highly Flexible Tunneling Application On %I After=network.target [Service] PrivateTmp=true Type=forking PIDFile=/var/run/openvpn/%i.pid ExecStartPre=/etc/openvpn/bridge-start ←追記 ExecStart=/usr/sbin/openvpn --daemon --writepid /var/run/openvpn/%i.pid --cd /etc/openvpn/ --config %i.conf ExecStopPost=/etc/openvpn/bridge-stop ←追記 [Install] WantedBy=multi-user.target
・OpenVPNの起動と自動起動設定
# systemctl start openvpn@server ←OpenVPN起動 # systemctl enable openvpn@server ←OpenVPN自動起動
こんな感じでインストールすれば、ブリッジモードで動作してVPNクライアントがサーバと同じセグメントに対しての通信もできるようになるかと。
コメント