CentOS8 で PacketiX VPN Server

はじめに

前提とする環境は以下の通りです。

  • CentOS 8.1
  • PacketiX VPN Server 4.0
  • 自宅 LAN 192.168.0.0/24
  • ルーターのLAN側 IPアドレス 192.168.0.1
  • VPNサーバーマシンのIPアドレス 192.168.0.3
  • VPNサーバーマシンで使用するNICは 1つ

CentOS8 では NetworkManager を使う

以前 CentOS6 でPacketiX VPN Server を使っていた時は、NetworkManager がブリッジ設定に悪さをするので NetworkManager を停止していました。
CentOS7 では NetworkManager がブリッジに対応したようですが、私は停止させたままブリッジを設定していました。

一方 CentOS8では NetworkManagerを停止すると NICの接続も停止してしまい、どうやったら通信を復活させられるのか私には分かりませんでした。これではブリッジ設定どころではありません汗

どうやら NetworkManagerを再び起動すれば NICが再び接続を取り戻すようですので、CentOS8 に乗り換えたこの機会に Network Managerを用いながらの設定でやっていくことにします。

参考にさせて頂いたのはこちらのサイトです。
(ほとんどまんまですが、bridge-utils はCentOS8で推奨されていないようなので、bridge-utils を使っている部分だけ NetworkManager に置き換えて設定を実施しました。)

CentOS8 への PacketiX VPN Server のインストール

PacketiX VPN Sever のインストールは CentOS7 の時と何も変わりありません。
これまでと同様に、使用ポート、サーバーパスワード、仮想HUB、ユーザー等を設定し、最低限の VPN接続ができるようにします。

このままでは VPNクライアントマシンからサーバー本体への接続ができませんので、tapデバイスを用いてブリッジを作成していきます。

NetworkManager を用いたローカルブリッジの作成

作業イメージは CentOS7 でやっていたものと変わりありません。
以下のようなイメージを最終的に作り上げていきます。

VPNクライアントー仮想HUBーブリッジーtapデバイスーブリッジーbr0 (ブリッジインターフェース)ーブリッジー物理NICー宅内LAN

tapデバイスの作成

今回も tapデバイスの作成はWindows版の「PacketiX VPN サーバー管理マネージャ」で行ってみます。

  1. ブリッジ接続させたい仮想HUB の行をクリックして選択状態にしてから、画面左下の「ローカルブリッジ設定」ボタンをクリックします。「ローカルブリッジ設定画面」が開きます。
  2. 画面上部の一覧内に既に設定済みのローカルブリッジがある場合は一旦削除します。
  3. 画面中段の「仮想 HUB」のドロップリストから接続対象となる仮想 HUB を選択します。
  4. その下にある「新しい tap デバイスとのブリッジ接続」のラジオボタンを選択し、「新しい tap デバイス名」の欄に tapデバイス名 (任意の名前) を入力します。(今回は「tap_vpn」という名前にしました。)
  5. 右下の「ローカルブリッジを追加」のボタンをクリックしてから、画面を閉じます。

サーバーマシン内に tapデバイスが作成され、仮想HUBにもブリッジ接続されました。↓下の接続イメージのうちアンダーライン部分が完成しました。

VPNクライアントー仮想HUBーブリッジーtapデバイスーブリッジーbr0 (ブリッジインターフェース)ーブリッジー物理NICー宅内LAN

ブリッジインターフェース (br0) の作成

次に NetworkManager を用いてブリッジインターフェース (br0) を作成し、NICをこのbr0に接続します。

# nmcli con add type bridge ifname br0
# nmcli con mod bridge-br0 bridge.stp no	                    ← br0のSTPを無効化
# nmcli con mod bridge-br0 ipv4.method manual ipv4.addresses 192.168.0.3/24
# nmcli con mod bridge-br0 ipv4.gateway 192.168.0.1
# nmcli con mod bridge-br0 ipv4.dns 192.168.0.1                     ← 自分の環境に合わせて設定
# nmcli con add type bridge-slave ifname enp3s0 master bridge-br0   ← enp3s0をbr0に接続
# nmcli con del enp3s0; reboot	                                    ← enp3s0を削除し、再起動

以前は ifcfg ファイルを直接編集して設定しましたが、今回は nmcli コマンドを使用しています。
従来物理NICに割り当てていた「192.168.0.3」を br0 に割り当てました。
なお、遠隔ログインで設定している場合は NIC (上の例では enp3s0) を削除した途端に接続不可となるので、rebootまで一気にやってしまいましょう。

ここで一度状態を確認してみます。

# nmcli device
br0	bridge	    接続済み	bridge-br0
enp3s0	ethernet    接続済み	bridge-slave-enp3s0

# ip a
2: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master br0 state UP group default qlen 1000
    link/ether 80:ee:73:c5:d7:f3 brd ff:ff:ff:ff:ff:ff
3: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 80:ee:73:c5:d7:f3 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.3/24 brd 192.168.0.255 scope global noprefixroute br0
       valid_lft forever preferred_lft forever
    inet6 fe80::c653:a556:a009:1f4a/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

うまく br0に対してのみ IPアドレスが割り当てられたようです。
下の接続イメージのうちアンダーライン部分が完成しました。

VPNクライアントー仮想HUBーブリッジーtapデバイスーブリッジーbr0 (ブリッジインターフェース)ーブリッジー物理NICー宅内LAN

tapデバイスとブリッジインターフェース (br0) のブリッジ

最後に tapデバイスとブリッジインターフェース (br0) を結び付けます。
下の接続イメージのうちのアンダーライン部分です。

VPNクライアントー仮想HUBーブリッジーtapデバイスーブリッジーbr0 (ブリッジインターフェース)ーブリッジー物理NICー宅内LAN

それには、PacketiX VPN Server の起動用スクリプトを以下のように作成して、OS起動時に自動で結び付けが行われるようにします。

</etc/systemd/system/vpnserver.service>

[Unit]
Description=PacketiX VPN Server
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/bin/vpnserver/vpnserver start
ExecStartPost=/usr/bin/sleep 5; /usr/sbin/ip link set dev tap_vpn master br0  ←「tap_vpn」はtapデバイス名
ExecStop=/usr/local/bin/vpnserver/vpnserver stop
[Install]
WantedBy = multi-user.target

bridge-utils (brctl) を使わない場合は、上記のように ipコマンドを用いて記述します。
最後に PacketiX VPN Serverを再起動します。

# systemctl restart vpnserver

動作確認

設定が完了しましたので、状態を確認してみます。

# nmcli device
br0	   bridge	接続済み	  bridge-br0
tap_vpn	   tun	        接続済み	  tap_vpn
enp3s0	   ethernet	接続済み	  bridge-slave-enp3s0

すべてのインターフェースが接続されています。
VPNクライアントから接続して、サーバーに pingを送ってみると、ちゃんと通っているようです。

あとがき

CentOSのバージョンを上げてしまうと NetworkManagerを使わないといけなくなってしまい、Packetix VPN Serverの設定はどうしよう… NetworkManagerは悪さをしないかな… と、CentOS8 へのアップグレードを尻込みしていましたが、こちらのサイト様のお力をお借りしながら無事に解決です。良かった良かった。

コメント

タイトルとURLをコピーしました