はじめに
前提とする環境は以下の通りです。
- 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 サーバー管理マネージャ」で行ってみます。
- ブリッジ接続させたい仮想HUBの行をクリックして選択状態にしてから、画面左下の「ローカルブリッジ設定」ボタンをクリックします。「ローカルブリッジ設定画面」が開きます。
- 画面上部の一覧内に既に設定済みのローカルブリッジがある場合は一旦削除します。
- 画面中段の「仮想 HUB」のドロップリストから接続対象となる仮想 HUB を選択します。
- その下にある「新しいtapデバイスとのブリッジ接続」のラジオボタンを選択し、「新しいtapデバイス名」の欄にtapデバイス名 (任意の名前) を入力します。(今回は「tap_vpn」という名前にしました。)
- 右下の「ローカルブリッジを追加」のボタンをクリックしてから、画面を閉じます。
サーバーマシン内に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へのアップグレードを尻込みしていましたが、こちらのサイト様のお力をお借りしながら無事に解決です。良かった良かった。
コメント