O šest let později jsem k této otázce došel a na základě přijaté odpovědi ji téměř zklamal. K dnešnímu dni to není složité, používá směrování politik. Všechny podrobnosti jsou k dispozici na stejném webu na adrese https://serverfault.com/a/389004/70774.
V mém případě jsem se musel nejprve ujistit, že vpn není výchozí trasa. Jak toho dosáhnete, závisí na tom, jaký typ správce připojení používáte.
Proxy (tinyproxy) běží s vlastním uživatelem, takže všechny balíčky pocházející od tohoto uživatele označím příkazem
iptables -t mangle -A OUTPUT -m owner --uid-owner 125 -j MARK --set-mark 2
kde 125
je uid uživatele tinyproxy a 2
je libovolné číslo, které bude později spárováno.
Poté instruuji směrovací systém, aby použil konkrétní tabulku ke směrování všech požadavků označených 2
.
ip rule add fwmark 2 table 3
Opět 3
je pouze libovolné číslo. Jen si dejte pozor, abyste vybrali nepoužitý stůl (jen se podívejte, jestli na stole něco není, vyberte si pomocí ip route list table 3
).
Poté naplním tabulku 3
s mojí výchozí trasou:
ip route add default dev ppp0 via proto static scope link metric 1024
Posledním krokem bylo vytvoření maškarního pravidla, jehož nezbytnost úplně nechápu:
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
Et voilà!