前回Windows 10をOpenVPNサーバーにしましたが、実はこのマシンはゲーミングPCなので消費電力が…そこでECS LIVA Zを導入。
CentOSを入れてOpenVPNサーバーにしてみます。
ルーターの設定などは前回の記事を参照。

この記事に書いてあること

  • Minimalでインストールしてある CentOS 7.6.1810 をOpenVPNサーバーにする
  • インストールから設定完了まで
  • サーバーモードはTun(ルーティング方式)とTap(ブリッジ方式)の両方を同時使用可能にするが、ここではTapについて書いてあります
  • 認証は証明書認証

準備

ファイアウォール設定

( 12341/udp と 12342/udp の場合)

firewall-cmd –permanent –add-port=12341/udp
firewall-cmd –permanent –add-port=12342/udp
firewall-cmd –permanent –add-masquerade
firewall-cmd –reload

で、
firewall-cmd –list-all
で確認する。

IPフォワード設定

vi /etc/sysctl.d/10-ipv4_forward.conf

で、

net.ipv4.ip_forward = 1

と追加してから、

sysctl –system

SELinux設定

semanage port -a -t openvpn_port_t -p udp 12341
semanage port -a -t openvpn_port_t -p udp 12342

インストール

epelリポジトリ追加

yum install epel-release

明示的に指定したときのみepelリポジトリを使用するように設定なら
vi /etc/yum.repos.d/epel.repo

[epel] の enabled を 0 に変更する。

OpenVPN, easy-rsa, bridge-utilsのインストール

yum –enablerepo=epel install openvpn easy-rsa bridge-utils

認証局設定、DHパラメータ作成、証明書と鍵作成

念のためコピー

mkdir /etc/openvpn/easy-rsa
cp /usr/share/easy-rsa/3.0.3/* /etc/openvpn/easy-rsa/ -R

作業ディレクトリへ移動

cd /etc/openvpn/easy-rsa

初期化

./easyrsa init-pki

認証局

./easyrsa build-ca

DHパラメータ

./easyrsa gen-dh

サーバー証明書と鍵

./easyrsa build-server-full server nopass

クライアント証明書と鍵

./easyrsa build-client-full clientname nopass

TLS-Auth用共通鍵作成

cd /etc/openvpn
openvpn –genkey –secret ta.key

OpenVPN、サーバー設定

サンプルファイルをコピーして、中身を書く。
cp /usr/share/doc/openvpn*/sample/sample-config-files/server.conf /etc/openvpn/server_bridge.conf

書き方は前回の記事を参照。

違うところは…

  • dev tap0 とする(重要)
  • dev-node はコメントアウト
  • user nobody のコメントアウトを外す
  • group nobody のコメントアウトを外す

ブリッジの設定

ブリッジ br0 を追加
nmcli connection add type bridge con-name br0 ifname br0 stp no

IPアドレス固定
nmcli connection modify br0 ipv4.method manual ipv4.addresses “192.168.9.9/24” ipv4.gateway “192.168.9.1” ipv4.dns 192.168.9.1

enp1s0(環境により異なるぽい) を br0 に追加。
nmcli connection add type bridge-slave ifname enp1s0 master br0

enp1s0を削除してリブート。
nmcli connection delete enp1s0; reboot

OpenVPN 起動と自動起動設定

起動する。
設定ファイルが server_bridge.conf の場合。
systemctl start openvpn@server_bridge

ブリッジに tap0 を組み込むサービスを作る。
vi /etc/systemd/system/openvpn-bridge.service

中身は↓こんな感じ(OpenVPNの設定ファイルが server_bridge.conf で dev tap0 になってて、ブリッジが br0)

[Unit]
Description=OpenVPN bridge service
Requires=openvpn@server_bridge.service
After=openvpn@server_bridge.service

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/bin/sh -c ‘/sbin/brctl addbr br0 || /bin/true’
ExecStartPost=/bin/sh -c ‘/sbin/brctl addif br0 tap0 || /bin/true’
ExecStartPost=/sbin/ip link set tap0 up
ExecReload=/bin/true
ExecStop=/sbin/brctl delif br0 tap0

[Install]
WantedBy=multi-user.target

で、
systemctl start openvpn-bridge

自動起動させるには

systemctl enable openvpn@server_bridge
systemctl enable openvpn-bridge

OpenVPN tunも設定する

上記までの作業が終わっていれば、あとは設定ファイルを別に作って動かすだけです。