klenamenis schriebWenn ich ein VPN nutze, gehen meine gesamten Daten durch diesen Tunnel, ich möchte aber ein Programm X außerhalb dieses Tunnels laufen lassen. Sprich: Von außen gesehen haben Webbrowser, Mail-Client, etc. die IP B des VPNs, wohingegen Programm X als einziges die IP A des ISPs zeigt.
Entsprechend möchte ich manchmal nur für ein einziges Programm X das VPN nutzen, sodass dieses die IP B zeigt. Da ich aber nicht alle anderen Programme über dieses VPN nutzen kann/will, suche ich einen Weg, best. Programme (nur) über bestimmte Netzwerkadapter (enp0s25/eth0, vpn0, tun0, etc.) laufen zu lassen.
Normalerweise nutzen Programme den TCP/IP-Stack, und der entscheidet anhand von Routen, wohin die Reise geht. Der reinen Lehre nach gäbe es daher keine Möglichkeit, einem Programm (das ja gar nichts von Netzwerkkarten weiß) beizubringen, eine Netzwerkkarte explizit zu benutzen; außer man routet entsprechend.
Anscheinend gibt es aber doch tatsächlich ein paar Hacks:
http://www.ryde.net/code/bind.c.txt
http://freecode.com/projects/force_bind/, gibts auch im AUR
Und mit Linux namespaces kann man es wohl auch erreichen ohne zusätzliche Software:
http://www.evolware.org/?p=293
http://lwn.net/Articles/580893/