# [gelöst]CS:S-Server unter Gentoo macht alles und doch nicht

## sewulba

Zugegeben: Es passt vielleicht nicht ganz hier rein, aber hier wird mir immer geholfen und es hat auch mit Gentoo zu tun!

Folgendes Szenario: Gentoo-Server dual Xeon. Counter Strike Source dedicated-Server am Laufen drauf. 2 Netzwerkkarten (eth0 <- internes Device 192.168.1.1; eth1 <- externes Device an einem Kabelmodem per DHCP).

Unter anderem habe ich HLStatsX am Laufen, und genau da liegt mein Problem. Der CS:S-Server lï¿½uft klasse. Von intern, wie auch von extern erreichbar.

Mein Problem ist jetzt, dass HLStatsX oder auch CSS eigentlich nur das interne Device sieht. D.h. die Auflï¿½sung fï¿½r die Flaggen (Nationalitï¿½t) geht einfach nicht. Nur wenn ich den Server als Nur Lan-Spiel starte, dann gehts... Ich komme auch aus dem internen Netz nicht per HLServerWatch (Rcon-technisch) auf den Server. Nur von Extern funzt es wunderbar. RCon geht also nur von extern. Da ist das Problem begraben und ich weiss einfach nicht mehr weiter... 

Ich hoffe daher, dass hier auch ein paar CS:S-Gurus unterwegs sind, die mir helfen kï¿½nnen.   :Confused: 

Sewulba

mod edit: Zeichensatzprobleme im Subject repariert, Rest bitte selbst machen. Bitte ISO-8859-15 benutzen. --Earthwings

----------

## sewulba

No chance??? Keine Hilfe???   :Shocked: 

----------

## Tinitus

 *sewulba wrote:*   

> Zugegeben: Es passt vielleicht nicht ganz hier rein, aber hier wird mir immer geholfen und es hat auch mit Gentoo zu tun!
> 
> Folgendes Szenario: Gentoo-Server dual Xeon. Counter Strike Source dedicated-Server am Laufen drauf. 2 Netzwerkkarten (eth0 <- internes Device 192.168.1.1; eth1 <- externes Device an einem Kabelmodem per DHCP).
> 
> Unter anderem habe ich HLStatsX am Laufen, und genau da liegt mein Problem. Der CS:S-Server läuft klasse. Von intern, wie auch von extern erreichbar.
> ...

 

Hallo,

wenn Du das ein wenig allgemeiner darstellen könntest. Was bedeutet für Dich von extern? Internet über Router? Dann kann Dir bestimmt geholfen werden. Auch wenn man nicht CS zockt  :Wink: 

G. R.

----------

## sewulba

 *Tinitus wrote:*   

>  *sewulba wrote:*   Zugegeben: Es passt vielleicht nicht ganz hier rein, aber hier wird mir immer geholfen und es hat auch mit Gentoo zu tun!
> 
> Folgendes Szenario: Gentoo-Server dual Xeon. Counter Strike Source dedicated-Server am Laufen drauf. 2 Netzwerkkarten (eth0 <- internes Device 192.168.1.1; eth1 <- externes Device an einem Kabelmodem per DHCP).
> 
> Unter anderem habe ich HLStatsX am Laufen, und genau da liegt mein Problem. Der CS:S-Server läuft klasse. Von intern, wie auch von extern erreichbar.
> ...

 

Okay.   :Smile: 

Also meine Gentookiste ist mein Router! Ich habe 2 Netzwerkarten (eth0 und eth1). Wobei eth1 an das Kabelmodem geht und eth0 an meinen Switch! Ich benutze also keine Hardwarerouter. Auf diesem Gentoo-Server ist ein CS:S-Dedicated drauf. Aus irgendeinem Grund registriert der CS:S-Server oder auch HLStatsX (www.hlstatsx.com) nur das eth0-Device. Das hat zur folge, dass keine Namensauflösung auf die User vorgenommen werden kann. Habe intern einen DNS-Server (bind9) als ForwardingDNS laufen. D.h. wenn der Name nicht auf meinen DNS gefunden wird, dann wird die DNS-Anfrage an einen externen DNS-Server meines Probiders weitergeleitet, was soweit einwandfrei funktioniert. Nur beim HLStatsX funktioniert es nicht. 

Als Information, was HLstatsX macht:

Es analysiert die Logfiles von meinem CounterStrike Source-Server und schreibt die Daten in eine SQL-Datenbank, welche über den Browser mir und auch anderen Informationen wiedergibt über den Spielverlauf.

Um mein Problem etwas genauer zu erklären:

Es sollte möglich sein über HLStatsX den Spielern, die auf den Server spielen sogenannte Flaggen (Nationalität) vor den Namen zu setzen. Dies funktioniert aber leider nicht, da die Abfrage nur auf ETH0 erfolgt und nicht auch auf ETH1. Ausserdem ist mir aufgefallen, dass RCON vom Interen Netz nicht funktioniert. Aber das ist Nebensache, da dieses Problem mit  Sicherheit mit der Lösung vom Flaggenproblem gelöst sein wird!

