PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Teamspeak 3 - Unterschiedliche Ports pro Domain



xplod
31.07.17, 16:29
Hallo zusammen.

Ich hatte da eine Idee, bin mir aber nicht sicher, ob das überhaupt funktionieren kann:
Ich habe einen Server mit Plesk Installation (Emails, Domain, ...) und einem Teamspeak 3 Server mit mehreren Instanzen.

Nun hätte ich gerne, dass unterschiedliche Instanzen angesprungen werden, je nachdem, welche Domain in der Adresszeile angegeben wurde. Also quasi ein Mapping in der Form:

domain1.de:9987 -> localhost:9988
domain2.de:9987 -> localhost:9989
domain3.de:9987 -> localhost:9990

Ist das so machbar?
Ich hatte mal spaßeshalber versucht, mit NGINX und der proxy-Direktive selbst eine Art dispatcher zu bauen, aber anscheinend funktioniert das (nur mit Teamspeak?) nicht.
Hätte jemand eine andere Idee, wie man das hinbekommt?

Dukel
31.07.17, 17:11
Nginx ist für http(s).
Hast du mehrere IP's dafür?
Dann kannst du mit iptables Umleitungen bauen.

xplod
31.07.17, 18:47
Nginx ist für http(s).
Hast du mehrere IP's dafür?
Dann kannst du mit iptables Umleitungen bauen.

Leider nicht, da der Serveranbieter zusätzliche IPs nur mit triftigen Gründen verteilt (eine Vorgabe des RIPE)...
So trifftig ist der Grund leider nicht...

marce
31.07.17, 18:51
Wenn Du damit leben kannst, daß domain1:1234 und domain2:1234 auf der gleichen TS-Instanz landen kannst Du doch problemlos domain[1-x] auf deine IP registieren und dann eben domain1:1234, domain2:2345 u.s.w. verwenden.

xplod
31.07.17, 18:57
Wenn Du damit leben kannst, daß domain1:1234 und domain2:1234 auf der gleichen TS-Instanz landen kannst Du doch problemlos domain[1-x] auf deine IP registieren und dann eben domain1:1234, domain2:2345 u.s.w. verwenden.

Eben das will ich ja nicht. unterschiedliche Domains sollen unterschiedliche Instanzen anspringen...
Es wäre halt schön, wenn man im TS nicht mehr den Port mit angeben müsste, wenn man TS konfiguriert...

marce
31.07.17, 19:14
dann besorg Dir mehrere IPs.

... oder leg den TS-Entwicklern nahe, sie mögen doch bitte NamedVirtualHosts implementieren.

fork
31.07.17, 23:24
Leider nicht, da der Serveranbieter zusätzliche IPs nur mit triftigen Gründen verteilt (eine Vorgabe des RIPE)...

Eine Vorgabe vom RIPE? Totaler Quatsch(Und wenn den das so sagst, dann weisst Du auch wer im nächsten Jahrhundert keine IPv4 mehr zugeteilt bekommt :) ) Die können mit Ihren IPs machen, was Sie wollen.

Grund A) 99% Aller Anfragen nach zusätzlichen IP-Adressen kommen von Spammern.
Grund B) Sie haben nur sehr wenige IPv4-Adressen.

Falls A zutrifft, könntest Du Dein Anliegen schildern. Vielleicht hast Du Glück.

Falls B zutrifft, könnest Du ja einfach fragen, ob es so ist. Dann weisst Du wenigstens Bescheid.

DrunkenFreak
01.08.17, 08:00
Für mich ist das Grund genug. Beantrage neue IPs und gut ist.

xplod
01.08.17, 18:20
OK, IP habe ich bestellt und ist aktiviert.

IP-Tables ist wie folgt konfiguriert:
iptables -A PREROUTING -t nat --source $second_ip -p udp --dport 9987 -j DNAT --to-destination $first_ip:9988
iptables -A FORWARD -s $second_ip -d $first_ip -p udp --dport 9987 -j ACCEPT
iptables -A POSTROUTING -t nat -p udp --dport 9988 -j MASQUERADE

