PPTP VPN na macOS Sierra

Z racji usunięcia przez Apple możliwości konfiguracji połączeń VPN PPTP poprzez GUI, trzeba sobie radzić inaczej – ale nadal bez żadnych dodatkowych aplikacji 😉

Do /etc/ppp/peers dodajemy plik pptp z zawartością np. taką jak poniżej:

debug
	logfile /tmp/ppp.log
	plugin PPTP.ppp
	remoteaddress <ADRES_VPN>
	redialcount 1
	redialtimer 5
	idle 1800
	#mru 1320
	mtu 1320
	receive-all
	novj 0:0
	ipcp-accept-local
	ipcp-accept-remote
	#noauth
	#refuse-pap
	#refuse-chap-md5
	refuse-eap
	user <NAZWA_UŻYTKOWNIKA_VPN>
	hide-password
	#noaskpassword
	#mppe-stateless
	#mppe-128
	require-mppe
	nomppe-40
	nomppe-128
	mppe-stateful
	passive
	looplocal
	password <HASŁO_VPN>
	nodetach
	defaultroute
	ms-dns 8.8.8.8
	usepeerdns

Gdzie <ADRES_VPN>, <NAZWA_UŻYTKOWNIKA_VPN> i <HASŁO_VPN> podstawiamy dane wg własnych potrzeb.

Do uruchamiania/zatrzymywania połączenia VPN można wykorzystać prosty skrypt AppleScript:

set pppStatus to do shell script "ps aux|grep '[p]ppd'|wc -l|awk {'print $1'}" with administrator privileges
if pppStatus > 0 then
	set buttonStatus to display dialog "PPTP status: connected" buttons {"Disconnect", "Close"} cancel button "Close" default button "Disconnect" with title "PPTP VPN"
else
	set buttonStatus to display dialog "PPTP status: disconnected" buttons {"Connect", "Close"} cancel button "Close" default button "Connect" with title "PPTP VPN"
end if
if button returned of buttonStatus is "Connect" then
	display notification "Connecting PPTP VPN..."
	do shell script "exec pppd call pptp >/dev/null 2>&1 &" with administrator privileges
	delay 1
else if button returned of buttonStatus is "Disconnect" then
	display notification "Disconnecting PPTP VPN..."
	do shell script "exec kill -HUP `cat /var/run/ppp0.pid` >/dev/null 2>&1 &" with administrator privileges
	delay 1
end if

El Capitan i „rootless” lub System Integrity Protection (SIP)

Żeby nie szukać po innych stronach, a przecież będzie to potrzebne po każdej aktualizacji…

sudo nvram boot-args="rootless=0"

Update
Aby utrudniać jeszcze bardziej, od wersji PB3…
Po restarcie komputera przytrzymać ⌘-R aż pojawi się logo Apple. A następnie:

Narzędzia > Konfiguracja zabezpieczeń
Narzędzia > Konfiguracja zabezpieczeń
Odznaczyć "Enforce System Integrity Protection" i kliknąć "Zastosuj konfigurację"
Odznaczyć „Enforce System Integrity Protection” i kliknąć „Zastosuj konfigurację”

Update
Od wersji DB7/PB5…
Ta opcja wydaje się być ostateczną, zachowaną w kolejnych (stabilnych i beta) wersjach 10.11.
Po restarcie komputera przytrzymać ⌘-R aż pojawi się logo Apple. A następnie:

Narzędzia > Terminal
Narzędzia > Terminal
csrutil disable
csrutil disable