OpenVPN Server - Multi WAN



  • Hallo, ich stehe gerade vor einem Problem, obwohl es meiner Meinung nach kein solches sein sollte.
    Ich habe einen OpenVPN Server in der pfSense eingerichtet und dieser soll nun an 2 WAN Interfaces lauschen - kein Failover, sondern zu jeder Zeit auf beiden. Also habe ich ein Gateway Group mit diesen 2 Interfaces (jeweils Tier 1) angelegt und dieses Gateway Group beim OpenVPN Server als Interface festgelegt.

    Ich kann mich jedoch mit keiner der beiden WAN IP's verbinden. Wenn ich jedoch ein bestimmtes Interface auswähle oder auch any (aber ich möchte das nicht produktiv laufen lassen, sodass jedes Interface auf diesem Port lauscht), dann kommt die Verbindung problemlos zustande.

    Hat jemand eine Idee, was ich falsch mache? Oder ist sowas gar nicht vorgesehen?



  • Ein OpenVPN Server kann doch nicht auf einem Gateway lauschen, damit auch nicht auf einer Gateway-Group, sondern nur an einer Interface-IP.

    So könnte es funktionieren:
    Lass den Server auf localhost lauschen.
    Richte an beiden Interfaces ein Portforwarding der OpenVPN-Pakete auf localhost ein.



  • https://www.netgate.com/docs/pfsense/routing/multi-wan-openvpn.html
    Und dann gibt es noch ein klasse OpenVPN Hangout von @jimp in dem das Multi WAN Thema auch behandelt wird mit den verschiedenen Möglichkeiten: https://www.youtube.com/watch?v=ku-fNfJJV7w

    -Rico



  • Danke euch beiden für die schnellen Antworten. Das funktioniert ja tatsächlich sehr gut und ist einfach einzurichten.

    @viragomann Zur Aussage: "OpenVPN Server kann doch nicht auf einem Gateway lauschen"
    Das ist mir bewusst, vllt. ist es einfach falsch rübergekommen. Ich gehe davon aus, dass wenn man beim OpenVPN Server unter Interfaces ein Gateway Group auswählt, der Server eben die entsprechenden Interfaces (nicht Gateways) nutzen wird, um von außen erreichbar zu sein. In dem Fall dient das Gateway Group lediglich zur Zusammenfassung der benötigten Interfaces.
    Dieser Gedanke wird übrigens in dem von @Rico verlinkten Hangout bestätigt. Allerdings wird dort auch ganz schnell mein Denkfehler aufgedeckt: auf diese Art und Weise kann jeweils nur ein Interface aktiv genutzt werden, d.h. Failover und kein Load Balancing (im weitesten Sinne).


  • Moderator

    @un1que said in OpenVPN Server - Multi WAN:

    @viragomann Zur Aussage: "OpenVPN Server kann doch nicht auf einem Gateway lauschen"

    Doch kann er ;) Ich würde es zwar anders konfigurieren, aber den OpenVPN Server(!) auf die GW Gruppe zu legen ist durchaus legitim. Bei einem OpenVPN Client in einem Failover Scenario ist es sogar m.W. Pflicht, damit er abgehend mitbekommt, dass das eine WAN down ist und er das andere nutzen soll wenn ich mich recht entsinne.

    Allerding ist das überhaupt nicht was @un1que eigentlich machen will/soll. Das steht direkt bei der Auswahl beim Server schon dabei, denn was du suchst ist nicht die GW Gruppe als Interface sondern das Multihoming, was als neues Feature mit 2.4 dazu kam.

    Entweder du konfigurierst den Server also mit Multihoming auf alle IFs lauschend, oder was ich persönlich besser/charmanter finde auf ... localhost! Genau. Localhost/1194udp
    Dann legst du dir auf beide WANs ein Port Forwardings, dass eingehend auf die jeweilige WAN IP 1194udp auf localhost forwarded ... aaaaand you're done :D



  • @jegr said in OpenVPN Server - Multi WAN:

    Doch kann er ;) Ich würde es zwar anders konfigurieren, aber den OpenVPN Server(!) auf die GW Gruppe zu legen ist durchaus legitim.

    Vielleicht gerate ich mal in die Versuchung, das zu testen. Kann mir aber nicht vorstellen, dass ein Server am GW lauschen kann, und eine GW Group sind auch nur mehrere davon.


  • Moderator

    Also der OpenVPN Client kann es und damit wird das Failover in MultiWAN Scenarien tatsächlich umgesetzt. Das ist als Interface auch tatsächlich mehr ein "Alias" dafür, dass er von IF WAN1 auf WAN2 umswitchen kann/soll.

    Ähnlich wie die Default Route seit 2.4.4 -> kann nun ja auch eine GatewayGruppe sein, nicht nur ein einzelnes Gateway. Ist an der Stelle weniger spektakulär aber ähnlicher Grund :)

    https://www.netgate.com/docs/pfsense/book/openvpn/openvpn-and-multi-wan.html
    😄

    Was @un1que aber eigentlich möchte ist eher das hier:

    https://www.netgate.com/docs/pfsense/routing/multi-wan-openvpn.html



  • Bin überzeugt. ☺
    Netgate hat ja mittlerweile alles bestens dokumentiert. Man muss es nur finden bzw. lesen, zu finden ist es eh schnell.

    Den zweiten Link hat Rico bereits hier beigesteuert.



  • @JeGr Danke nochmal für die Bestätigung, dass ich doch nicht soo verkehrt lag. Multihoming lief bei mir einige Zeit zu Testzwecken, allerdings wollte ich jetzt endlich mal alles richtig machen und das Lauschen eben nur auf den benötigten IF's konfigurieren.
    Seit gestern läuft es über localhost ohne Probleme. Das ist tatsächlich die optimalste Lösung.


  • Moderator

    @un1que said in OpenVPN Server - Multi WAN:

    Seit gestern läuft es über localhost ohne Probleme. Das ist tatsächlich die optimalste Lösung.

    Und läuft prima mit 2 oder mehr Leitungen. Wenn man dem Client als Settings die Timeouts ein wenig herunterschraubt und beide Lines mit remote... Einträgen konfiguriert, bekommt man auch ein flott reagierendes und sauberes Failover bei der Einwahl hin, sollte eine Leitung mal ausfallen. Darum empfehle ich auch allermeistens OVPN > IPSEC was für Clients IMHO ein wirklicher Krampf einzurichten ist (vor allem mit Clients aus unterschiedlichen Hemisphären wie Win/Mac/iXXX/Mobiles).

    Gruß



  • @JeGr Ja, genau so habe ich das auch eingerichtet mit mehreren remote-Einträgen.

    Ich habe jedoch ein kleines Problem festgestellt: u.a. wurde so der VPN-Server auf dem Port 443 eingerichtet. Trotz "port-share localhost 443" gab es wohl irgendwelche Schwierigkeiten und die pfSense ist mir 2-3 mal innerhalb von 2 Tagen abgestürzt. Gestern habe ich dann mal den Port des VPN-Servers verlegt und entsprechend auch die NAT-Regel angepasst 443 => 4443. Seitdem ist wohl Ruhe und die pfSense läuft stabil. Jemand eine Idee, woran es gelegen haben könnte?



  • Würde einfach 2 Instanzen laufen lassen. UDP und TCP, dann brauchst du nicht mit port-share arbeiten. Habe damit bisher überhaupt keine Probleme.



  • @bahsig Genau so lief es bei mir die ganze Zeit: UDP und TCP getrennt. Aber soweit ich weiß, hat das ja nichts mit port-share zu tun - das braucht man doch explizit für den Server mit dem 443 Port.

    Ist denn dein Setup genau so über localhost eingerichtet? Davor liefen bei mir nämlich die 2 unterschiedlichen Server problemlos. Erst nachdem ich auf localhost umgestellt habe, kamen bei mir die Abstürze.



  • Beide Instanzen laufen bei mir auf localhost, UDP auf 1194 und TCP auf 443. Abstürze hatte ich bisher nicht. Müssen wir mal weitersuchen.



  • Hmm ok, komisch. Wie gesagt, seitdem ich den Server-Port verschoben habe (der Eingangsport ist 443 geblieben), läuft es ohne Abbrüche. Vllt. sollte ich mal versuchen den port-share Parameter rauszunehmen?



  • Wie gesagt, bei mir läuft der Server ohne Custom Options. Nat sieht bei mir so aus
    0_1541887804396_F3DA437C-8FCD-443D-952A-ADD008C2ADBD.jpeg

    Mit Port-Routing hatte ich Probleme, deshalb genattet.



  • Ich weiß jetzt nicht mehr warum ich überhaupt port-share benutzt habe (das WebUI ist auf einem anderen Port eingerichtet), daher habe ich diesen Parameter mal rausgenommen und schaue wie sich die pfSense die nächsten Tage verhält. Sollte es wieder mal Abstürze geben, sage ich Bescheid.



  • Alles klar, dann warten wir mal ab.



  • Hab nochmal in die Doku zum Thema port-share geschaut. Da gibt man die IP des Webservers an. Denke nicht, dass dein Webserver auf localhost, also der Sense läuft. Denke du hast damit einen „Zirkelbezug“ gebastelt, mit dem die Sense nicht umgehen konnte und deshalb abgestürzt ist. Das Problem sollte sich eigentlich mit dem Entfernen dieser Option erledigt haben.



  • Wie gesagt, ich weiß nicht mehr genau, weshalb ich es damals so eingerichtet habe. Das war wohl in irgendeiner Anleitung drin oder ich habe es aus dem Forum hier. Womöglich lief bei mir das WebUI noch auf dem 443 Port.

    Kann tatsächlich an diesem Parameter gelegen haben. Weiterhin ist mir halt auch aufgefallen, dass damals (wo es die Probleme mit den Abstürzen gab) unter dem OpenVPN Server (:443) 2 undefined Einträge gelistet wurden, wo sich ständig die Ports verändert haben.
    Diese sind nun verschwunden, jedoch gab es diese auch gestern nicht mehr als ich kurz mit dem port-share Parameter getestet habe.

    Naja, aber solange es nun keine Abstürze mehr gibt, möchte ich mich nicht beschweren.


  • Moderator

    port-share brauchst du an der Stelle lediglich, wenn du von außen auf einen Webserver auf der gleichen IP auf der auch das VPN läuft per 443 TLS zugreifen willst. Dann wird - theoretisch - OpenVPN prüfen, ob es ein VPN Paket oder ein echtes HTTPS Paket ist und leitet es dann ggf. weiter an den Webserver. Das steht dann normalerweise auch mit

    port-share x.y.z.a 443
    

    in der Konfiguration, wobei x.y.z.a dann die IP des internen Servers ist, der die TLS Pakete bekommt die kein VPN sind. Ist im Prinzip der Tarnung gedacht, damit man den Verkehr innerhalb echtem TLS Traffic verstecken kann und bei Aufruf einen echten Webserver am Start hat der antwortet.

    Wenn du nicht gerade nen Webserver da laufen hast oder die WebUI nach draußen mappst, sondern da eh nur VPN läuft, kannst du port-share auch einfach sein lassen, dann wirds wohl auch kein Problem geben :)



  • Ja, genau. Das habe ich nun auch eingesehen, kann mich aber, wie gesagt, absolut nicht mehr dran erinnern, wieso ich den Parameter damals überhaupt übernommen habe.
    Nachdem ich den Parameter nun entfernt habe, läuft es zum Glück schon ein paar Tage ohne Probleme durch. Daher kann die Sache wohl abgehackt werden.

    Danke nochmal an alle beteiligten!


  • Moderator

    Das doch super :) Ging auch nicht ums "einsehen", sondern eher wofür der da ist. Hätte zudem auch funktionieren können/sollen wenn er richtig konfiguriert ist. Aber vielleicht war da der Haken. Anyway schön dass es jetzt läuft!