Ubuntu22.04のRaspberryPi4にSoftether VPNとDHCPとDNSをセットアップする
目的と前提
すでにどこかにSoftetherのサーバーが構築されており、(参考記事)windwosのクライアント等からは通常に通信できる状態であることを前提とする。
この記事ではRaspberry Pi 4 model BにUbuntu Desktop 22.04をインストールし802.1x認証、Softether、isc-dhcp-server、dnsmasqをセットアップする。
構成
今回の構築は以下の図の通り行う。
L1スイッチ、というのは誤字ではない。
実際にL1で物理的に経路を切り替えられるものを使っている。参考→Amazon
Ubuntuのセットアップ
ラズパイ公式サイトよりRaspberry Pi Imagerをダウンロードしインストールする。
Other... → Ubuntu → Ubuntu Desktop 22.04を選択する。
802.1x認証を行う必要がないのならUbuntu serverでも良いと思う。
Ubuntuのインストール
特記すべき事項なし。画面の指示通り実施してとくに問題ない。
このとき、ラズパイに元から付いているNIC(eth0)とVPN接続したい回線を接続する。
802.1x認証
Ubuntuの設定アプリを起動しNetwork
を選択する。
Ethernet
のオン・オフボタンの右側にある歯車アイコンをクリックする。
画像の通りに情報を入力する。
参考記事
※私は鹿児島大の人間ではありません。この接続に関する手順で不明なことがあった場合にも鹿児島大への問い合わせは行わないようにお願いします。
鹿児島大学情報基盤統括センター 1X認証ネット利用手順
SSHとVNC
802.1x認証が終わったタイミングでNICを1枚USB3.0ポートに刺す。(enx18ece79662c7)
ここで刺したNICはこの後も管理用NICとして利用するためNIC名をnmcli d
やip 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クライアントへの接続設定と同様に接続設定を行う。
設定完了後状態
がオンライン(接続済み)
になっていれば問題ない。
isc-dhcp-server
DHCPをisc-dhcp-server
で設定する。
apt -y install isc-dhcp-server
設定ファイルを編集する。主な変更点のみ抜粋
vim /etc/dhcp/dhcpd.conf
# 10行目、ラズパイのドメイン名、オラオラで良いので宣言
option domain-name "honahuku.local";
# 11行目、ネームサーバーをホスト名またはIPアドレスで指定
option domain-name-servers 192.168.30.1, 1.1.1.1, 8.8.8.8;
# 24行目、コメント解除
authoritative;
# ネットワークアドレスとサブネットマスク指定
subnet 192.168.30.0 netmask 255.255.255.0 {
# デフォルトゲートウェイ指定
option routers 192.168.30.1;
# サブネットマスク指定
option subnet-mask 255.255.255.0;
# IPアドレスの範囲指定
range dynamic-bootp 192.168.30.100 192.168.30.254;
}
# ホスト名
host honahuku-pi {
# NICのMACアドレス
hardware ethernet 18:ec:e7:95:47:57;
# 自分のIPアドレス
fixed-address 192.168.30.1;
}
Ubuntu 20.04 LTS : DHCP サーバーの設定 : Server World
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
dnsmasq
次のサイトの通りにセットアップする。
Ubuntu 20.04 LTS : Dnsmasq : インストール : Server World
おわり
この時点で設定はすべて完了しているはずだ。
上手く動かないなら一度再起動すると良いかもしれない。
Discussion