Mehr Information kann ich leider nicht liefern, weil ich einfach nicht mehr weiter komme. Es bleibt nur noch zu sagen: Ansonsten läuft mein Server absolut 100%.

Sewulba

----------

## zworK

Bei dem Rcon Problem handelt es sich um einen bekannten Bug.

Das tritt auf, wenn der Rechner über mehr als ein Netzwerkinterface verfügt. Startest du den dann Server ohne den Parameter :

```

-ip xxx.xxx.xxx.xxx

```

um ihn so an ein Interface zu binden, lauscht der Server auf 127.0.0.1 TCP Port 27015 für rcon Befehle. Geb in der Serverconsole mal status ein, dann siehst du es. Oder genauer mit netstat.

----------

## trashcity

warum machst es nicht so 

mach dir auf einem Rechener eine Firewall

die Firewall soll NAT machen so dann hast 1Piplic IP und intern x Privat IP´s 

die Firewall soll die Ports auf die Ipadresse und Port´s deines CSS-SERVER routen  

wenn mich nicht alles täuscht solte das funken und du brauchst dich nicht mehr zu ärgern

----------

## sewulba

 *trashcity wrote:*   

> warum machst es nicht so 
> 
> mach dir auf einem Rechener eine Firewall
> 
> die Firewall soll NAT machen so dann hast 1Piplic IP und intern x Privat IP´s 
> ...

 

genauso läuft es bei mir nicht!  :Confused: 

----------

## zworK

So als spontaner Einfall könntest du deinem internen Interface eth0 ein weiteres Sub oder C-Netz zuordenen.

Beispiel für die /etc/conf.d/net

```

config_eth0=( "192.168.1.1" "192.168.2.1" )

```

Den Server dann mit parameter

```
-ip 192.168.2.1
```

starten und per iptables FORWARD Regeln für die benötigten Ports erstellen. Welche Ports genau weiß ich leider nicht.

Für HLStatsX könntest du testweise anstatt Bind

```
net-dns/dnsmasq
```

 benutzen. Vielleicht hat sich ja bei Bind der Fehlerteufel eingeschlichen.

Dnsmasq halte ich auch für einen einfachen Heimrouter völlig ausreichend.

----------

## sewulba

 *zworK wrote:*   

> So als spontaner Einfall könntest du deinem internen Interface eth0 ein weiteres Sub oder C-Netz zuordenen.
> 
> Beispiel für die /etc/conf.d/net
> 
> ```
> ...

 

Sehr interessante Ansätze... Allerdings würde der Aufruf mit '-ip 192.168.2.1' nicht gehen. Denn dann wird der Server nicht mehr bei Steam gelistet, aber dann geht soweit alles, auch die Abfrage auf Bind und RCON. Nur wie schon erwähnt ist dann der Dedicated nicht mehr gelistet in STEAM, also nur im LAN sichtbar... Ich glaube jetzt wirds kompliziert.   :Confused: 

Sew

----------

## zworK

Das hat mit dem Startparameter nichts zu tun. Ich habe das hier gerade mal auf meinem Laptop getestet.

Den Server mit -ip 192.168.30.3 gestartet und auf dem Router quick&dirty die UDP sowie TCP Ports 27000 bis 27030 durchgereicht.

Der Server startet und meldet sich bei 2 Master Servern an. Parallel dazu lasse ich noch per ngrep den traffic mitschneiden. Das dauert keine 2 Sekunden, da trudeln haufenweise "Queries" ein.

Du kannst ihn nur selber nicht finden, da Steam dir deine eigene externe IP zurückgibt. Ein query an diese IP landet von deinem Rechner aus wiederum auf dem Router (dem diese IP ja gehört) und wird verworfen. Du müsstest also alle CS:S Serveranfragen die von deinem Rechner aus an deine Internet-IP gerichtet sind, auf die Server-IP 192.168.2.1 umleiten.

...denke ich  :Smile: 

----------

## sewulba

 *zworK wrote:*   

> Das hat mit dem Startparameter nichts zu tun. Ich habe das hier gerade mal auf meinem Laptop getestet.
> 
> Den Server mit -ip 192.168.30.3 gestartet und auf dem Router quick&dirty die UDP sowie TCP Ports 27000 bis 27030 durchgereicht.
> 
> Der Server startet und meldet sich bei 2 Master Servern an. Parallel dazu lasse ich noch per ngrep den traffic mitschneiden. Das dauert keine 2 Sekunden, da trudeln haufenweise "Queries" ein.
> ...

 

Hmmm... Also momentan starte ich den Server so:

```
#!/bin/sh

cd /opt/cs_source

