RaspberryPiでVPNサーバを構築する
接続が不安定になるのでWiFiで繋がないこと。
RasPiは有線LANで接続し、/etc/dhcpcd.conf内でIPアドレスをstaticにしておく。

2022/8/22 Updated

SoftEtherをインストール

起動スクリプトを作って自動起動を設定する(Buster以降)

Windows機で設定ツールを使って詳細設定をする

パフォーマンス測定

外部回線を経由せず、LAN内でポートVLANを構築してVPNサーバで折り返させて測定した。
VPNサーバが「ポートALL」、iPerfサーバが「ポートグループ1」、iPerfクライアントが「ポートグループ2」

OrangePi ONE35MbpsAllwinner H3(ARM Cortex-A7 Quad core 1.2GHz)
RasPi3B+65MbpsBroadcom BCM2837B0(Cortex-A53 ARMv8 1.4GHz)
RasPi4B80MbpsBroadcom BCM2711 (Cortex-A72 ARMv8 1.5GHz)
Direct770Mbps-

iperf2 server : Corei5 530/2.93GHz, Centos6

VPN接続時、自分自身(vpnserverをインストールしたマシン)にアクセスできるようにブリッジを構築する

これはLinuxの制約が原因で、外からVPN接続したときに、VPNサーバ機にはアクセスできないという問題を回避するための物。
入ってきたNICから出て行くことはできるが、折り返せないためアクセスできない。
NICを2つにする方法もあるが、ここではお手軽にtapデバイスを作成してブリッジを構成する。
詳細は良く理解できていないが、物理NICのeth0の他に、ブリッジデバイスbr0とタップデバイスtap0ができる。
br0はeth0にブリッジされており、br0に割り当てたIPアドレスがNICそのもののIPアドレスとなる。
tapデバイスのtap_tap0もbr0から接続されている。
ブリッジの接続状態はbrctl showコマンドで参照できる。

bridge-utilsをインストールする

sudo apt-get install -y bridge-utils

ブリッジデバイスの設定

$ sudo nano /etc/network/interfaces

# loopback
auto lo
iface lo inet loopback

# Ethernet port
auto eth0
iface eth0 inet manual

# Bridge interface
auto br0
iface br0 inet static
address 192.168.xxx.yyy
netmask 255.255.255.0
network 192.168.xxx.0
broadcast 192.168.xxx.255
gateway 192.168.xxx.zzz
bridge_ports eth0

#その他
auto wlan0
allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp

IP Address固定化の修正

/etc/dhcpcd.confでIP Addressを固定化していたら、その部分をコメントアウトする

先程作った起動スクリプトを削除する(tapデバイスの作成を行うスクリプトに変更するため)

$ sudo rm /etc/systemd/system/vpnserver.service

起動スクリプトの作成と自動起動の設定(1)

$ sudo nano /usr/local/vpnserver/vpnserver_start

#!/bin/bash
/usr/local/vpnserver/vpnserver start

# vpnserverを起動後、完全に起動してtapデバイスが作成されるのを待つための5秒
/bin/sleep 5

# tapデバイスをbr0にブリッジ接続する
tap=$(/sbin/ifconfig -a| awk '$1 ~ /^tap/ {print $1}')
/sbin/brctl addif br0 $tap

起動スクリプトの作成と自動起動の設定(2)

$ sudo nano /etc/init.d/vpnserver

#!/bin/sh
### BEGIN INIT INFO
# Provides:       vpnserver
# Required-Start: $local_fs $network
# Required-Stop:  $local_fs $network
# Default-Start:  2 3 4 5
# Default-Stop:   0 1 6
# Description:    SoftEther VPN Server
### END INIT INFO

DAEMON=/usr/local/vpnserver/vpnserver
LOCK=/var/lock/vpnserver

vpn_start() {
 #    ${DAEMON} start
     /usr/local/bin/vpnserver/vpnserver_start
 }
 
 vpn_stop() {
     ${DAEMON} stop
 }
 
 test -x ${DAEMON} || exit 0
 
 case "$1" in
 start)
     vpn_start
     touch ${LOCK}
     ;;
 stop)
     vpn_stop
     rm ${LOCK}
     ;;
 restart)
     vpn_stop
     sleep 3
     vpn_start
     ;;
 *)
     echo "Usage: $0 {start|stop|restart}"
     exit 1
 esac
 
 exit 0

サービスの起動設定、起動、起動確認

$ sudo chmod 755 /etc/init.d/vpnserver
$ sudo systemctl enable vpnserver
$ sudo systemctl start vpnserver
$ sudo systemctl status vpnserver

Windows機のSoftEther VPN Server Managerでの追加設定

メモ

参考ページ

https://nobuntu.jp/raspberrypi-vpn-server-softethervpn/


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2023-11-27 (月) 23:39:34