Aber leider werde ich bei Zugriff auf $second_ip:9987 auch wirklich mit 9987 verbunden...
Muß ich die INPUT Chain abändern, so dass das ACCEPT für 9987 nur für die erste IP gilt, oder ist das egal?
Aktuell ist die INPUT Chain so aufgebaut:
iptables -A INPUT -p udp --dport 9987 -j ACCEPT
iptables -A INPUT -p udp --dport 9988 -j ACCEPT
iptables -A INPUT -p udp --dport 9989 -j ACCEPT

Danke für eure Mühen und Tipps,
Gruß,
_X_

marce
01.08.17, 19:37
wäre es nicht einfacher, die TS-Instanzen direkt auf dem gewünschten Ports zu starten und direkt an die gewünschte IP zu binden?

xplod
01.08.17, 20:09
wäre es nicht einfacher, die TS-Instanzen direkt auf dem gewünschten Ports zu starten und direkt an die gewünschte IP zu binden?
Soweit ich weiß, kann TS nur durchgehende Port-Nummern erzeugen. Die IP ist ihm erstmal egal...

Ist es in Linux / IP möglich, einen Port nur auf eine bestimmte IP zu verbinden? Ich dachte immer, Ports wären global, so dass nicht mehrere Anwendungen den selben Port auf unterschiedlichen IPs anbieten können...

marce
01.08.17, 20:15
10s Google: http://forum.teamspeak.com/threads/60680-Bind-to-IP

Dukel
01.08.17, 20:17
default_voice_port=9987
voice_ip=0.0.0.0


So wie es aussieht kann man die IP konfigurieren.

xplod
02.08.17, 11:46
Jaaaaaa, aber ich hätte gerne, dass unter der Haupt-IP alle Server erreichbar sind, und nur über die zweite IP eine spezielle Instanz angesprungen wird... Denn ansonsten bräuchte ich ja zwei Server, zwei Lizenzen....

Ich möchte "einfach nur", dass IPTables die Ports so weiterleitet, dass es nach aussen so erscheint, als ob die Ports anders wären...

Ich tippe einfach mal darauf, dass die Regel "iptables -A INPUT -p udp --dport 9988 -j ACCEPT" schon direkt dafür sorgt, dass kein NAT gemacht wird... Vielleicht hätte da ja jemand eine zündende Idee :-)

Und ja, es geht auch ein bischen ums Prinzip, da ich die Feinheiten von Ethernet, IP und TCP besser verstehen möchte...

fork
02.08.17, 12:04
iptables -A PREROUTING -t nat --source $second_ip -p udp --dport 9987 -j DNAT --to-destination $first_ip:9988

Wahrscheinlich möchtest Du das hier:


iptables -A PREROUTING -t nat --destination $second_ip -p udp --dport 9987 -j DNAT --to-destination $first_ip:9988

Im übrigen bin ich mir nicht sicher, ob die Reihenfolge der Parameter nicht auch noch einen Unterschied macht. Ich würde das eher so schreiben:


iptables -t <TABLE> -A <CHAIN> -p <PROTOCOL> ...

----


iptables -A POSTROUTING -t nat -p udp --dport 9988 -j MASQUERADE

Das Masquerade sollte nicht notwendig sein. Dein Server muss seine eigene Adresse ja nicht sehen. Dort darf ruhig die Adresse des Clients drin stehen.

xplod
02.08.17, 14:00
Wahrscheinlich möchtest Du das hier:

iptables -A PREROUTING -t nat --destination $second_ip -p udp --dport 9987 -j DNAT --to-destination $first_ip:9988


Danke, genau das war es. Anstelle von --source muss da --destination stehen...
Danach konnte ich die FORWARD und POSTROUTING Rules löschen, und es lief alles wieder einwandfrei...

Vielen Herzlichen Dank euch allen!