退役させたSSL-VPN環境をやっぱりRaspberry Pi 3を使って復活させる
機器の老朽化に伴って退役させたSSL-VPN環境をやっぱり復活させることにした
どうして?
- とある場所(ホテル)で提供されているインターネット環境でVPN接続が遮断されていた
- 大規模な震災を目の当たりにすると災害対応等でアクセスラインはやっぱり複数持っておくべき
- YAMAHA製VPNクライアントではインターネットに出られなくなった(YMS-VPN7→YMS-VPN8)
どうやって実現しよう?
- ここのところRaspberry Piを触っていない
- SoftEtherなら
- SSL-VPNに対応している(これ必須)
- オープンソース版がある
- MS-SSTP(Microsoft Secure Socket Tunneling Protocol)にも対応しているようだ(今後の布石として)
- イニシャルコストもランニングコストも抑えておきたい
おっ やりたいこと全部できるじゃんということで
Raspberry Pi 3 + SoftEther VPN オープンソース版
で構築することにした
設定メモ
Raspberry Pi 3をRaspbianで動かす
GUIは必要ないのでRASPBIAN STRETCH LITEでいい
OSイメージをダウンロードする
RASPBIAN STRETCH LITE(Minimal image based on Debian Stretch Version:April 2018)
ダウンロードしたOSイメージをmicroSDに書き込む
$ diskutil list
/dev/disk4 (external, physical):
#: TYPE NAME SIZE IDENTIFIER
0: FDisk_partition_scheme *15.6 GB disk4
1: Windows_FAT_32 boot 43.8 MB disk4s1
2: Linux 15.5 GB disk4s2
$ sudo diskutil unmountDisk /dev/disk4
Password:
Unmount of all volumes on disk4 was successful
$ sudo dd bs=1m if=~/Downloads/2018-04-18-raspbian-stretch-lite.img of=/dev/rdisk4
1776+0 records in
1776+0 records out
1862270976 bytes transferred in 163.940909 secs (11359404 bytes/sec)
SSH接続も有効化しておく
$ diskutil list
/dev/disk4 (external, physical):
#: TYPE NAME SIZE IDENTIFIER
0: FDisk_partition_scheme *15.6 GB disk4
1: Windows_FAT_32 boot 43.8 MB disk4s1
2: Linux 1.8 GB disk4s2
$ touch /Volumes/boot/ssh
$ sudo diskutil unmountDisk /dev/disk4
Unmount of all volumes on disk4 was successful
起動したRaspberry Pi 3に接続する
$ ssh [email protected]
初期パスワード:raspberry
Raspbianの設定をしていく
[必須]パスワードの変更
初期状態のままだとraspberry
になっているので必ずパスワードを変更する
$ passwd
Changing password for pi.
(current) UNIX password:
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
[必須]SSH公開鍵認証にする
端末側の共有鍵を送る
$ scp .ssh/id_rsa.pub [email protected]:
SSH証明書ログインを有効にする
$ mkdir ~/.ssh
$ chmod 700 ~/.ssh
$ mv ~/id_rsa.pub ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys
$ sudo nano /etc/ssh/sshd_config
RSAAuthentication yes
PubkeyAuthentication yes
PermitRootLogin no
AuthorizedKeysFile %h/.ssh/authorized_keys
$ sudo service ssh restart
※必ず別セッションの接続で接続を確認しておく
とりあえず最新にアップデート
$ sudo apt update
$ sudo apt -y upgrade
$ sudo apt dist-upgrade
$ sudo rpi-update
$ sudo apt -y autoremove
swapを使わない
microSDで起動させているので
$ sudo systemctl disable dphys-swapfile
$ sudo dphys-swapfile swapoff
$ sudo apt -y remove dphys-swapfile
無線LANを無効にする
$ sudo iwconfig wlan0 txpower off
GPUメモリ割り当て変更
$ sudo raspi-config nonint do_memory_split 16
TimeZoneの設定
$ sudo timedatectl set-timezone Asia/Tokyo
$ sudo dpkg-reconfigure -f noninteractive tzdata
ブリッジを使えるようにする
$ sudo apt -y install bridge-utils
$ sudo nano /etc/network/interfaces
# Bridge
auto br0
iface br0 inet static
address 192.168.0.254
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.1
dns-nameservers 8.8.8.8 1.1.1.1
bridge_ports eth0
テンポラリ領域のRAMディスク化
$ sudo nano /etc/fstab
tmpfs /tmp tmpfs defaults,size=32m,noatime,mode=1777 0 0
tmpfs /var/tmp tmpfs defaults,size=16m,noatime,mode=1777 0 0
$ sudo rm -fr /tmp
$ sudo rm -fr /var/tmp
$ sudo reboot
Host名を変更する
$ sudo raspi-config nonint do_hostname softether
SoftEther VPNをインストールする
$ mkdir softether
$ cd softether/
$ wget http://jp.softether-download.com/files/softether/v4.27-9668-beta-2018.05.29-tree/Linux/SoftEther_VPN_Server/32bit_-_ARM_EABI/softether-vpnserver-v4.27-9668-beta-2018.05.29-linux-arm_eabi-32bit.tar.gz
$ tar -zxvf softether-vpnserver-v4.27-9668-beta-2018.05.29-linux-arm_eabi-32bit.tar.gz
$ sudo mv vpnserver /usr/local/
$ cd /usr/local/vpnserver
$ sudo make
$ sudo chmod 600 *
$ sudo chmod 700 vpncmd
$ sudo chmod 700 vpnserver
$ 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
# Short-Description: SoftEther VPN RTM
# Description: Start vpnserver daemon SoftEther VPN Server
### END INIT INFO
DAEMON=/usr/local/vpnserver/vpnserver
LOCK=/var/lock/vpnserver
# tun/tapモジュールのロード
sudo modprobe tun
. /lib/lsb/init-functions
test -x $DAEMON || exit 0
case "$1" in
start)
sleep 3
log_daemon_msg "Starting SoftEther VPN Server" "vpnserver"
$DAEMON start >/dev/null 2>&1
touch $LOCK
log_end_msg 0
sleep 3
# SoftEther VPNで追加した仮想tapデバイス名を調べる
tap=`/sbin/ifconfig -a| awk '$1 ~ /^tap/ {print $1}'`
/sbin/brctl addif br0 $tap
;;
stop)
log_daemon_msg "Stopping SoftEther VPN Server" "vpnserver"
$DAEMON stop >/dev/null 2>&1
rm $LOCK
log_end_msg 0
sleep 2
;;
restart)
$DAEMON stop
sleep 2
$DAEMON start
sleep 5
# SoftEther VPNで追加した仮想tapデバイス名を調べる
tap=`/sbin/ifconfig -a| awk '$1 ~ /^tap/ {print $1}'`
/sbin/brctl addif br0 $tap
;;
status)
if [ -e $LOCK ]
then
echo "vpnserver is running."
else
echo "vpnserver is not running."
fi
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
exit 1
esac
exit 0
$ sudo chmod +x /etc/init.d/vpnserver
$ sudo update-rc.d vpnserver defaults
$ sudo reboot
SoftEther VPNの設定をする
SoftEther VPN Server Managerをダウンロードして設定する
SoftEtherコンフィグレーションファイルでしか行えない設定
- SoftEther VPN Server Managerを起動してVPN Serverに接続する
- 「サーバー情報の参照および設定」の[Config編集]ボタンをクリックする
- [ファイルに保存]ボタンをクリックするとコンフィグレーションファイルが書き出される
- エディタで書き出したコンフィグレーションファイルを編集する
- [ファイルからインポートして書き込み]ボタンをクリックして書き換えたコンフィグレーションファイルを読み込む
ダイナミックDNS機能を無効にする
declare root
{
declare DDnsClient
{
bool Disabled true
}
}
IPアドレス存在確認ポーリングパケットを停止する
ルータのログなどに「送信元が “172.31.0.0/16” の不正な ARP 要求パケットを受け取った」的な警告メッセージを表示させたくない
declare root
{
declare VirtualHUB
{
declare VPN
{
declare Option
{
bool NoArpPolling true
}
}
}
}
竹内電設は、大阪府下を中心に中小規模の組織がITシステムを効果的に活用するための、お手伝いをさせていただいております
© 2023 竹内電設; all rights reserved.