Ubuntu Server 20.04-3のインストールからSoftEther設定まで

コンピューター

ちょこちょことサーバーの設定を進めてきました。一度、これまでの流れで通して作成してみます。

  1. Ubuntu Server 20.04.3 LTSを入れてみる
  2. Ubuntu Server 20.04.03の仮想マシン用にブリッジを作成
  3. UbuntuにSoftEther VPNをインストールする
  4. SoftEtherの拠点間接続作成

VPN用の仮想マシン設定まで

インストールメディア作成

インターネット上からWindows PCへダウンロードしたRufusで作業します。インストール不要なポータブル版(rufus-3.17p.exe等、実行可能な状態でダウンロードされるファイル)のほうが便利に感じます。

Rufus - 起動可能なUSBドライブを簡単に作成できます
Rufus: Create bootable USB drives the easy way
Get Ubuntu Server | Download | Ubuntu
Get Ubuntu Server one of three ways; by using Multipass on your desktop, using MAAS to provision machines in your data centre or installing it directly on a ser...

ブートの種類のところで、ダウンロードしたisoファイルを選択し、書き込みします。推奨設定で大抵大丈夫なはず。

ホストマシンへのUbuntu Serverインストール

コンピューター(やBIOS設定)によって、起動時に割り込むためのキーが異なります。

私の手元のコンピューターだと、

  1. Lenovo … BIOSメニュー 「F1」、Boot選択「F12」(機種によってはFn押下必要)
  2. Mouse … BIOSメニュー「F2」、Boot選択「F7」or「F11」or「F12」
  3. VAIO … 機種によるらしい
  4. Supermicro … BIOSメニュー(X8)「F4」or「Del」or 「F11」、BIOSメニュー(X9)「F4」or「ESC + “-“」(リモート)、Boot選択「F11」?

です。わからない場合、Boot画面が表示されている間に「ESC」、「DEL」、「F1~12」をひたすら連打すると何か起こります・・・。

サーバーのインストール時にSSHサーバーをインストールし、証明書をクラウド(GitHub)から読み込む設定を行います。GitHubへは事前にSSHキーを登録しておきます。登録されたキーを選ぶことはできず、全部読み込むようです。

SSHサーバーインストール時にGitHubから公開鍵読み取り

一番下の「Allow password authentication over SSH」をチェックしないと、/etc/ssh/sshd_configで、SSHによるリモートログインの際、ユーザー名とパスワードによるログインが不許可になります。他の設定もいじらないといけないようなのでここではどちらでもよいかも。

SSHでWindowsPCからログイン

サーバーマシンが再起動したら、ログインするか、ルーター等の接続記録からサーバーマシンのIPアドレスを確認し、SSHを使ってログインします。今回は、非常に便利で使いやすい「MobaXTerm」を使います。ターミナルからデスクトップ画面を開くまではできませんが、ターミナルからGUIアプリを起動できるので使いやすいです。(アプリの起動は遅いです)

(マシン上でログインしてもよいですが、記録を取ったりWindowsマシン上でコピペしたりしながら実行するにはSSH経由が良いです。)

Windowsで作成したファイルの改行コード置換

厄介すぎる・・。ぱっと見ではわからないのに、ファイルが見つからないエラーや、おかしなファイル名で実行されたりいろいろ不具合がたくさん。

MobaXTermのエディターの場合はメニュー上からコーディング変更できました。Windows上では、PowerShellで以下を入れるとカレントディレクトリ以下のファイルを変換してくれます。

Get-ChildItem -Recurse -File | ForEach-Object {((Get-Content $_.FullName -Raw) -replace "`r`n","`n") | Set-Content $_.FullName}
Windowsで作ったシェルスクリプトをLinuxでちゃんと使えるようにするメモ(改行コードの修正) - Qiita
きっかけ Vagrantでローカル環境を作るにあたり、諸々のコマンドをシェルスクリプトにしておけば、そういう知識に疎い、例えばフロントエンドの方でもシェル渡すだけで環境構築出来るようにしよう思っていました。 ※Ansibleと...
WindowsでCRLFからLFに一括変換する - Qiita
windowsでpowershellかgit-bashを使ってCRLFからLFに一括変換する方法を紹介しています。 (追記)gitで管理されている場合、もっと簡単な方法がありました。 発端 Windowsでdockerのコンテナ...

仮想マシン作成

MobaXTermを利用して、ホストマシンに接続して「virt-manager」を起動します。(GUIがホストマシンにインストールされていないと動きません)

sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get install -y ubuntu-desktop virt-manager
wget https://releases.ubuntu.com/20.04.3/ubuntu-20.04.3-live-server-amd64.iso 
virt-manager

