いやー、長いタイトルだなぁと。。。
自分の課題だった、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クライアントがサーバと同じセグメントに対しての通信もできるようになるかと。
コメント