0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Ubuntu24.04を使ってWireguardの拠点間VPNを構築する

Last updated at Posted at 2024-12-04

環境

・サーバ
Intel NUC
UbuntuDesktop 24.04LTS

・クライアント
iPhone15 Pro

VPNの構築

今回はpivpnを使ってVPNサーバを立ち上げたあと、スマホをVPNサーバに接続する設定を行う。

IPアドレスの固定

まずVPNサーバーのIPアドレスを固定する。
あとからpivpn内からやる方法もあるが、今回はあらかじめ設定からIPアドレスを設定した。
UbuntuServerなどGUIが使えない環境で作業する場合、IPアドレスの設定が結構めんどいためこの項はスキップしてもOK。その場合あとから行うpivpnの設定でIPアドレスを固定するか否かと、固定したいIPアドレスを聞かれることになる。

SSHの設定

このあとSSHを使って設定を行いたかったので、Openssh‐serverを導入した。

sudo apt install openssh-server

以降の作業はWindowsからSSHを使って実施
きちんとネットワークが確立されていれば、WindowsPowerShellから、

ssh ubuntuのユーザ名@サーバのIPアドレス

でアクセスできる。

ルーターのポートフォワーディング設定

ルータでポートフォワーディングの設定を行った。
VPNのデフォルトののポートは443番だが、セキュリティの観点から別のポートとした。
外部の特定のポートあての通信が先ほど設定したUbuntuのIPアドレスの特定のポートに転送されるように設定する。

DDNS Nowでサービスの登録

プロバイダの固定IPサービスを申し込んでいない場合、ルータのグローバルIPアドレスが定期的に変わってしまう。グローバルIPアドレスと特定のドメインを紐づけるDDNSサービスに登録を行う。DDNS Nowは完全無料のサービスでおすすめ。
ここで取得したドメインとパスワードは後で使う。
DDNS Now

pivpnをインストールしてWireguardの設定

本来RaspberryPI向けのVPN設定アプリだが、IntelのNUCでも問題なく動作した。
これを使うことで本来CUIでかなり面倒な設定がGUI風の画面で簡単に済んでしまう。

curlを導入したあと、pivpnをインストールする。

sudo apt install curl
curl -L https://install.pivpn.io | bash

続けていくとGUI風の画面が出てくるのでしたがって進めていく。私の行った設定は以下の通り。

  • IPv6のルーティングはYesを選択
  • VPNはWireguardを選択
  • ポートはルータでポートフォワーディングを行ったポートに設定
  • DNSプロバイダーは今回は完全にローカルで完結するためにPiVPN-is-local-DNSを選択。Googleなどでもいいかも。
  • DNSの選択でDNS Entryを選択し、DDNS Nowで取得したドメインを入力
  • セキュリティアップデートはYesを選択

全設定終了後に再起動を勧められるので再起動する。

設定は/etc/pivpn/wireguard/setupVars.conf中に記載されており、それらをエディタで編集することであとからでも設定を変更できる。
以下のコマンドで設定情報が確認できる。特にpivpnHOSTの欄がIPアドレスではなく取得したドメインになっているか確認する。

cat /etc/pivpn/wireguard/setupVars.conf

設定ファイルを編集した場合は、以下のコマンドでビルドする

pivpn -d

VPNクライアントの設定

あらかじめスマホにWireguardのスマホアプリをダウンロードしておく。
iPhone
Android

pivpnを使用するとクライアントの設定が以下の2つのコマンドで完結する。すごく簡単。
まずクライアントを作成する。クライアントの名前を決めるように言われるので、自分が分かるように名前をつけてEnterを押せばクライアントが作成される。

pivpn add

以下のコマンドでクライアントのリストが表示されるため、リスト中のクライアントの番号を入力する。設定用QRコードが表示されるため、それをWiregurardのスマホアプリで読み込む。すると自動でVPN設定が追加される。

pivpn -qr

ここまででVPN設定自体は完了なので、きちんと接続ができるか確認する。
クライアント側の端末のWifiを切ってLTE接続にし、VPNをオンにしてローカルのネットワークにアクセスできればきちんと接続できていることが確認できる。

DDNS Nowの自動更新設定

グローバルIPアドレスが変更されたときにドメインに紐づけたIPアドレスを自動で更新するように設定する。
DDNS Nowには複数の方法があるが、今回のサーバはubuntuなので、cronを使った方法を使う。参考
以下のコマンドでcronの設定ファイルを開く

crontab -e

エディタは好きなものを選ぶ。
開いたファイルの末尾に以下の設定を加える。

0-59 * * * * wget -O DDNSNow_update.log "https://f5.si/update.php?domain=ユーザ名&password=パスワードもしくはAPIトークン"

この設定により、一分毎にグローバルIPアドレスを確認し、IPアドレスの変更があればドメインとの紐づけを更新できる。
以下のコマンドできちんと更新が行えているか確認できる

service cron status

参考文献

ラズパイとPiVPNで、手軽にVPNサーバーを手に入れる
ネットワークに外出先からアクセス! ラズパイ(Raspberry Pi)とWireguardで作るVPNサーバ
ubuntuでcronを動かす方法

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?