Aqui está a solução final que usei:
server=x.x.x.x
physip=$(ip addr show $dev | grep inet | grep -v inet6 | cut -d' ' -f6 | cut -d'/' -f1)
pppd unit 101 noauth refuse-eap refuse-pap refuse-chap \
refuse-mschap require-mschap-v2 name user01 remotename \
vpnserver file /etc/ppp/options.pptp persist maxfail 1 updetach \
pty "pptp $server --localbind $physip --nolaunchpppd" &> /dev/null
pppd unit 102 noauth refuse-eap refuse-pap refuse-chap \
refuse-mschap require-mschap-v2 name user01 remotename \
vpnserver file /etc/ppp/options.pptp persist maxfail 1 updetach \
pty "pptp $server --localbind $physip --nolaunchpppd" &> /dev/null
ifip1=$(ip addr show ppp101 | grep inet | grep -v inet6 | cut -d' ' -f6 | cut -d'/' -f1)
ifip2=$(ip addr show ppp102 | grep inet | grep -v inet6 | cut -d' ' -f6 | cut -d'/' -f1)
iptables -t nat -A POSTROUTING -o ppp101 -j SNAT --to-source $ifip1
iptables -t nat -A POSTROUTING -o ppp102 -j SNAT --to-source $ifip2
ip route flush cache
ip route replace default scope global nexthop dev ppp101 weight 1 nexthop dev ppp102 weight 1