Proxy für Wireguard

x.treme

Captain
Registriert
Sep. 2008
Beiträge
3.098
Hallo zusammen,

ich suche eine Möglichkeit einen Proxy zu nutzen in Kombination mit einem Wireguard Gateway.
Ziel: Nicht den kompletten Traffic durch den VPN lotsen, sondern nur ausgewählte Anwendungen, welche den HTTP (oder SOCKS5) Proxy konfiguriert haben.

Ich habe versucht das ganze mit OPNSense aufzusetzen, scheitere aber daran dass für den Proxy kein Gateway ausgewählt werden kann, womit dieser immer durch WAN anstatt den VPN geht ...

Alternative Lösungsansätze?
 
Nginx?
 
Ist Nginx als Forward Proxy nutzbar?
Habe es als reverse proxy eingespeichert ...
 
Den Beitrag von Nordwind2000 kannst offensichtlich ignorieren. Irgendwas dahingerotztes um den Beitragscounter zu erhöhen, wenn ich die Intention des Posts erraten müsste...

Nginx ist in erster Linie ein Webserver, genauso wie Apache und beide kann man auch als reverse proxy verwenden.

Aber zurück zum Thema: Niemand, also wirklich niemand, kann aus den 5 Zeilen dein Setup reproduzierbar nachvollziehen sondern man kann nur Vermutungen anstellen und spekulieren.
Reproduzierbare Nachvollziehbarkeit des Problems ist der erste Schritt bevor man eine Lösung finden kann.

Installiere den Proxy auf einem separaten Gerät/VM/Container und lasse dieses Gerät/VM/Container auch den VPN Tunnel aufbauen oder gib diesem Gerät/VM/Container das Wireguard-Interface als Gateway an sofern das mit opnsense möglich ist.
Alternativ bietet auch die Doku von opnsense etwas in die Richtung an, nennt sich wireguard selectice routing on external vpn endpoint.
Wenn der Proxy Service unbedingt auf der opnsense laufen soll oder muss, dann wirst aber vermutlich um policy based routing nicht drum herum kommen. Das ist aber aufwendig und wenn möglich möchte man das vermeiden wenn es einfachere Lösungen gibt.
 
snaxilian schrieb:
Aber zurück zum Thema: Niemand, also wirklich niemand, kann aus den 5 Zeilen dein Setup reproduzierbar nachvollziehen sondern man kann nur Vermutungen anstellen und spekulieren.
Reproduzierbare Nachvollziehbarkeit des Problems ist der erste Schritt bevor man eine Lösung finden kann.

Gibt ja auch noch kein funktionierendes Setup - die Frage war nach der einfachsten Möglichkeit, ein solches zu deployen. ;)

Sollte aber jemand mal über dasselbe Problem stolpern, hier nun meine Lösung
Code:
services:
  wireguard:
    image: linuxserver/wireguard
    container_name: wireguard
    restart: unless-stopped
    networks:
      - backbone
    volumes:
      - './wireguard:/config'
      - '/lib/modules:/lib/modules:ro'
    cap_add:
      - NET_ADMIN
      - SYS_MODULE
    ports:
      - 1080:1080     
    sysctls:
      - net.ipv4.conf.all.src_valid_mark=1

  socks5:
    image: serjs/go-socks5-proxy
    container_name: socks5
    restart: unless-stopped
    depends_on:
     - wireguard   
    network_mode: service:wireguard

Dazu dann noch die PostUp / PostDown Routen in Wireguard für den Port-Zugriff.

War jetzt doch deutlich leichter (und ressourcensparender) als die OPNSense-Versuche.
 
  • Gefällt mir
Reaktionen: snaxilian
Hi @x.treme ,

ich stehe vor genau der gleichen Herausforderung wie du. Ich moechte einen Socks5 Proxy bauen, der ueber einen Wireguard VPN ins Internet spricht.
Ich habe mich deines Docker Compose Files bedient. Die Container laufen erstmal soweit und der Wireguard befindet sich auch im Client Modus, hat ein VPN aufgebaut und somit eine andere externe IP Adresse.

Hier der Punkt, den ich einfach nicht verstehe. Du schreibst, dass man in der Wireguard Config noch PostUP und PostDown konfigurieren muss um den Port-Zugriff zu ermoeglichen. Hier verlaesst mich mein Verstaendnis. Ich weiss zwar, dass ich das in der VPN Config eintragen kann, ich habe aber keinen Schimmer, was ich dort wie eintragen muss und wieso ich das machen muss. Kannst du hier Hilfestellung geben?

Besten Dank vorab.

Modjo
 
Zuletzt bearbeitet:
Ho @Modjo , ich nutze eine andere Lösung mittlerweile, aber ich denke ich hatte es damals nach der Anleitung hier eingerichtet:

https://www.linuxserver.io/blog/routing-docker-host-and-container-traffic-through-wireguard

