Zdrojem problému je pochopitelně nešťastně zvolený rozsah VPN. Korektní řešení je rozsah přesunout, pokud to není možné, pak lze toto řešit pomocí policy routing. Myšlenka je taková, že vytvoříte separátní routavací tabulku pro každé rozhraní (v případě dhcp je potřeba to "dohackovat" do dhcp skriptů a záleží na použitém klientovi). Následně je pak potřeba definovat pravidla, kdy má být použita která tabulka.
Pravidla mohou být například na základě zdrojové adresy (tedy adresy rozhraní), případně na základě iptables mark, takže lze vytvořit opravdu komplexní politiky.
Příklad použití např zde:
http://www.tldp.org/HOWTO/Adv-Routing-HOWTO/lartc.rpdb.simple.htmlLze obecně vyhledat řadu příkladů, zajímá vás policy routing, případně source routing. Ve vašem případě by mělo stačit zhruba toto (nesedím u mašiny s Linuxem, takže je to z hlavy a nemusí to fungovat na první dobrou)
1) Je potřeba dodefinovat nové tabulky v /etc/ip_route2/rt_tables, záznamy jsou něco jako
100 eth_table
101 vpn_table
2) Nastavím routy
ip ro add <eth address>/<eth mask> dev eth0 table eth_table
ip ro add <vpn address>/<vpn mask> dev vpn table vpn_table
3) Nastavím pravidla
ip ru add from <eth address> lookup eth_table
ip ru add from <vpn address> lookup vpn_table