Raspberry Pi 4BにSoftEtherをインストール(3)

SoftetherVPNサーバーマネージャで設定後、
(tap_vlan仮想アダプタを作成。詳細は別にまとめます。)

tap_vlanが作成されているのが確認できます。

pi@raspberrypi:~ $ ifconfig
br0: flags=4419<UP,BROADCAST,RUNNING,PROMISC,MULTICAST>  mtu  1500
        inet 192.168.7.27  netmask 255.255.255.0  broadcast  192.168.7.255
        inet6 2400:4050:****:****:ac61:b6da:2cfe:8f7  prefixlen  64  scopeid 0x0<global>
        inet6 fe80::****:****:eb9b:2e69  prefixlen 64  scopeid  0x20<link>
        ether dc:a6:**:70:13:**  txqueuelen 1000  (Ethernet)
        RX packets 7856  bytes 1575188 (1.5 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 4332  bytes 749302 (731.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions  0

eth0: flags=4419<UP,BROADCAST,RUNNING,PROMISC,MULTICAST>  mtu  1500
        ether dc:a6:**:70:13:**  txqueuelen 1000  (Ethernet)
        RX packets 7872  bytes 1686054 (1.6 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 4332  bytes 749302 (731.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions  0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
・・・

tap_vlan: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet6 fe80::****:****:eb9b:2e69  prefixlen 64  scopeid  0x20<link>
        ether 5e:cc:**:ae:17:**  txqueuelen 1000  (Ethernet)
        RX packets 17  bytes 846 (846.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 15  bytes 2064 (2.0 KiB)

前回作成したブリッジにtap_vlanを追加します。
最終的に、起動時に自動的に追加されるようにするのですが、
一時的に追加して動作を確認します。
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
現在のブリッジの状態

pi@raspberrypi:~ $ brctl show br0
bridge name     bridge id               STP enabled      interfaces
br0             8000.dca6327013e4       no              eth0

タップデバイスの名前の確認

pi@raspberrypi:~ $ ip tuntap
tap_vlan: tap

ブリッジにtap_vlanを追加

pi@raspberrypi:~ $ sudo brctl addif br0 tap_vlan

追加後のブリッジの状態

pi@raspberrypi:~ $ brctl show br0
bridge name     bridge id               STP enabled      interfaces
br0             8000.5ecc74ae170e       no              eth0
                                                        tap_vlan

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

起動時に自動的に追加されるようにする。
以下を参考にしました。

SoftEherVPNでTAPデバイスとのブリッジが失敗する場合 - Qiita

pi@raspberrypi:/usr/local/bin/vpnserver $ sudo nano vpnserver-tap-enable.sh

下記を記入。「sleep 5」の部分、最初は「sleep 1」だったが、ブリッジが組まれないことが多かったため、「sleep 5」にした。
現在は、何回再起動しても問題なくブリッジが組まれている。
Softetherのタップとの起動タイミングングの問題か?

#!/bin/sh
TAP_DEVICE=tap_vlan
BR_STATUS=`/sbin/brctl show br0 | grep ${TAP_DEVICE} | wc -l`
LOOP_CNT=0

while [ $BR_STATUS = 0 ]
do
        sleep 5
        /sbin/brctl addif br0 ${TAP_DEVICE}
        if [ $? -ne 0 ]; then
                break
        fi
        LOOP_CNT=$(( LOOP_CNT + 1 ))
        if [ ${LOOP_CNT} = 10 ]; then
                break
        fi
done

exit 0

vpnserver-tap-enable.sh

pi@raspberrypi:/usr/local/bin/vpnserver $ ls
Authors.txt               Makefile                               server_log
backup.vpn_server.config  packet_log                             vpncmd
chain_certs               ReadMeFirst_Important_Notices_cn.txt   vpnserver
code                      ReadMeFirst_Important_Notices_en.txt   vpn_server.config
hamcore.se2               ReadMeFirst_Important_Notices_ja.txt   vpnserver-tap-enable.sh
lang.config               ReadMeFirst_License.txt
lib                       security_log

pi@raspberrypi:/usr/local/bin/vpnserver $ sudo chmod +x  vpnserver-tap-enable.sh
pi@raspberrypi:/usr/local/bin/vpnserver $ sudo nano  /etc/systemd/system/softether-vpn.service

下記を記入

[Unit]
Description=SoftEther VPN Server
After=network.target network-online.target

[Service]
ExecStart=/usr/local/bin/vpnserver/vpnserver start
ExecStop=/usr/local/bin/vpnserver/vpnserver stop
ExecStartPost=/usr/local/bin/vpnserver/vpnserver-tap-enable.sh
Type=forking
RestartSec=3s

[Install]
WantedBy=multi-user.target

softether-vpn.service

.serviceを編集したので、念のためdaemon-reloadする。

pi@raspberrypi:~ $ sudo systemctl daemon-reload
pi@raspberrypi:/usr/local/bin/vpnserver $ sudo reboot

再起動後、自動的に追加されているか確認する。

pi@raspberrypi:~ $ brctl show
bridge name     bridge id               STP enabled      interfaces
br0             8000.5ecc74ae170e       no              eth0
                                                        tap_vlan

ブリッジが成功するとSoftether VPNサーバー側のIPテーブルに以下のように、Raspberry Piが接続されているLAN内のIPアドレスが列挙されてくる。ここにIPが出てきていなければPINGも飛ばない。

SoftEther IPアドレステーブル

ちなみに、ブリッジされてないと以下のようになる。192.168.21.1などLAN内のIPが出てこない。

SoftEther IPアドレステーブル