虎(牛)龍未酉2.1

記録帳|+n年後のジブンが思い出せますように……

作業ログ|WireGuardをMacBookのうえに構築してみた


はじめに

コーヒーショップやホテルなど、外出先の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アプリ(メニューバー)から「有効化」を押す。

できること(例)

  • インターネットに接続してウェブサイトを見る
  • 自宅のLANにある、NASドライブをつかう
  • 自宅のLANにある、MacBookの画面を表示させる
  • 自宅のLANにある、MacBookのフォルダを使う

iPhone/iPadから

WireGuardアプリからONにする。

できること(例)

  • インターネットに接続してウェブサイトを見る
  • 自宅のLANにある、NASドライブをつかう

タスクの全体像

  1. Remote Desktop環境の構築
  2. MacBookの設定
  3. DDNS
  4. IPアドレスの固定、サブネットの範囲
  5. ポートフォワーディング
  6. WireGuardのサーバ側の設定
  7. WireGuardのクライアント側の設定
  8. サーバの起動

主に参考にしたサイトは下記です。

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は必須かどうかわからなくなってしまいました。

その他の設定は、この行をクリックすると表示します。

  • システム環境設定
    • トラックパッドの速度を変えて、タップでクリック
    • ネットワーク > 詳細 > TCP/IPで、IPアドレスを固定(手入力)
    • 共有 > コンピュータ名を変更、AirPlayレシーバのチェックを外す
    • 自動ログインにしておく
  • ターミナルで設定
    • sudo pmset -a disablesleep 1
  • Finder
    • Dockから不要なアイコンを外す
    • 必要なアプリをDockに登録(スクショ、ターミナル、ディスクユーティリティ)
  • アプリインストール
    • Chrome
    • Chrome Remote Desktop
    • hot
    • BetterDummy
      • ディスプレイを設定、1440x900、ダミーが主ディスプレイであとはミラーリング
      • 外部モニタに接続している場合(3面)と、接続していない場合(2面)と設定

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.shpostdown.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. サーバの起動

テスト起動して、うまくいっていれば、launchdplistを伝えます。

おわりに

ちょこちょこハマりどころはあったものの、先人のお知恵のおかげで動くところまではいきました。いろいろ修正点はリファクタリングしていきます。

MacBookの画面共有とファイル共有をONにしておけば、vcn://固定IPアドレス / smb://固定IPアドレスで、リモートからローカルLANが使えるのもありがたいです。

(スピードの問題はともかくとして)、外からもTimeMachineバックアップができるようにするのに、あともうちょっとな気がしてうれしいです。