screen -A -m -d -S css1 /opt/cs_source/srcds_run -game cstrike -autoupdate -steamuser blabla -steampass geheim +maxplayers 32 +map de_dust2 +servercfgfile server1.cfg +mapcyclefile mapcycle1.txt +motdfile motd1.txt -port 27016 -rcon_port 27016 -tickrate 100
```

Und du meinst ich sollte da noch ein '-ip meine_interne_IP' eintragen? Das mit dem quick&dirty durchgereicht habe ich allerdings nicht verstanden...   :Crying or Very sad:  Abgesehen davon habe ich das ja schonmal so gemacht... Dann kam von ausserhalb keiner mehr zu mir rein... Also bin ich davon ausgegangen, dass er sich bei Steam nicht anmeldet.

Wenn du mit durchgereicht in der Shorewall akzeptiert meinst, dann kann ich das bestätigen. Das habe ich gemacht. Also ACCEPT blabla in der Datei RULES eingetragen... Werde es gleich nochmal mit Parameter '-ip' probieren...

Ich merke schon, du hast richtig Ahnung von der Materie!   :Razz:  Danke!!!

Sew

----------

## zworK

Genau, starte den Server mit dem Parameter 

```
-ip 192.168.2.1
```

Damit jetzt Leute von außerhalb auf den Server können musst du den Port 27016 TCP und UDP per FORWARD von deinem Internet-Device (ich geh mal von ppp0 aus) auf 192.168.2.1 weiterleiten.  Mit Shorewall kenne ich mich jedoch nicht aus. ACCEPT klingt jedoch nach der falschen Regel.

Mit iptables sollte es so gehen :

```

# iptables -A PREROUTING -t nat -i ppp0 -p tcp --dport 27016 -j DNAT --to-destination 192.168.2.1

# iptables -A PREROUTING -t nat -i ppp0 -p udp --dport 27016 -j DNAT --to-destination 192.168.2.1

```

Dass du im LAN auf den Server gelangst erledigt  schon das ip_forward.

Mit Quick&Dirty meinte ich, dass ich direkt den kompletten Portbereich von 27000-27030 weitergeleitet habe, da ich irgendwo auf weitere Ports gestoßen bin die der Server wohl benutzt. Ich erinnere mich da an 27005 und 27020. Am besten man danach googlen. Gut möglich das diese benötigt werden um sich beim Master Server anzumelden.

Um festzustellen, dass sich dein Server erfolgreich angemeldet hat, geh folgendermaßen vor :

Öffne 2 Consolen. In einer startest du ein "ngrep -d  eth0:1"  um den Traffic mitzuschneiden und anschließend in der Anderen den Server.

Beim Startvorgang solltest dann irgendwas von "Adding master server xyz" stehen. Wenn du jetzt wieder zum ngrep-Vorgang wechselst und die Anmeldung erfolgreich war, solltest du reihenweise Zeilen mit "TSource Engine Query" von verschiedenen IP-Adressen sehen. Dabei handelt es sich um einfache Statusanfragen von Spielern, die sich eine Serverliste geholt haben und nun deinen Server abfragen.

----------

## sewulba

 *zworK wrote:*   

> Genau, starte den Server mit dem Parameter 
> 
> ```
> -ip 192.168.2.1
> ```
> ...

 

Ja Superklasse...   :Razz: 

Es funzt...   :Laughing: 

Zumindest mit Deinen IPTABLES-Einträgen... Vielel, vielen DANK für deine sehr kompetente Hilfe.

Ich werde jetzt noch testen, ob ich es mit der Shorewall realisieren kann. Ich denke der richtige Eintrag wird folgender sein:

```
DNAT            net        loc:192.168.0.1      tcp     27016

DNAT            net        loc:192.168.0.1      udp     27016
```

Werde hier posten, ob diese Shorewall-Einträge auch geholfen haben!!! 

Nochmals dickes Danke schön an Dich @zworK  und auch an die anderen  :Wink: 

Sewulba

----------

## sewulba

 *sewulba wrote:*   

>  *zworK wrote:*   Genau, starte den Server mit dem Parameter 
> 
> ```
> -ip 192.168.2.1
> ```
> ...

 

Tjaaaaaaaaaaaaa. Ich habe die Zeilen von zworK in /etc/shorewall2/start eingetragen. Nun geht alles wunderbar!!! Juchhe!!!   :Laughing: 

----------

## sewulba

OOPS!!!   :Confused:  Zu früh gefreut!!! Wenn ich '-ip' benutze schaltet sich der VAC (Valve Anti Cheat aus). Jetzt fällt Euch/Dir nichts mehr ein, oder???

Sewulba

----------

## sewulba

Habe es mittlerweile GELÃST!!!

Den Port 1200 darf man nicht vergessen. Der wird anscheinend fÃ¼r VAC benutzt.

Tragt einfach zusÃ¤tzlich

```
iptables -A PREROUTING -t nat -i ppp0 -p udp --dport 1200 -j DNAT --to-destination 192.168.2.1
```

ein. Muss nur fÃ¼r UDP erfolgen. Das war's!!!

Sewulba

----------

