Wireguard

Requirements

  • brew

Installation

# install wireguard and dependencies
> brew install \
  wireguard-go \
  wireguard-tools \
  bash

# create wg config file in '/opt/homebrew/etc/wireguard'
> sudo cat <<EOF > /opt/homebrew/etc/wireguard/wg0.conf
[Interface]
Address = 10.15.0.2/32
PrivateKey = XXXxxx=

[Peer]
PublicKey = XXXxxx=
PresharedKey = XXXxxx=
AllowedIPs = 10.15.0.0/24
Endpoint = 192.168.0.1:51820
PersistentKeepalive = 25
EOF
/Library/LaunchDaemons/wireguard-wg0.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <key>Label</key>
        <string>wireguard-wg0</string>
        <key>ProgramArguments</key>
        <array>
            <string>/opt/homebrew/bin/wg-quick</string>
            <string>up</string>
            <string>wg0</string>
        </array>
        <key>KeepAlive</key>
            <dict>
                <key>NetworkState</key>
                <true/>
            </dict>
        <key>RunAtLoad</key>
        <true/>
        <key>StandardErrorPath</key>
        <string>/opt/homebrew/var/log/wireguard.err</string>
        <key>EnvironmentVariables</key>
        <dict>
            <key>PATH</key>
            <!-- Adds in user-specific and Homebrew bin directories to start of PATH -->
            <string>/opt/homebrew/bin/wg-quick:/opt/homebrew/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin</string>
        </dict>
    </dict>
</plist>
# start and enable
> launchctl enable system/wireguard-wg0.plist
> launchctl bootstrap system /Library/LaunchDaemons/wireguard-wg0.plist

# reload
> launchctl unload system/wireguard-wg0.plist