The concept of a VPN is that it creates a secure tunnel between the endpoints. No offramps so to speak, an "offramp" would be needed to access resources on your home network such as a printer.
Put another way, when you connect to your work VPN you get an IP address from that network, because your home printer has a network address from your home network, you now can't communicate with it.
It's not the fault of your printer, the only way around it is to plug it in as a USB printer.
Rubbish.
I'm sitting here connected to 3 remote VPNs. Only traffic destined for each target network uses its respective VPN and everything else goes unencrypted on my normal public interface.
Internet access does not go over my VPNs nor does any LAN traffic.
For me:
anything on 10.0.0.0/8 goes over VPN1
192.168.0.0/24 goes over VPN2
192.168.1.0/24 goes over VPN3
192.168.10.0/24 is my local LAN
and all other traffic goes out of my internet connection
You just need to know how to setup the routing properly.
When a ppp connection is dialed (i.e. each time my Mac connects to a VPN), the file /etc/ppp/ip-up is run. Each time a VPN disconnects, the file /etc/ppp/ip-down is automatically run by ppp daemon.
I differentiate each remote VPN using the VPN gateway IP. This IP is automatically passed to each of these script as the variable $5 and $1 is the interface name
This is an example of a /etc/ppp/ip-up file
#!/bin/sh
if [ "$5" == "192.168.2.1" ]; then
/sbin/route add 10.0.0.0/8 -interface $1
/sbin/route add 122.201.64.0/8 -interface $1
elif [ "$5" == "192.168.95.1" ]; then
/sbin/route add 172.16.0.0/12 -interface $1
fi
In this example file, there are two VPNs configured. One has a gateway of 192.168.2.1 and the other has a gateway of 192.168.95.1.
If the gateway IP of the VPN I am connecting to matches the "if" statement, then the route commands in that block are added.
Here is an example /etc/ppp/ip-up file (used for deleting the VPN routes when you disconnect).
#!/bin/sh
if [ "$5" == "192.168.2.1" ]; then
/sbin/route delete 10.0.0.0/8 -interface $1
/sbin/route delete 122.201.64.0/8 -interface $1
elif [ "$5" == "192.168.95.1" ]; then
/sbin/route delete 172.16.0.0/12 -interface $1
fi