LoginSignup
0
0

More than 1 year has passed since last update.

【備忘録】Tinker Board SをSoftEther VPNを入れてVPNサーバーにする

Last updated at Posted at 2023-01-11

クリーンインストールし直すたびにやり方を忘れるので手順を自分用にメモ。

発売当初はRaspberry Pi 3より高性能で実用的だったTinker Board。後継機も出て久しい2023年にもなるとサーバー用途のSBCとしてはやや見劣りするけど、まだまだ使えると信じる。

TODO 参考文献の整理

Tinker BoardにOSをインストールする

インストールはWindowsで、最新のOSのzipをダウンロードしてEtcherでmicroSDカードに書き込むだけ。Tinker Board SはeMMC搭載でこちらにもOSをインストール出来るけど、めんどいのでSDカードで。

執筆時点でのTinker Board Sの最新Linux OSはTinker Board S Debian 10 V3.0.11

初期セットアップ

ディスプレイとキーボードを繋いで直接操作する。

TinkerOSにはsshがインストール済みなので最初からSSH接続でもいいはず。ちなみにデフォルトのホスト名はlinaro-alip(Debian 10の場合。Debian 9はtinkerboard

前準備

アップデートチェック

おまじない

$ sudo apt upadate
$ sudo apt upgrade

CLI化

サーバー用途なのでGUI→CLIモードで起動するように変更。

lightdmとかGUI関連の不要なパッケージも削除したほうがいいと思うけどとりあえずこれだけ。

$ sudo systemctl set-default multi-user.target

タイムゾーン設定(任意)

$ timedatectl set-timezone Asia/Tokyo

IPアドレスの固定、ブリッジ設定

/etc/network/interfacesを編集し、IPアドレスを固定する。

ブリッジを使いたいので先にbridge-utilsをインストールする。

$ sudo apt install bridge-utils

br0の設定を行い、IPアドレスを固定する。

$ sudo vi /etc/network/interfaces
# interfaces(5) file used by ifup(8) and ifdown(8)
# Include files from /etc/network/interfaces.d:
source-directory /etc/network/interfaces.d

#ここから追記
# 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.10.3   #IPアドレス
    netmask 255.255.255.0  #ネットマスク
    gateway 192.168.10.1   #デフォルトゲートウェイ
    bridge_ports eth0

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

※ IPアドレスは環境によって適時合わせる。

(「その他」はなんで設定したのか忘れた……要らんかも)

再起動してIPアドレスが固定されているか確認

$ sudo reboot
$ sudo ifconfig

ポートフォワード(ルーターの設定)

UDPの500, 4500, 1194(OpenVPNを使う場合)を固定したTinker BoardのIPアドレスに対しマッピングし、外部から接続できるようにしておく。

SoftEther VPN ServerをTinker Boardにインストールする

ダウンロードからインストールまで

Linux ARM EABI (32bit)のtar.gzをダウンロードする(※Tinker BoardのRockchip RK3288はARMv7-Aの32bit CPU)

アーカイブを展開するとvpnserverというディレクトリができるので中に入ってmakeする。vpnserverディレクトリごと/usr/localに配置してパーミッションを設定する。このとき、所有権をrootにしてrootで実行するようにしておかないとローカルブリッジ機能が使えないらしい。

SoftEther VPN Serverをアップデートするときも同じ操作で上書きインストールでOK。

20230111030812.png

公式ドキュメント通りだけど、一応コマンドだけ。URLは適時変更。

$ cd Downloads
$ wget https://github.com/SoftEtherVPN/SoftEtherVPN_Stable/releases/download/v4.41-9782-beta/softether-vpnserver-v4.41-9782-beta-2022.11.17-linux-arm_eabi-32bit.tar.gz
$ tar xzvf softether-vpnserver-v4.41-9782-beta-2022.11.17-linux-arm_eabi-32bit.tar.gz
$ cd vpnserver/
$ make
$ cd ..
$ sudo mv vpnserver /usr/local
$ sudo su -
# chown -R root:root /usr/local/vpnserver/
# cd /usr/local/vpnserver/
# chmod 600 *
# chmod 700 vpncmd
# chmod 700 vpnserver

サービスの登録

起動スクリプトを作成してvpnserverがTinker Board起動時に自動起動するようにする。

起動スクリプト/etc/init.d/vpnserverの内容は公式ドキュメントではなく下記のブログからコピってきたほうが良さげ

# vi /etc/init.d/vpnserver

※ 公式ドキュメントの起動スクリプトはchkconfigを使うことを前提としている。 まずこの部分をinsservで設定出来るようにLSB記法にする。ローカルブリッジの利用に必要な処理も記述。SoftEther VPN側で作ったtun/tapモジュールを認識できるようになっているらしい。よく分からん。

スクリプトファイルを作成して権限を設定したら以下の通りに登録する。
rkisp_3A.shがどうとかいくつか警告が出るけどvpnserverには関係ないので無視。

# chmod 755 /etc/init.d/vpnserver
# insserv -d vpnserver

登録できたことを確認する

# systemctl is-enabled vpnserver.service
vpnserver.service is not a native service, redirecting to systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install is-enabled vpnserver
enabled

Tinker Boardを再起動してサービスが自動起動することを確認する

# sudo reboot
$ systemctl status vpnserver.service | cat
● vpnserver.service - LSB: SoftEther VPN RTM
   Loaded: loaded (/etc/init.d/vpnserver; generated)
   Active: active (running) since Mon 2023-01-09 16:49:37 JST; 27s ago

Active: active (running)... となるはず。

SoftEther VPNのインストール(Windows)

VPNサーバーの管理はWindowsやMac OS向けの管理ツールを使ったほうが圧倒的に楽なのでインストールする。

image.png

説明省略

VPNサーバーの設定(管理ツール経由)

説明省略

image.png

ローカルブリッジの設定

ローカルブリッジが最初からある場合は「ローカルブリッジの削除(D)」で削除する。

「新しい tap デバイスとのブリッジ接続(T)」を選択し、「新しい tap デバイス名(V)」に適当な名前を入力し、「ローカルブリッジを追加(A)」を押下する。

20230111024816.png

20230111024912.png

Tinker Boardを再起動し、ifconfigでローカルブリッジ(tap_vlan)が一覧に出てくることを確認する。

$ sudo ifconfig

ユーザーの追加とか

サーバー管理画面にて「仮想HUBの管理(A)」を押下。

image.png

「新規作成」でユーザーを追加する。ユーザーはパスワード認証にする(証明書認証と外部サーバー認証はオープンソース版SoftEther VPNでは使用不可)

image.png

image.png

L2TP/IPsec

L2TP/IPsec接続を使いたい場合、「L2TP サーバー機能を有効にする (L2TP over IPsec)」にチェックする。事前共有鍵に任意の文字列を設定しておく。

Android 12以降はL2TP/IPsecが使えないので、Android 12以降でしか使わないのであればこの設定は不要。

image.png

OpenVPN設定

Android 12以降で使いたい場合、こちらを使う(2023年1月現在。IKEv2がSoftEther VPNで使えるようになればまた変わってくるかもね)

サーバー管理画面から「OpenVPN / MS-SSTP 設定」ボタンを押下して設定画面を開き「OpenVPN サーバー機能を有効にする」をチェック。

image.png

image.png

OpenVPNクライアント用 設定ファイルの作成

「OpenVPN クライアント用のサンプル設定ファイルを生成(C)」をクリックし、zipファイルを保存する。

image.png

zipファイル内にある「~access_l3.ovpn」がOpenVPNの設定ファイルになるので、Androidで使えるようにGoogleドライブなどに保存しておく。

image.png

OpenVPNインストール・設定(Android)

Playストアからクライアントアプリをダウンロードしてインストール

作成した設定ファイルを読み込ませる

image.png

ユーザー名を入力。Save passwordでパスワードを保存しておくとパスワード入力の手間が省ける。

image.png

接続を試みるとクライアント証明書を要求するダイアログが出るが、気にせず「CONTINUE」を押す。

image.png

無事接続できたら成功。お疲れ様でした、未来の自分

image.png

クライアント証明書を要求される件について

ただのパスワード認証で証明書は不要だが、そんなのお構いなしに接続するたびクライアント証明書を要求してくる。設定ファイルのどこかが間違っているのだろうか。この辺りはおいおい調べていく。

証明書無しのまま「CONTINUE」を押しても普通に接続できるので特に問題はないが、接続時にいちいちメッセージが出てきて鬱陶しい。

仮の対策として、適当にルート証明書を発行して設定ファイルの中に書いておくことで抑制することにした。他に方法があるなら知りたい。

ルート証明書の発行

管理マネージャのトップ画面から「証明書作成ツール(R)」をクリック。

image.png

名前を入力して「OK」で次へ進む。

image.png

「X509証明書ファイル(.CER)と秘密鍵ファイル(.KEY)の組み合わせとして保存する(X)」をクリックして「OK」

image.png

.cerファイルと.keyファイルを保存する。

image.png

先程の「~access_l3.ovpn」ファイルの末尾に記述欄があるので、コメントアウト;を削除した上で、.cerファイルの中身と.keyファイルの中身をコピペしてきて.ovpnファイルを保存する。

###############################################################################
# Client certificate and key.
# 
# A pair of client certificate and private key is required in case you want to
# use the certificate authentication.
# 
# To enable it, uncomment the lines below.
# Paste your certificate in the <cert> block and the key in the <key> one.

<cert>
-----BEGIN CERTIFICATE-----
(cerファイルの中身)
-----END CERTIFICATE-----
</cert>

<key>
-----BEGIN RSA PRIVATE KEY-----
(keyファイルの中身)
-----END RSA PRIVATE KEY-----
</key>

OpenVPNクライアントでプロファイルを設定し直して再接続。

その他

TODO Tinker BoardのSSHを公開鍵認証するように変更するとかやっておいたほうがいいかもね

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0