#目標
RaspberryPiを使って外出先から自宅のLANに接続できるようにVPNのサーバーを作る。nuro光を使っており、めったにグローバルIPアドレスが変更されないのでグローバルIPアドレスの固定化は行わない。クライアントはWindowsとiOSを想定しますが、macOSでもubuntuでも設定ファイルの読み込み以外は特に違いはないと思います。ルーター側でポートマッピング(ポート開放)をする必要があります。その方法についてはルーターによって異なるためサポートできません。方法がわかっている方のみ以下の手順でwireguardをセットアップしてください。
#手順
##インストール
$ sudo apt update
$ sudo apt upgrade
# RaspberryPiの場合
$ curl -L https://install.pivpn.io | bash
# debian系の場合
$ sudo apt install wireguard
##設定に必要なパラメータの値を取得する
###認証鍵を作る
####サーバー用のカギを作る
# 秘密鍵を作る
$ wg genkey | sudo tee /etc/wireguard/server.key
$ sudo chmod 600 /etc/wireguard/server.key
# 秘密鍵から公開鍵を生成して保存する。
$ sudo cat /etc/wireguard/server.key | wg pubkey | sudo tee /etc/wireguard/server.pub
$ sudo chmod 600 /etc/wireguard/server.pub
####クライアント用のカギを作る
# 秘密鍵を作る
$ wg genkey | sudo tee /etc/wireguard/client.key
$ sudo chmod 600 /etc/wireguard/client.key
# 秘密鍵から公開鍵を生成して保存する。
$ sudo cat /etc/wireguard/server.key | wg pubkey | sudo tee /etc/wireguard/client.pub
$ sudo chmod 600 /etc/wireguard/client.pub
###サーバー側のグローバルipアドレスを確認する
$ curl inet-ip.info
###サーバー側のローカルipアドレスを確認する
$ ip addr show
- Lanケーブルが繋がっている場合はeth0のinetの行のipアドレスがサーバーのプライベートipアドレスです。例( inet 192.168.1.16←これ netmask 255.255.255.0 broadcast 192.168.1.255)
- Wi-Fiを使っている場合はwlanのipアドレスがサーバーのプライベートアドレスです。
##設定ファイルを編集する。
###サーバー側の設定ファイル
$ vim /etc/wireguard/wg0.conf
[Interface]
PrivateKey = サーバー側の秘密鍵
Address = 10.0.0.1/24
ListenPort = 50002
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
[Peer]
PublicKey = クライアント側の公開鍵
AllowedIPs = 10.0.0.2/32
###ユーザー側の設定ファイル
クライアント側メモ帳
[Interface]
PrivateKey = ユーザー側の秘密鍵
Address = 10.0.0.2/32
DNS = サーバー側のLANのDNSのipアドレス(デフォルトゲートウェイのipアドレスであることが多いです。)
[Peer]
PublicKey = サーバー側の公開鍵
AllowedIPs = 0.0.0.0/0
Endpoint = サーバー側のグローバルipアドレス:50002
##サーバー側のwireguardの起動
$ sudo systemctl enable wg-quick@wg0
$ sudo systemctl start wg-quick@wg0
# 起動の確認 wg0が追加されているかを確認する。
$ ip addr show
$ sudo wg
###ポートマッピング(ポート開放)をする
サーバー側プライベートipアドレスの50002番に設定をする。
##クライアント側(windows)のwireguardの起動
WireGuardインストーラーダウンロードサイトの自分のOSを選択してダウンロードし、実行してインストールする。先ほど作った設定ファイルをインポートして実行する。
サーバーとは異なるネットワークからグローバルipアドレス確認サイトにアクセスして、サーバー側のグローバルipアドレスが表示されていれば繋がっている。
#参考資料
wireguard公式サイト
技術評論社 Ubuntu Weekly Recipe 第614回 WireGuardでVPNサーバーを構築する
WireGuard VPN の利用