I tested on macOS 10.14, L2TP VPN.
I connect to my office VPN to work remotely, but I don’t want to send all traffic to VPN interface. Usually, I open a Terminal.app and execute commands after VPN connected:
|
$ sudo su # route add -net 192.168.2.0/24 192.168.100.1 |
192.168.2.0/24 is address block used in my office, 192.168.100.1 is VPN gateway address.
It’s really inconvenient. But I have a new solution: networksetup.
Usage: networksetup -setadditionalroutes <networkservice> [ <dest> <mask> <gateway> ]*
Set additional IPv4 routes associated with <networkservice>
by specifying one or more [ <dest> <mask> <gateway> ] tuples.
Remove additional routes by specifying no arguments.
If <gateway> is “”, the route is direct to the interface
First, find your service name.
|
$ networksetup -listallnetworkservices |
Find your VPN connection name, in my case ‘My Office’.
|
# networksetup -setadditionalroutes 'My Office' 192.168.2.0 255.255.255.0 "" |
If you have multiple route entries to add,
|
networksetup -setadditionalroutes 'My Office' 172.16.0.0 255.255.240.0 "" 192.168.2.0 255.255.255.0 "" |
L2TP is a Point-to-Point VPN, the gateway address is not that important, that’s why I use “” instead of 192.168.100.1.