# [S] openvpn nur für ein programm nutzen

## Treborius

Hi, ich stehe hier vor einem für mich unlösbarem Problem   :Embarassed: 

Ich möchte den Datenverkehr eines Programms über einen openVPN tunnel leiten

also habe ich mir einen account bei zenvpn erstellt, openvpn installiert, deren client-config runtergeladen

==> funktioniert alles

openvpn startet, erstellt brav das tun0 interface, setzt ganz viele routen ( die ich ehrlich gesagt nicht alle durchblicke )

und der gesamte traffic geht nun über das vpn

Ich möchte aber eigentlich nur den Traffic von einem Programm durchs VPN leiten ( genauer sogar nur UDP )

Wo müsste ich da ansetzten?

- route hilft mir irgendwie nicht weiter, weil ich ja nur die Quelle der Pakete kenne, das Ziel aber variiert

- mit iptables und NAT habe ich das nicht hinbekommen, obwohl iptables ja sowas wie 

```
 -m owner --uid-owner 
```

 kennt, ich also speziell nach Programm filter könnte

ein Problem ist auch, das die routen vom vpn-server gezogen werden, ich die also garnicht konfigurieren kann

(ausser ich lösche sie nach dem starten von openvpn wieder von Hand und setzte sie neu )

Ich hoffe jemand hat Anregungen, welchen Lösungsweg ich einschlagen sollte ...

Grüße, Treb

Edit : ich komme mir langsam doof vor, weil ich immer so komische Probleme hab, aber ich möchte gerade etwas in dieser Richtung ausprobieren/lernen   :Razz: 

----------

## Christian99

Was genau hast du denn vor? Von der Problemstellung her (einzelnes Programm) klingt das eher nach proxy, als vpn.

----------

## l3u

Vielleicht hilft auch ein anderer Ansatz? Ich benutze z. B. einen SSH-Tunnel, um eine RDP-Verbindung von meinem Desktop daheim zu meinem Praxisserver aufzubauen. Klingt ja vom Problem her ähnlich. Funktioniert ganz einfach:

1. SSH-Verbindung aufbauen und einen Port tunneln:

```
ssh -L 3389:<LAN-Server-IP>:3389 user@remote-host-dyn.address
```

2. Für die RDP-Verbindung den getunnelten Port verwenden:

```
rdesktop -x b -z -g 1024x786 -a 16 127.0.0.1
```

Ich hab da auch erst mit VPN rumexperimentiert, aber so war's viel einfacher!

----------

## AmonAmarth

ich versteh das problem noch nicht so ganz. aus deinem post lese ich heraus das du jetzt nach aufbauen der VPN verbindung eine default  route zu dem VPN gateway hast. wenn ja kannst du die default route im prinzip manipulieren bzw openVPN anweisen diese so nicht zu setzen. 

für die andere destination die dein $PROGRAMM benutzt musst du dann natürlich eine gesonderte route einrichten. wenn du nicht weißt welche destination das sein können musst du vermutlich wirklich über die netfilter/iptables lösung. dort kannst du soweit ich weiß auch pakete abhängig vom owner auf eine andere route schicken. die richtige option wäre dann aber "--pid-owner"

ich glaube es würde helfen dir zu helfen wenn du (anonymisierte) routing tables und openVPN config posten würdest

----------

## Treborius

 *AmonAmarth wrote:*   

> ich versteh das problem noch nicht so ganz. aus deinem post lese ich heraus das du jetzt nach aufbauen der VPN verbindung eine default  route zu dem VPN gateway hast. wenn ja kannst du die default route im prinzip manipulieren bzw openVPN anweisen diese so nicht zu setzen. 
> 
> für die andere destination die dein $PROGRAMM benutzt musst du dann natürlich eine gesonderte route einrichten. wenn du nicht weißt welche destination das sein können musst du vermutlich wirklich über die netfilter/iptables lösung. dort kannst du soweit ich weiß auch pakete abhängig vom owner auf eine andere route schicken. die richtige option wäre dann aber "--pid-owner"
> 
> ich glaube es würde helfen dir zu helfen wenn du (anonymisierte) routing tables und openVPN config posten würdest

 

ich habe $PROGRAMM nun in einen lxc container verschoben um es von openvpn zu trennen?

Ich fand das einfacher, weil ich dann die routen und die Wege der Pakete besser debuggen konnte.

Zur Lösung habe ich dann http://www.tldp.org/HOWTO/Adv-Routing-HOWTO/lartc.netfilter.html bemüht.

----------

