🍡

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

2022/05/24に公開約4,700字

目的と前提

すでにどこかに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クライアントへの接続設定と同様に接続設定を行う。
設定完了後状態オンライン(接続済み)になっていれば問題ない。

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

おわり

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

GitHubで編集を提案

Discussion

ログインするとコメントできます