🍡

Ubuntu22.04のRaspberryPi4にSoftether VPNとDHCPとDNSをセットアップする

2022/05/24に公開

目的と前提

すでにどこかにSoftetherのサーバーが構築されており、(参考記事)windwosのクライアント等からは通常に通信できる状態であることを前提とする。

この記事ではRaspberry Pi 4 model BにUbuntu Desktop 22.04をインストールし802.1x認証、Softether、isc-dhcp-server、dnsmasqをセットアップする。

構成

今回の構築は以下の図の通り行う。
v2_寮自室ネットワーク

L1スイッチ、というのは誤字ではない。
実際にL1で物理的に経路を切り替えられるものを使っている。参考→Amazon

Ubuntuのセットアップ

ラズパイ公式サイトよりRaspberry Pi Imagerをダウンロードしインストールする。
Other... → Ubuntu → Ubuntu Desktop 22.04を選択する。
802.1x認証を行う必要がないのならUbuntu serverでも良いと思う。
image
image
image

Ubuntuのインストール

特記すべき事項なし。画面の指示通り実施してとくに問題ない。
このとき、ラズパイに元から付いているNIC(eth0)とVPN接続したい回線を接続する。

802.1x認証

Ubuntuの設定アプリを起動しNetworkを選択する。
Ethernetのオン・オフボタンの右側にある歯車アイコンをクリックする。
Screenshot from 2022-05-24 11-37-39

画像の通りに情報を入力する。
Screenshot from 2022-05-24 11-38-39

参考記事

※私は鹿児島大の人間ではありません。この接続に関する手順で不明なことがあった場合にも鹿児島大への問い合わせは行わないようにお願いします。
鹿児島大学情報基盤統括センター 1X認証ネット利用手順

SSHとVNC

802.1x認証が終わったタイミングでNICを1枚USB3.0ポートに刺す。(enx18ece79662c7)
ここで刺したNICはこの後も管理用NICとして利用するためNIC名をnmcli dip aなどで覚えておく。
もともと刺さっていたLANは引き続きVPN接続したい回線に接続しておく。

aptのリポジトリについて

国内のミラーサーバーではarm用にビルドされたファイルを置いていない可能性がある。
私の環境ではいくつかリポジトリを試したが404エラーが出て進めなかったのでもとのubuntu jpリポジトリに戻した。

Softether

ラズパイはx86_64ではなくARM_64アーキテクチャーなので注意

Softetherのダウンロードとインストールまで

apt update
apt upgrade -y
apt install -y build-essential libssl-dev g++ openssl libpthread-stubs0-dev dnsmasq dnsutils curl vim htop net-tools
wget https://github.com/SoftEtherVPN/SoftEtherVPN_Stable/releases/download/v4.38-9760-rtm/softether-vpnserver-v4.38-9760-rtm-2021.08.17-linux-arm64-64bit.tar.gz
tar xvf softether-vpnserver*
cd vpnserver
make
chmod 600 *
chmod 700 vpncmd
chmod 700 vpnserver
cd
\cp -r -f ./vpnserver/ /usr/local/
\rm -rf ./vpnserver
ls -lra /usr/local/vpnserver
rm -rf softether-vpnserver*
/usr/local/vpnserver/vpnserver start

Softether用サービスを定義

/lib/systemd/system/vpnserver.serviceファイルを新規作成し以下の内容をコピペ

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

[Service]
Type=forking
ExecStart=/usr/local/vpnserver/vpnserver start
ExecStop=/usr/local/vpnserver/vpnserver stop
Restart=always

[Install]
WantedBy=multi-user.target

この後の設定はwinのSE-VPN サーバー管理 (ツール)を使うことでスムーズに設定することができる。

パスワード設定と仮想HUB作成

サーバー管理マネージャーでサーバーに接続し、サーバーのパスワードを設定する。
その後仮想HUBを新規作成し仮想HUBのパスワードも設定する。

3本目のNICを接続

VPN接続済みの通信が流れる3本目のNICをUSB3.0ポートに接続する。(enx18ece7954757)
nmtuiコマンド等を使い、新しく追加されたNIC用のプロファイルを削除する。

ローカルブリッジ設定

サーバー管理マネージャー起動直後左下のローカルブリッジ設定新しいローカルブリッジの定義仮想HUBにさきほど作成した仮想HUBを選択
作成する種類物理的な既存のLANカードとのブリッジ接続を選択し、ブリッジ先のEthernetデバイスに3本目のNICを選択する。
右下のローカルブリッジを追加を選択し画面の指示通り進む。

カスケード接続

仮想HUBの管理を選択し、左下カスケード接続の管理を選択、左下新規作成を選択
winクライアントへの接続設定と同様に接続設定を行う。
設定完了後状態オンライン(接続済み)になっていれば問題ない。

logの出力先変更

isc-dhcp-serverのlogはrsyslogに出力される。
ただこれでは非常にログが見ずらいので/var/log/dhcpd.logにdhcpのログを出力することにする。

vim /etc/rsyslog.conf
# 末尾に追記

#dhcp_log
:syslogtag, contains, "dhcpd" /var/log/dhcpd.log
& stop

おわり

この時点で設定はすべて完了しているはずだ。
上手く動かないなら一度再起動すると良いかもしれない。

20230702追記

DHCPとdnsmasqの設定は接続先VPNサーバーが提供するためここで設定する必要はない

Discussion