Schau dir hier die PostUp/PostDown-Regeln unter "Routing Docker Container Traffic Through WireGuard".
Diese werden benötigt, damit du aus deinem LAN auf die Port-Adresse zugreifen kannst, sobald der Tunnel hergestellt ist.

D.h. in der wg0.conf bei [Interface] hinzufügen:
Code:
PostUp = DROUTE=$(ip route | grep default | awk '{print $3}'); HOMENET=192.168.0.0/16; HOMENET2=10.0.0.0/8; HOMENET3=172.16.0.0/12; ip route add $HOMENET3 via $DROUTE;ip route add $HOMENET2 via $DROUTE; ip route add $HOMENET via $DROUTE;iptables -I OUTPUT -d $HOMENET -j ACCEPT;iptables -A OUTPUT -d $HOMENET2 -j ACCEPT; iptables -A OUTPUT -d $HOMENET3 -j ACCEPT;  iptables -A OUTPUT ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT
PreDown = HOMENET=192.168.0.0/16; HOMENET2=10.0.0.0/8; HOMENET3=172.16.0.0/12; ip route delete $HOMENET; ip route delete $HOMENET2; ip route delete $HOMENET3; iptables -D OUTPUT ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT; iptables -D OUTPUT -d $HOMENET -j ACCEPT; iptables -D OUTPUT -d $HOMENET2 -j ACCEPT; iptables -D OUTPUT -d $HOMENET3 -j ACCEPT

(ungetestet, wie gesagt nutze mittlerweile die Lösung nicht mehr :) )
 
@Bob.Dig In meinem virtuellen OPNsense-Router (läuft via Proxmox) ist das Wireguard-Netzwerk konfiguriert, und ein LXC-Container mit SOCKS5-Proxy nutzt dies als Gateway.

Die Docker-Lösung war sicherlich eleganter / effizienter, aber da ich nun mehrere virtuelle Maschinen durch das WG-Gateway lotse, war das für mich praktikabler in der Wartung ;)
 
x.treme schrieb:
@Bob.Dig In meinem virtuellen OPNsense-Router (läuft via Proxmox) ist das Wireguard-Netzwerk konfiguriert, und ein LXC-Container mit SOCKS5-Proxy nutzt dies als Gateway.
Ist vermutlich ein eigener und keine Vorlage via turnkey? Noch nutze ich für jeden Socks-Proxy eine eigene VM... hab ja den RAM. 😑
 
Ja, ein eigener LXC-Container mit Docker und den oben beschrieben socks5 Image 😅

Den integrierten Socks-Server von opnSense habe ich bis heute nicht zum laufen bekommen, dass dieser den Traffic über mein WG-Gateway leiten würde ...

Mir reicht aber derzeit auch ein einziger Socks-Proxy. Die Variante oben hatte ich genutzt, als ich mir 10 verschiedene Socks-Proxy mit NordVPN aufgebaut hatte, um diese dann Firefox-Containers zuzuweisen. Da wären 10 VMs und 10 opnSense-Gateways dann doch zu nervig gewesen 😄
 
  • Gefällt mir
Reaktionen: Bob.Dig
x.treme schrieb:
Ho @Modjo , ich nutze eine andere Lösung mittlerweile, aber ich denke ich hatte es damals nach der Anleitung hier eingerichtet:

https://www.linuxserver.io/blog/routing-docker-host-and-container-traffic-through-wireguard

Schau dir hier die PostUp/PostDown-Regeln unter "Routing Docker Container Traffic Through WireGuard".
Diese werden benötigt, damit du aus deinem LAN auf die Port-Adresse zugreifen kannst, sobald der Tunnel hergestellt ist.

D.h. in der wg0.conf bei [Interface] hinzufügen:
Code:
PostUp = DROUTE=$(ip route | grep default | awk '{print $3}'); HOMENET=192.168.0.0/16; HOMENET2=10.0.0.0/8; HOMENET3=172.16.0.0/12; ip route add $HOMENET3 via $DROUTE;ip route add $HOMENET2 via $DROUTE; ip route add $HOMENET via $DROUTE;iptables -I OUTPUT -d $HOMENET -j ACCEPT;iptables -A OUTPUT -d $HOMENET2 -j ACCEPT; iptables -A OUTPUT -d $HOMENET3 -j ACCEPT;  iptables -A OUTPUT ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT
PreDown = HOMENET=192.168.0.0/16; HOMENET2=10.0.0.0/8; HOMENET3=172.16.0.0/12; ip route delete $HOMENET; ip route delete $HOMENET2; ip route delete $HOMENET3; iptables -D OUTPUT ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT; iptables -D OUTPUT -d $HOMENET -j ACCEPT; iptables -D OUTPUT -d $HOMENET2 -j ACCEPT; iptables -D OUTPUT -d $HOMENET3 -j ACCEPT

(ungetestet, wie gesagt nutze mittlerweile die Lösung nicht mehr :) )
Vielen Dank, funktioniert 😊
 
Zurück
Oben