Here's a script to force transmission to only use the vpn. I haven't tested it long term as I just finished the script but let me know if it works for you guys.
Code:
#! /usr/local/bin/bash
IP=`ifconfig tun0 2>/dev/null|awk '/inet/ {print $2}'|xargs`
OLDIP=`sed -n -e 's/\("bind-address-ipv4":\) "\(.*\)",/\2/p' /var/db/transmission/settings.json|xargs`
if [ "$IP" != "$OLDIP" ]
then
service transmission stop
sed -i .bak 's/\("bind-address-ipv4":\).*,/\1 "'$IP'",/' /var/db/transmission/settings.json
service transmission start
echo New IP $IP
fi
This assumes your vpn is assigned the device name tun0.
Run it in with a cron job every hour or so and you should be golden.
edit: if the script borks your downloads, shut down transmission, open /var/db/transmission/settings.json and set the bind-address-ipv4 value to 0.0.0.0 then start transmission back up
edit2: fixed the script to restart transmission if the tun0 ip differs from the settings one, the old method simply changed the config file and reloaded, but this caused problems if you change settings with transmission-remote or in the web interface, they wouldn't persist if the script ran again . So now we shut down transmission before we change the file.
Cheers.