Netgate Discussion Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Search
    • Register
    • Login

    [beantwortet] Subdomains auf unterschiedliche Ports/Dienste forwarden

    Scheduled Pinned Locked Moved Deutsch
    29 Posts 5 Posters 6.0k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • S
      simposs
      last edited by

      Hallo Leute,
      ich habe mich jetzt schon eine Weile durch verschiedene Foren gelesen und bin mir nach wie vor nicht sicher, ob mein Vorhaben in dieser Konstellation überhaupt möglich ist.

      Ich habe eine feste öffentliche IP und eine Domain, die ich auf die öffentliche IP (WAN Interface pfsense) weitergeleitet habe. Ich habe den Bind Server und den haproxy installiert. Ich kann verschiedene Subdomains, z.B.  ts1.meinedomain.de und ts2.meinedomain.de auf verschiedene interne (DMZ) Webserver leiten kann. Nun meine Frage, ist es mit EINER einzigen öffentlich IP möglich mehrere Subdomains auf verschiedene internet Dienste (nicht HTTP/HTTPS) weiterzuleiten, also z.B. auf 2 verschiedene TeamSpeak-Server mit unterschiedlichen Ports auf einem Server in der DMZ?
      Ich bin mir nicht sicher, ob ich mich verständlich ausgedrückt habe deswegen nochmal kurz zum "IST"-Stand:

      1 öffentliche IP = 1.2.3.4 auf meinedomain.de weitergeleitet
      2 interne Minecraft-Server (Beispiel) in DMZ die mit unterschiedlichen Ports auf einem physischen Server laufen minecraft.meinedomain.local
      Nun will ich bestenfalls beide Server über mc1.meinedomain.de und mc2.meinedomain.de erreichen, ohne den Port dahinter angeben zu müssen, ist das möglich?

      So wie ich das sehe, bekomme ich mit dem Reverse-Proxy nur HTTP/HTTPS anfragen "umgebogen" oder?
      Mit 2 öffentlichen IPs wäre es kein Problem, nur habe ich leider nur die eine.  :-[

      1 Reply Last reply Reply Quote 0
      • V
        viragomann
        last edited by

        Hi,

        nein, das kann nur ein Proxy, und ein solcher auch nur dann, wenn er vom Client den gewünschten Hostnamen übermittelt bekommt. Damit das geschieht, muss die Übertragung des Namens im verwendeten Protokoll festgelegt sein. Ich kenne das nur von HTTP, und auch da war das nicht immer so.
        Ansonsten löst der Client den Namen in eine IP Adresse auf und steuert dann diese an.

        Das kannst du wohl nur mit unterschiedlichen externen Ports lösen.

        1 Reply Last reply Reply Quote 0
        • P
          pisasalesgmbh
          last edited by

          Das sehe ich fast anders, du nutzt ja HAProxy, dieses ist doch ein TCP Load Balancer. Wenn Teamspeak mit TCP funktioniert, solltest du das hinbekommen. Du gibst dort doch ein Frontend, sowie Backend an. Aber leider kenne ich mich nicht mit Teamspeak aus, mit HAProxy habe ich schon einiges realisiert (Exchange Server, Postfix).

          1 Reply Last reply Reply Quote 0
          • S
            simposs
            last edited by

            Vielen Dank für die Antworten. TeamSpeak läuft über UDP und war auch nur ein Beispiel, ich hatte es konkret mit verschiedenen Minecraft-Servern versucht aber es auch nicht über den HAproxy hinbekommen.
            Ein Minecraft-Server läuft std auf TCP 25565 und beim clientseitigen Eintragen eines Servers ohne den Port (also nur meinedomain.de) wird dieser automatisch angenommen. Ich müsste dem HAProxy also "klarmachen" das die Eingehenden Subdomains mc1.meinedomain.de und mc2.meinedomain.de anschließend auf verschiedene internet IPs/Ports geleitet werden richtig?
            Muss der HAproxy dann am WAN-Port lauschen oder vorher etwas aufs loopback Interface "umgebogen" werden? Vielleicht ist die Beschreibung im HAproxy auch nur etwas verwirrend, da der (laut Beschriftung) nur auf HTTP/HTTPs Anfragen hört…

            1 Reply Last reply Reply Quote 0
            • P
              pisasalesgmbh
              last edited by

              Da muss ich dich leider enttäuschen, HAProxy kann kein UDP. Kannst du Teamspeak nicht irgendwie "umbiegen"?

              1 Reply Last reply Reply Quote 0
              • S
                simposs
                last edited by

                Vielleicht klappt das irgendwie aber ich wollte erstmal sehen ob und wie ich das überhaupt zum laufen bekomme, deshalb jetzt vorläufig mit 2 Minecraft-Servern die auch mit TCP laufen.
                Ich habe es gerade nochmal mit dem HAproxy probiert und ich bekomme nichtmal den FQDN eines der Server in das Frontend (not a valid source IP address or alias) aber im BIND Server ist der Host drin und kann aufgelöst werden.

                PS. hat denn vielleicht irgendjemand den HAproxy (oder alternativ) mit Diensten/Ports abseits vom HTTP/HTTPS-Protokoll laufen?

                1 Reply Last reply Reply Quote 0
                • P
                  pisasalesgmbh
                  last edited by

                  Ich schicke dir morgen früh mal eine Config für SMTP, vielleicht hilft das schon weiter…

                  1 Reply Last reply Reply Quote 0
                  • S
                    simposs
                    last edited by

                    Das wäre super, vielleicht habe ich ja nur irgendwo einen Denkfehler  :-[

                    1 Reply Last reply Reply Quote 0
                    • P
                      pisasalesgmbh
                      last edited by

                      So nun mal ein Beispiel aus der haproxy.cfg:

                      #Globale Einstellungen kannst du selber setzen

                      frontend tcp_mail
                              log global
                              mode tcp
                              option tcplog
                              bind *:25
                              acl tux_srv -i tux.pisa.hom
                              acl mailgate_srv -i mailgate.pisa.hom
                              use_backend tux if tux_srv
                              use_backend mailgate if mailgate_srv

                      backend tux
                              log global
                              mode tcp
                              option tcplog
                              balance roundrobin
                              server mail1 10.20.30.1:25
                      server mail1 10.20.30.2:25

                      backend mailgate
                              log global
                              mode tcp
                              option tcplog
                              balance roundrobin
                              server mail3 10.20.30.3:25
                      server mail1 10.20.30.4:25

                      #ENDE

                      Gruß
                      David

                      1 Reply Last reply Reply Quote 0
                      • S
                        simposs
                        last edited by

                        Boa super, vielen Dank, da werde ich mich später erstmal ausgiebig mit beschäftigen!  :)

                        1 Reply Last reply Reply Quote 0
                        • S
                          simposs
                          last edited by

                          Hmmm du fährst da ja eher eine Lastenverteilung aber ich möchte wenn ich minecraft1.meinedomain.de eingebe NUR auf dem minecraftserver1 und beim eingeben von minecraft2.meinedomain.de auf dem anderen minecraftserver (mit anderem Port) oder equivalent zu deinem Beispiel eben auf dem jeweils anderen SMTP-Server. Vielleicht muss ich noch dazuschreiben, dass der Server auf dem die beiden Dienste (Minecraft) laufen der gamesrv.meinedomain.de ist und ich zusätzlich noch 2 aliase (minecraft1 und minecraft2 auf die 10.133.7.2) für den selben Server angelegt habe.

                          Meine Konfiguration sieht derzeit so aus:

                          frontend FrontendMinecraft-merged
                          bind 0.0.0.0:25565 name 0.0.0.0:25565 
                          mode tcp
                          log global
                          timeout client 30000
                          acl aclusr_source_ip_minecraft2 src minecraft2
                          acl aclusr_source_ip_minecraft1 src minecraft1
                          use_backend Minecraft2_tcp_ipvANY if aclusr_source_ip_minecraft2
                          use_backend Minecraft1_tcp_ipvANY if aclusr_source_ip_minecraft1
                          default_backend MinecraftDefault_tcp_ipvANY

                          backend MinecraftDefault_tcp_ipvANY
                          mode tcp
                          balance source
                          timeout connect 30000
                          timeout server 30000
                          retries 3
                          option httpchk
                          server gamesrv.meinedomain.org 10.133.7.2:25565

                          backend Minecraft2_tcp_ipvANY
                          mode tcp
                          balance source
                          timeout connect 30000
                          timeout server 30000
                          retries 3
                          option httpchk
                          server minecraft2.meinedomain.org 10.133.7.2:25566

                          backend Minecraft1_tcp_ipvANY
                          mode tcp
                          balance source
                          timeout connect 30000
                          timeout server 30000
                          retries 3
                          option httpchk
                          server minecraft1.meinedomain.org 10.133.7.2:25565

                          1 Reply Last reply Reply Quote 0
                          • F
                            flix87
                            last edited by

                            ich glaube schon das es so ist wie viragomann sagt
                            Der Proxy muss ja wissen welche Server gemeint ist. Also bräuchtest du einen Minecarft Proxy (ob es das gibt keine Ahnung)

                            Loadbalancing ist ja was andere das geht auf TCP Ebene das mag mit der HAProxy sogar gehen.

                            Aber gezielt auf einen Server zu verweisen da muss man schon in das Protokoll reinschauen und dann entscheiden. Muss Proxy und Protokoll aber auch erstmal hergeben und unterstützen.
                            Bei HTTP klappt das weil im Protokoll (also schon über der TCP Schicht) drin steht wo der Client hin will und das kann der Proxy auswerten.
                            Wenn Minecraft das  nicht macht und es keinen Proxy gibt der in das Minecarft Protokoll reinschaut kann geht es einfach nicht.

                            Das einfachste wäre unterschiedliche Ports zu nehmen. Spricht da was gegen? habe ich bei anderen Gameservern auch schon so gemacht.

                            1 Reply Last reply Reply Quote 0
                            • S
                              simposs
                              last edited by

                              Hallo Flix,

                              ich versuche es ja mit unterschiedlichen Ports (25565 und 25566), doch bekomme es partout nicht hin.  :-
                              Entweder ich habe irgendwo einen groben Denkfehler oder es funktioniert einfach nicht mit nur einer öffentlichen IP und beliebigen TCP-Ports.

                              Eigentlich geht es ja nur darum, dass man bei der Serverwahl (clientseitig) keinen Port angeben muss, sondern anhand der subdomain unterschieden wird.

                              Mein technisches allgemeinwissen in Sachen IT ist schon umfangreich aber wenn es so ins eingemachte geht, stehe ich manchmal so richtig auf dem Schlauch…

                              1 Reply Last reply Reply Quote 0
                              • F
                                flix87
                                last edited by

                                @simposs:

                                Eigentlich geht es ja nur darum, dass man bei der Serverwahl (clientseitig) keinen Port angeben muss, sondern anhand der subdomain unterschieden wird.

                                Das dachte ich mir schon ist ja auch eine schöne Sache und nutze ich bei HTTP recht viel. In dem Fall wird es aber leider nicht gehen.

                                Du machst also im Moment das?
                                WAN_IP:25565 ->NAT-> Server1_InterneIP:25565
                                WAN_IP:25566 ->NAT-> Server2_InterneIP:25565

                                Oder wie hast du es im Moment eingerichtet im NAT?

                                1 Reply Last reply Reply Quote 0
                                • V
                                  viragomann
                                  last edited by

                                  @simposs:

                                  ich versuche es ja mit unterschiedlichen Ports (25565 und 25566), doch bekomme es partout nicht hin.  :-\

                                  Eigentlich geht es ja nur darum, dass man bei der Serverwahl (clientseitig) keinen Port angeben muss, sondern anhand der subdomain unterschieden wird.

                                  Das widerspricht sich doch.
                                  Du brauchst die beiden Ports extern. Das können zwar andere sein, als du intern am Server selbst verwendest bzw. können es intern auch unterschiedliche IP sein, aber es benötigt unterschiedliche Ports an der WAN Adresse und diese müssen dann auch am Client angegeben werden.

                                  1 Reply Last reply Reply Quote 0
                                  • S
                                    simposs
                                    last edited by

                                    @flix87:

                                    @simposs:

                                    Eigentlich geht es ja nur darum, dass man bei der Serverwahl (clientseitig) keinen Port angeben muss, sondern anhand der subdomain unterschieden wird.

                                    Das dachte ich mir schon ist ja auch eine schöne Sache und nutze ich bei HTTP recht viel. In dem Fall wird es aber leider nicht gehen.

                                    Du machst also im Moment das?
                                    WAN_IP:25565 ->NAT-> Server1_InterneIP:25565
                                    WAN_IP:25566 ->NAT-> Server2_InterneIP:25565

                                    Oder wie hast du es im Moment eingerichtet im NAT?

                                    Genau beide Ports werden internet auf die selbe interne Server-IP geleitet, sind also auch von außen über den jeweiligen port erreichbar.

                                    1 Reply Last reply Reply Quote 0
                                    • S
                                      simposs
                                      last edited by

                                      @viragomann:

                                      @simposs:

                                      ich versuche es ja mit unterschiedlichen Ports (25565 und 25566), doch bekomme es partout nicht hin.  :-\

                                      Eigentlich geht es ja nur darum, dass man bei der Serverwahl (clientseitig) keinen Port angeben muss, sondern anhand der subdomain unterschieden wird.

                                      Das widerspricht sich doch.
                                      Du brauchst die beiden Ports extern. Das können zwar andere sein, als du intern am Server selbst verwendest bzw. können es intern auch unterschiedliche IP sein, aber es benötigt unterschiedliche Ports an der WAN Adresse und diese müssen dann auch am Client angegeben werden.

                                      ja von außen wird der std Minecraft-Port (25565) benutzt, ich dachte nur dass ich das dann über die subdomain internet auf einen anderen port/server biegen kann.

                                      1 Reply Last reply Reply Quote 0
                                      • F
                                        flix87
                                        last edited by

                                        Wenn das NAT stimmt und die Firewall Regeln auch sollte das gehen.

                                        Außer Minecarft mag es nicht wenn der Port über NAT geändert wird kann ich mir aber nicht vorstellen.

                                        NAT und Firewall sehen bei dir wie aus?

                                        1 Reply Last reply Reply Quote 0
                                        • S
                                          simposs
                                          last edited by

                                          NAT und Rules siehe Anhang.
                                          Wenn es wirklich funktionieren sollte idetifiziere ich vielleicht die hosts (minecraft1/2.meinedomain.de) falsch?

                                          PS. KA wieso die VPN Rule 2 mal drin ist  ::)

                                          NAT.PNG
                                          NAT.PNG_thumb
                                          RULES.PNG
                                          RULES.PNG_thumb

                                          1 Reply Last reply Reply Quote 0
                                          • F
                                            flix87
                                            last edited by

                                            Wenn es wirklich funktionieren sollte idetifiziere ich vielleicht die hosts (minecraft1/2.meinedomain.de) falsch?

                                            Was meinst du denn damit genau?
                                            Die Domains können beide auf deine WAN Adresse zeigen. Unterscheiden kannst du anhand der Adressen aber nicht wer auf welchen Server soll.

                                            Die Regeln sehen soweit okay aus. Sollte damit gehen
                                            Hat die PfSense direkt das WAN oder ist noch ein Server davor?

                                            Klappt denn die NAT Regel für HTTP? Weil die ja genauso aufgebaut ist.

                                            Vielleicht noch eine lokale Firewall auf dem Server?

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post
                                            Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.