ユーザーのホームディレクトリにwgetを利用してダウンロードしたUbuntu ServerのISOイメージを使い、GUIのvirt-managerから仮想マシンを作ります。コマンドラインでやったほうが自動化できますが、GUIのほうがやりやすい、気がします。

仮想マシン・ホストマシンのネットワーク設定

Ubuntu Server 20.04.03の仮想マシン用にブリッジを作成
かなり前に一度設定しているのですが、再度調べながら確認していきます。

ホストマシン側の/etc/netplan/99.yamlに

network:
  ethernets:
    eno1:
      dhcp4: no
      dhcp6: no
      addresses: [192.168.68.52/22]
      gateway4: 192.168.68.1
      nameservers:
        addresses: [1.1.1.1, 8.8.8.8]
      optional: true
  bridges:
    br0:
      interfaces: [ eno1 ]
      addresses: [192.168.68.100/22]
      gateway4: 192.168.68.1
      dhcp4: true
      nameservers:
        addresses: [1.1.1.1, 8.8.8.8]
  version: 2

を設定しました。(利用環境で割り当てられたプライベートアドレス領域が192.168.68.x/22で52はたまたまです。

クライアント側の設定は、利用ネットワークの設定のみで後はDHCP任せにして、

2: enp1s0: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1986 qdisc fq_codel state UP group default qlen 1000
link/ether **:**:**:**:**:** brd ff:ff:ff:ff:ff:ff
inet 192.168.68.68/22 brd 192.168.71.255 scope global dynamic enp1s0
valid_lft 5215sec preferred_lft 5215sec
inet6 ****::****:**:****:****/64 scope link
valid_lft forever preferred_lft forever

一部伏字ですが、無事にホストマシンとは別のプライベートIPを取得できました。

SoftEtherのインストール

以前みたページを参考に、ソースコードからのビルドも含めて行いました。

UbuntuにSoftEther VPNをインストールする
Ubuntu 20.04.3をインストールしましたが、ここにVPNシステムのSoftEtherをインストールしようと思います。個人の作ったリポジトリからインストールすれば簡単なようですが、ちょっと怖いので自分で入れてみようと思います。 ...
sudo apt-get update
sudo apt-get upgrade -y

#gcc makeダウンロード
sudo apt-get install -y gcc make

#配布版ダウンロードしmake
#解凍するとvpnserverディレクトリへ
wget https://github.com/SoftEtherVPN/SoftEtherVPN_Stable/releases/download/v4.38-9760-rtm/softether-vpnserver-v4.38-9760-rtm-2021.08.17-linux-x64-64bit.tar.gz
tar -xvf softether-vpnserver-v4.38-9760-rtm-2021.08.17-linux-x64-64bit.tar.gz
cd ~/vpnserver
make

#ビルド用ツールダウンロード
sudo apt-get install -y build-essential
sudo apt-get install -y libreadline-dev libssl-dev libncurses-dev libz-dev 

#ソースコードダウンロード
#解凍するとv4.38-9760ディレクトリへ
wget https://github.com/SoftEtherVPN/SoftEtherVPN_Stable/releases/download/v4.38-9760-rtm/softether-src-v4.38-9760-rtm.tar.gz
tar -xvf softether-src-v4.38-9760-rtm.tar.gz

v4.38-9760
./configure
#makeはソースコードを編集してから

v4.38-9760がソースコード側が解凍された位置です。この中でsrc/Cedar/Server.cを編集して日本で機能制限している部分を書き換えてビルドします。

cd v4.38-9760
make
cd bin/vpnserver
mv * ~/vpnserver
cd ~
sudo mv vpnserver/ /usr/local
cd /usr/local/vpnserver
sudo chmod 600 *
sudo chmod 700 vpnserver vpncmd

「ソースコードからのインストール」ではない方もビルドしてローカルユーザーのホームディレクトリ下に置かれたままなので、インストール先とする/usr/localへ移動します。その前に、ソースコードをいじったほうのvpnserverの実行ファイルを移動しておきます。

ソースコードからビルドしたほうは、vpnserver、vpncmd、vpnbridge、vpnclientの4つのディレクトリにそれぞれ必要なものが入るので、今回はvpnserverディレクトリをコピーします。(いったんサービスの開始後だったら、systemctl stop vpnserver.serviceをしないと上書き不可)

検索してもよくわからないエラーが出ることが結構ありました。

$ make
cp src/bin/BuiltHamcoreFiles/unix/hamcore.se2 bin/vpnclient/hamcore.se2
cp: cannot create regular file ‘bin/vpnclient/hamcore.se2’: No such file or directory
make: *** [Makefile:383: bin/vpnclient/hamcore.se2] Error 1

~/v4.38-9760/tmpを削除(rm -r)したら出なくなりました。

権限を設定したら、vpnserverをサービス登録します。

ファイル名:/etc/systemd/system/vpnserver.service

# /etc/systemd/system/vpnserver.service
[Unit]
Description=SoftEther VPN Server
After=network.target network-online.target
[Service]
ExecStart=/usr/local/vpnserver/vpnserver start
ExecStop=/usr/local/vpnserver/vpnserver stop
Type=forking
RestartSec=3s
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable vpnserver.service
sudo systemctl start vpnserver.service

これで、VPNサーバーが立ち上がりました。

WindowsのVPNサーバーマネージャーから設定

前回と同じく、Windowsマシンからサーバーの設定を行いました。

VPNAzureに設定

テスト段階で、通常のアクセスではルーターにはじかれて接続できなかったため、今回はVPNAzureの機能を用いたところ、すんなり接続できました。

localhostのAdministrator設定??

カスケード接続まで試そうとしたところ、前回は生じなかったWindowsの問題が現れました。普段、Windows 10 HomeをAdministratorは設定せずに利用しているのですが、今回はなぜかAdministratorパスワードを求められました・・・。なぜか不明です。

前回設定した時には問題にならなかったのですが、Windows 11へのアップグレード案内が来たのが原因か、他の何かかもしれません。

PowerShellもしくはコマンドラインから可能なようです。

Windows 10 で Administrator ユーザーを有効にする方法
1. はじめにWindows 10 では、Administrator アカウントがデフォルトで無効になっています。しかし、普段使っているアカウントに問題が起きた場合などに備えて、Administrator を有効にしておくと便利です。いざという時は、Administrator でサインインして問題を解決することができる...

パスワードを設定してみたものの、アクセス拒否となってしまいました。

WindowsのLocalhostへの接続ですが、最初はWindowsのAdministaratorパスワードを要求しているのではないようです。

(結果的にする必要があったのかわかりませんが)Bridgeをアンインストールしてディレクトリを削除し、再度設定したところ、新しいパスワードの設定画面にたどり着きました。

サーバー管理モードとして、管理パスワードを空でOKを押したところ進めました

ブリッジのみインストールされたlocalhostに接続すると、拠点間接続VPNの子ノード側の設定のみが選べる状態のセットアップが表示されます。

設定画面から、ブリッジ先のNICを設定し、接続先としてSoftEther Serverをインストールした仮想マシンを設定しました。接続用ユーザーとして、vpnuserなどを指定しますが、ビルドし直したためパスワード認証だけではなく公開鍵認証も利用できるようになりました。

サーバー証明書は・・・?

サーバー証明書の検証を設定しようとしたらはまりました。

サーバーに入れたはずの証明書ではない、*.vpnazure.netの証明書が提示されています。softether.netでDDNSを利用しているし、VPN Azureの機能的にも仕方ないかもしれません。このワイルドカード証明書を信頼する証明書にセットしておくしかなさそうです。

ただ、この証明書は検索してみるとちょこちょこと有効期限切れしてユーザーからの更新リクエストで更新されているようです。

拠点間VPN接続の設定

以前と同じように拠点間VPN接続を設定します。接続方法は、VPN Bridgeを入れたコンピューターでlocalhostサーバーへ接続する設定を作ってSoftEther VPNサーバーマネージャーでlocalhostに接続し、

  1. 「ローカルブリッジの設定」で「Bridge」からクライアント側へ接続するときに使用する物理NICへのブリッジを設定
  2. 「仮想HUBの管理」で「カスケード接続の管理」内にSoftEther VPNサーバー(メイン拠点側)への接続設定を行い「オンライン」にする

だけで設定した物理NIC側はVPNサーバーへ接続したネットワークになります。実際に使用する際には、ミニPCを使用したいと思います。何となく、Linux入りのスティックPCほうが良さそうな気もするのですが、Windows入りのミニPCを購入しました。

Amazon.co.jp: ミニPC Quieter2 Windows 10 Pro搭載 Celeron J4125 Processor クアッドコアプロセッサー 8GB DDRメモリー 128GB eMMCストレージ USB3.0 4K HD Bluetooth 4.2 2.4G/5GWiFi対応 自動電源オン ファンレス 0dB 超軽量 省スペース 小型PC ミニパソコン : パソコン・周辺機器
Amazon.co.jp: ミニPC Quieter2 Windows 10 Pro搭載 Celeron J4125 Processor クアッドコアプロセッサー 8GB DDRメモリー 128GB eMMCストレージ USB3.0 4K HD Bluetooth 4.2 2.4G/5GWiFi対応 自動電源オン ファ...

思ったよりも大きくてガッチリしたPCでした。もう少し小さいのにすればよかった・・・・。これを接続する側のPCのUSB給電ポートにつなぎ、無線LANでインターネット接続し有線LANにVPNを流して使おうと思います。

コメント

タイトルとURLをコピーしました