Wireguard is fabulous due to its speed, but there’s not much data available about how to deploy it using standard macOS tooling like MDM. In this case Mosyle MDM has a custom VPN profile, but it doesn’t support the method we need, so we need to use iMazing Profile Editor.
Luckily this tool DOES have a profile that supports Wireguard, but again <sad panda> there’s not much documentation…
Test Manually First!
I know I promised there’d be some Unifi content, but really – just poke it until it works, there’s nothing massively tricky about that part. But do test before spending time here-
Export a config file, add Wireguard to your test machine, import the profile and check it works… ok?
Comparing the example profile here and the first version of my iMazing profile, – I made a lot of bad assumptions!
Now let’s figure out how to make config profiles for deployment.
iMazing Profile Manager Settings
Going from top to bottom, here are the iMazing Profile editor settings you need to modify- where you see a title with ‘=’ the second term is the term used by Wireguard or Apple
PayloadDisplayName
– Should be ‘VPN’ according to the Wireguard docs, I think this is the item that iMazing Profile Editor automatically adds as ‘VPN#1’ at the top of the profile screen
UserDefinedName
– name of profile to show in macOS System Settings
Type
– Set this to ‘VPN (Vendor-Specific)‘
VPNSubType
– for macOS set to ‘com.wireguard.macos’
– for IOS set to ‘com.wireguard.ios’
Wireguard Quick Config = VendorConfig
– when you add ‘com.wireguard.macos’ to ‘VPN Subtype‘, a field will open up so you can paste into ‘Wireguard Quick Config‘. Paste the config that you got from your UDM Pro
Server = VPN/ RemoteAddress
– Paste the Server IP (including port number) into the field for ‘Server‘ in iMazing Profile Editor, eg ‘123.123.123.123:51820’
AuthenticationMethod
‘Password‘
– Set the pop-up to ‘password’ but don’t enter anything in the password field
Stuff that sorts itself out…
Tunnel Provider Type
– This doesn’t seem to be needed, put nothing in here
PayloadType
– Should be com.apple.vpn.managed
(seems to be added automatically when other details are correct)
PayloadVersion
– Should be 1
, seems to be added automatically when other details are correct
PayloadIdentifier
– seems to be added automatically
PayloadUUID
– seems to be added automatically
VPNType
– seems to be added automatically
So you want the bad news? You’ll have to do this manually- every single one is unique. if you have any ideas around this or think it is scriptable, please let me know…