はじめに
コーヒーショップやホテルなど、外出先のWi-Fiから安全にインターネットを使うために、画面が割れたMacBookを活用してみようとおもいました。
実際につかうにはまだ改善がいりますが、ざくっと全体像をまとめるなら今かなと思って記録しておきます。
環境
ここで書いていることは、下記のバージョンで実施しました。
- WireGuard app version: 1.0.15 (26)
- WireGuard
- Chrome Remote Desktop
- macOS Monterey 12.5.1 / 12.6
- MacBook (Retina, 12-inch, Early 2016) / MacBook9,1
- MacBook Pro (14-inch, 2021)
利用のイメージ
別のMacBookから
WireGuardアプリ(メニューバー)から「有効化」を押す。
できること(例)
iPhone/iPadから
WireGuardアプリからONにする。
できること(例)
- インターネットに接続してウェブサイトを見る
- 自宅のLANにある、NASドライブをつかう
タスクの全体像
- Remote Desktop環境の構築
- MacBookの設定
- DDNS
- IPアドレスの固定、サブネットの範囲
- ポートフォワーディング
- WireGuardのサーバ側の設定
- WireGuardのクライアント側の設定
- サーバの起動
主に参考にしたサイトは下記です。
1. Remote Desktop環境の構築
Chrome Remote Desktopをインストールすれば、とりあえず何も考えずに自宅のLANのパソコンに接続できるので、まず入れておきました。
これはサクッとインストールということで省略。
参考サイト:Chrome Remote Desktop
2. MacBookの設定
細かい設定はさておき、大事なことだけ抜き出すと
- IPアドレスの固定(たとえば192.168.0.61)
- スリープしないようコマンドを打つ
$ sudo pmset -a disablesleep 1
- BetterDisplayを入れて、仮想画面を主ディスプレイに、本体画面をミラーリング
IPアドレスの固定と、disablesleep 1
は必須。
BetterDisplayは必須かどうかわからなくなってしまいました。
その他の設定は、この行をクリックすると表示します。
- システム環境設定
- ターミナルで設定
sudo pmset -a disablesleep 1
- Finder
- Dockから不要なアイコンを外す
- 必要なアプリをDockに登録(スクショ、ターミナル、ディスクユーティリティ)
- アプリインストール
3. DDNS
Duck DNSを利用しました。
- ユーザ登録
- ドメイン登録
- インストール手順にしたがってインストール(
osx-homebrew
を使いました)
参考サイト:ラズパイとPiVPNで、手軽にVPNサーバーを手に入れる | ラズパイダ
TODO: 停止の方法を調べておかないとです。
4. IPアドレスの固定、サブネットの範囲
MacBook側は上記「2. MacBookの設定」でやっておいたので、ルータでMACアドレスと固定IPアドレスを紐付けておきます。
サブネットの範囲は、Wireguard Server on macOSを参考に定めました。
5. ポートフォワーディング
Wireguard Server on macOSには細かく書いてありませんが、ラズパイとPiVPNで、手軽にVPNサーバーを手に入れるにあるように、
6. WireGuardのサーバ側の設定
ここからはWireguard Server on macOSに詳細が書いてありますので、順々にやっていきます。
/usr/local/etc/wireguard/postup.sh
とpostdown.sh
の作成/配置- WireguardをHomebrewでインストール
- 鍵ペアを作成して、サーバの設定ファイルを作成/配置
鍵ペアは、サーバ用に1つ、つなぐクライアントデバイスの数だけ作成します。たとえば、MacBook, iPhone, iPadでつかう場合は、サーバ x 1 デバイス x 3なので、合計4ペア作成することになります。
Peerが複数あるときの書き方がわからなくて一瞬ハマったのでメモしておきます。
peerの書き方も迷ったのと、AllowedIPsで、明示的にIPアドレスを指定するのを失念していて、ぜんぶ10.0.10.10
にして、デバイスが1台しかつながらなくて悩みました。
[Interface] Address = 10.0.10.0/24 PrivateKey = XXXX ListenPort = 51820 DNS = 1.1.1.1, 1.0.0.1, 2606:4700:4700::1111 PostUp = /usr/sbin/sysctl -w net.inet.ip.forwarding=1 PostUp = /usr/sbin/sysctl -w net.inet6.ip6.forwarding=1 PostUp = /usr/local/etc/wireguard/postup.sh PostDown = /usr/local/etc/wireguard/postdown.sh [Peer] # peer 1, MBP PublicKey = YYYY AllowedIPs = 10.0.10.11/32 [Peer] # peer 2, iPhone PublicKey = ZZZZ AllowedIPs = 10.0.10.12/32 [Peer] # peer 3, iPad PublicKey = WWWW AllowedIPs = 10.0.10.13/32
参考サイト:Stupid simple setting up WireGuard - Server and multiple peers
7. WireGuardのクライアント側の設定
- クライアント側の設定ファイルの作成
- アプリに読み込み
8. サーバの起動
テスト起動して、うまくいっていれば、launchd
にplist
を伝えます。
おわりに
ちょこちょこハマりどころはあったものの、先人のお知恵のおかげで動くところまではいきました。いろいろ修正点はリファクタリングしていきます。
MacBookの画面共有とファイル共有をONにしておけば、vcn://固定IPアドレス
/ smb://固定IPアドレス
で、リモートからローカルLANが使えるのもありがたいです。
(スピードの問題はともかくとして)、外からもTimeMachineバックアップができるようにするのに、あともうちょっとな気がしてうれしいです。