[HOW TO] Metin2 P-Server auf Linux aufsetzen

12/12/2020 10:56 Endless.#1
Guten Morgen zusammen :)


Ich war lange nicht hier aber eine Kleinigkeit wollte ich mit dieser Com
aufjeden Fall noch teilen. Es soll hauptsächlich Leuten unterstützen die von Windows auf Linux umsteigen. Letzte Zeit steigen viele um und die Jenigen die es kennen, werden wahrscheinlich Wine auf Linux benutzen.

kurz: Wine ist für Linux ein Tool welches ermöglicht Windows Anwendungen zu starten. Denoch ist der für bekannt schnell zu heiß zu laufen. Bei Windows haben wir bis lang immer mit Portmap, Navicat und Filezilla oder andere Tools gearbeitet.


Auf Wine verzichte ich für den Server daher in dem Tutorial, denn wir werden es ganz einfach mit Linux Methoden vollbringen.



Was wir brauchen:

- Einen Computer/Laptop mit Linux Ubuntu/Mint oder ArchLinux
- Basic Kenntnisse über das Terminal.
- bereits vorhandenen P-Server Files
- Geduld :D


Ich arbeite z.B mit Linux Mint.

Part1:

Wir werden natürlich Virtual Box, Filezilla und ein DB Client brauchen und installieren diese
mit einem Befehl im Terminal:

Code:
sudo apt install virtualbox -y
sudo apt install filezilla -y
fur MySQL:

So, nun haben wir mal des ganze. Ich selbst nutze es zu Testzwecken immer auf Hamachi. Wer es auf Hamachi will, muss Hamachi auf Linux installieren, es erfordert kein Account wie auf Windows.

Herunterladen könnt ihr Hamachi hier:


Nun starten wir VirtualBox und müssen dort wieder unsere Gateway und unsere IP einrichten, wie das geht, sollte bekannt sein.

Jetzt kommt der Schritt, bei dem die meisten Hamachi Server oder Heimnetzserver keine Connects zum Server bekommen. Das liegt daran das wir kein Portmap benutzen. Stattdessen arbeiten wir mit IPTABLES
und müssen lediglich jeden Metin2 Port ne Umleitung einrichten. TCP und UDP

Ich habe hier hier alle Befehle aufgelistet, am besten packt ihr sie euch in eine .sh Datei und macht sie ausführbar z.B
Code:
chmod +x m2ports.sh -- ( ausführbar)
./m2ports.sh --- (Sich die ganze Schreiberei oder Copy Paste ersparen) :D

Hier die IPTABLE Rules:
Code:
iptables -t nat -A PREROUTING -i ham0 -p tcp --dport 11002 -j DNAT --to-destination EURE_IP:11002
iptables -t nat -A PREROUTING -i ham0 -p tcp --dport 13000 -j DNAT --to-destination EURE_IP:13000
iptables -t nat -A PREROUTING -i ham0 -p tcp --dport 13001 -j DNAT --to-destination EURE_IP:13001
iptables -t nat -A PREROUTING -i ham0 -p tcp --dport 13002 -j DNAT --to-destination EURE_IP:13002
iptables -t nat -A PREROUTING -i ham0 -p tcp --dport 13003 -j DNAT --to-destination EURE_IP:13003
iptables -t nat -A PREROUTING -i ham0 -p tcp --dport 13004 -j DNAT --to-destination EURE_IP:13004
iptables -t nat -A PREROUTING -i ham0 -p tcp --dport 13061 -j DNAT --to-destination EURE_IP:13061
iptables -t nat -A PREROUTING -i ham0 -p tcp --dport 13069 -j DNAT --to-destination EURE_IP:13069
iptables -t nat -A PREROUTING -i ham0 -p tcp --dport 13099 -j DNAT --to-destination EURE_IP:13099
iptables -t nat -A PREROUTING -i ham0 -p udp --dport 11002 -j DNAT --to-destination EURE_IP:11002
iptables -t nat -A PREROUTING -i ham0 -p udp --dport 13000 -j DNAT --to-destination EURE_IP:13000
iptables -t nat -A PREROUTING -i ham0 -p udp --dport 13001 -j DNAT --to-destination EURE_IP:13001
iptables -t nat -A PREROUTING -i ham0 -p udp --dport 13002 -j DNAT --to-destination EURE_IP:13002
iptables -t nat -A PREROUTING -i ham0 -p udp --dport 13003 -j DNAT --to-destination EURE_IP:13003
iptables -t nat -A PREROUTING -i ham0 -p udp --dport 13004 -j DNAT --to-destination EURE_IP:13004
iptables -t nat -A PREROUTING -i ham0 -p udp --dport 13061 -j DNAT --to-destination EURE_IP:13061
iptables -t nat -A PREROUTING -i ham0 -p udp --dport 13069 -j DNAT --to-destination EURE_IP:13069
iptables -t nat -A PREROUTING -i ham0 -p udp --dport 13099 -j DNAT --to-destination EURE_IP:13099
iptables -t nat -A POSTROUTING -j MASQUERADE
sysctl net.ipv4.ip_forward=1
echo open Port 11002.. done!
echo open Port 13001.. done!
echo open Port 13002.. done!
echo open Port 13003.. done!
echo open Port 13004.. done!
echo open Port 13061.. done!
echo open Port 13069.. done!
echo open Port 13099.. done!
echo enable Port-forwarding
echo all Metin Ports are open!
ACHTUNG: "ham0" steht für mein Hamachi Interface Adapter. Dieser könnte vom Namen her bei verschiedenen Distributionen anders sein.
Wenn ihr ein anderen Adapter nehmen wollt z.B LAN dann gibt ein
Code:
ifconfig
und dort seht ihr idR. dann Adapter wie: wlan0, eth0 und lo.
Abweichen kann es mit "enp0s25 oder wlp3s0"

Nun müssten alle Ports freigeschaltet sein bzw umgeleitet werden.
Habt ihr alles richtig gemacht, könnt ihr auch von ausserhalb auf euren Server connecten. Den Metin2 Client kann man dann über Wine starten. Ich selbst hab den Metin Server auf nem Extra Live Computer laufen und es funktioniert.

Wenn die Umleitung wieder aufheben wollt:
Code:
iptables --flush



Letzter Part damit ihr auch ne HP + Registerpage hosten könnt:

Code:
sudo apt install apache2 -y
sudo service apache2 start  ------ Falls es nicht automatisch startet
sudo sysctl enabable apache2 ---> Apache2 beim Start des Computers ausführen
Damit auch die ältere Generation ihre Registerpage aufsetzen kann, muss für Apache2 PHP installiert werden:



Damit wäre es das auch schon, ich hoffe es wird einigen Leuten leichter fallen, sein Projekt auch unter Linux fortzusetzen :)
bei Fragen PN und ich hoffe ich werde hier nicht mit bösen Sprüchen bombadiert xD Es soll nur den Umstieg auf ne neue Distro unterstützen, dass die Leute ja nicht denken, das es auf Linux nicht geht.



Mit freundlichen Grüßen, Endless :)
12/12/2020 11:00 SiiVAS#2
Danke für das Tutorial

Aber wenn du schon nicht den eigentlich wichtigen und eher komplizierteren Part mit Wine nicht zeigst, dann ist dieses Tutorial hier definitiv nicht für Anfänger geeignet.
12/12/2020 11:09 Endless.#3
Quote:
Originally Posted by SiiVAS View Post
Danke für das Tutorial

Aber wenn du schon nicht den eigentlich wichtigen und eher komplizierteren Part mit Wine nicht zeigst, dann ist dieses Tutorial hier definitiv nicht für Anfänger geeignet.
Wer Wine benutzen möchte kann sich dies ganz leicht mit
Code:
sudo apt install wine  winehq-stable winehq-devel winetricks wine-staging-compat
nach installieren und so seine Windows Tools installieren.
Für Metin2 Client wird normal Python und DirectX 9 benötigt,
diese Komponenten kriegt ihr mittlerweile durch "winetricks"
01/22/2021 09:39 Zeratoxx#4
Hi,

ein paar Fragen blieben bei mir offen:
  1. Welche VM soll denn über VirtualBox gestartet werden? Ist FreeBSD gemeint?
  2. Ist mit "EURE_IP" die IP der VM gemeint? (Wie findet man die? ifconfig in der VM zu schreiben ist da wenig hilfreich)
    "EURE_IP" war wohl eher nicht auf VMs bezogen, von daher egal.
    Sollte jemand Virtualbox nutzen und da Port Forwarding machen muss:








Quote:
Originally Posted by Endless. View Post
Ich habe hier hier alle Befehle aufgelistet, am besten packt ihr sie euch in eine .sh Datei und macht sie ausführbar z.B
Code:
chmod +x m2ports.sh -- ( ausführbar)
./m2ports.sh --- (Sich die ganze Schreiberei oder Copy Paste ersparen) :D
Ich habe die Befehle für ein sh-script etwas optimiert:
Code:
#!/bin/sh

INTERNET_MODUL="ham0"
EURE_IP=127.0.0.1

iptables -t nat -A PREROUTING -i $INTERNET_MODUL -p tcp --dport 11002 -j DNAT --to-destination $EURE_IP:11002
iptables -t nat -A PREROUTING -i $INTERNET_MODUL -p tcp --dport 13000 -j DNAT --to-destination $EURE_IP:13000
iptables -t nat -A PREROUTING -i $INTERNET_MODUL -p tcp --dport 13001 -j DNAT --to-destination $EURE_IP:13001
iptables -t nat -A PREROUTING -i $INTERNET_MODUL -p tcp --dport 13002 -j DNAT --to-destination $EURE_IP:13002
iptables -t nat -A PREROUTING -i $INTERNET_MODUL -p tcp --dport 13003 -j DNAT --to-destination $EURE_IP:13003
iptables -t nat -A PREROUTING -i $INTERNET_MODUL -p tcp --dport 13004 -j DNAT --to-destination $EURE_IP:13004
iptables -t nat -A PREROUTING -i $INTERNET_MODUL -p tcp --dport 13061 -j DNAT --to-destination $EURE_IP:13061
iptables -t nat -A PREROUTING -i $INTERNET_MODUL -p tcp --dport 13069 -j DNAT --to-destination $EURE_IP:13069
iptables -t nat -A PREROUTING -i $INTERNET_MODUL -p tcp --dport 13099 -j DNAT --to-destination $EURE_IP:13099
iptables -t nat -A PREROUTING -i $INTERNET_MODUL -p udp --dport 11002 -j DNAT --to-destination $EURE_IP:11002
iptables -t nat -A PREROUTING -i $INTERNET_MODUL -p udp --dport 13000 -j DNAT --to-destination $EURE_IP:13000
iptables -t nat -A PREROUTING -i $INTERNET_MODUL -p udp --dport 13001 -j DNAT --to-destination $EURE_IP:13001
iptables -t nat -A PREROUTING -i $INTERNET_MODUL -p udp --dport 13002 -j DNAT --to-destination $EURE_IP:13002
iptables -t nat -A PREROUTING -i $INTERNET_MODUL -p udp --dport 13003 -j DNAT --to-destination $EURE_IP:13003
iptables -t nat -A PREROUTING -i $INTERNET_MODUL -p udp --dport 13004 -j DNAT --to-destination $EURE_IP:13004
iptables -t nat -A PREROUTING -i $INTERNET_MODUL -p udp --dport 13061 -j DNAT --to-destination $EURE_IP:13061
iptables -t nat -A PREROUTING -i $INTERNET_MODUL -p udp --dport 13069 -j DNAT --to-destination $EURE_IP:13069
iptables -t nat -A PREROUTING -i $INTERNET_MODUL -p udp --dport 13099 -j DNAT --to-destination $EURE_IP:13099
iptables -t nat -A POSTROUTING -j MASQUERADE
sysctl net.ipv4.ip_forward=1
echo open Port 11002.. done!
echo open Port 13001.. done!
echo open Port 13002.. done!
echo open Port 13003.. done!
echo open Port 13004.. done!
echo open Port 13061.. done!
echo open Port 13069.. done!
echo open Port 13099.. done!
echo enable Port-forwarding
echo all Metin Ports are open!
01/22/2021 13:40 Endless.#5
Quote:
Originally Posted by Zeratoxx View Post
Hi,

ein paar Fragen blieben bei mir offen:
  1. Welche VM soll denn über VirtualBox gestartet werden? Ist FreeBSD gemeint?
  2. Ist mit "EURE_IP" die IP der VM gemeint? (Wie findet man die? ifconfig in der VM zu schreiben ist da wenig hilfreich)
    "EURE_IP" war wohl eher nicht auf VMs bezogen, von daher egal.
    Sollte jemand Virtualbox nutzen und da Port Forwarding machen muss:










Ich habe die Befehle für ein sh-script etwas optimiert:
Code:
#!/bin/sh

INTERNET_MODUL="ham0"
EURE_IP=127.0.0.1

iptables -t nat -A PREROUTING -i $INTERNET_MODUL -p tcp --dport 11002 -j DNAT --to-destination $EURE_IP:11002
iptables -t nat -A PREROUTING -i $INTERNET_MODUL -p tcp --dport 13000 -j DNAT --to-destination $EURE_IP:13000
iptables -t nat -A PREROUTING -i $INTERNET_MODUL -p tcp --dport 13001 -j DNAT --to-destination $EURE_IP:13001
iptables -t nat -A PREROUTING -i $INTERNET_MODUL -p tcp --dport 13002 -j DNAT --to-destination $EURE_IP:13002
iptables -t nat -A PREROUTING -i $INTERNET_MODUL -p tcp --dport 13003 -j DNAT --to-destination $EURE_IP:13003
iptables -t nat -A PREROUTING -i $INTERNET_MODUL -p tcp --dport 13004 -j DNAT --to-destination $EURE_IP:13004
iptables -t nat -A PREROUTING -i $INTERNET_MODUL -p tcp --dport 13061 -j DNAT --to-destination $EURE_IP:13061
iptables -t nat -A PREROUTING -i $INTERNET_MODUL -p tcp --dport 13069 -j DNAT --to-destination $EURE_IP:13069
iptables -t nat -A PREROUTING -i $INTERNET_MODUL -p tcp --dport 13099 -j DNAT --to-destination $EURE_IP:13099
iptables -t nat -A PREROUTING -i $INTERNET_MODUL -p udp --dport 11002 -j DNAT --to-destination $EURE_IP:11002
iptables -t nat -A PREROUTING -i $INTERNET_MODUL -p udp --dport 13000 -j DNAT --to-destination $EURE_IP:13000
iptables -t nat -A PREROUTING -i $INTERNET_MODUL -p udp --dport 13001 -j DNAT --to-destination $EURE_IP:13001
iptables -t nat -A PREROUTING -i $INTERNET_MODUL -p udp --dport 13002 -j DNAT --to-destination $EURE_IP:13002
iptables -t nat -A PREROUTING -i $INTERNET_MODUL -p udp --dport 13003 -j DNAT --to-destination $EURE_IP:13003
iptables -t nat -A PREROUTING -i $INTERNET_MODUL -p udp --dport 13004 -j DNAT --to-destination $EURE_IP:13004
iptables -t nat -A PREROUTING -i $INTERNET_MODUL -p udp --dport 13061 -j DNAT --to-destination $EURE_IP:13061
iptables -t nat -A PREROUTING -i $INTERNET_MODUL -p udp --dport 13069 -j DNAT --to-destination $EURE_IP:13069
iptables -t nat -A PREROUTING -i $INTERNET_MODUL -p udp --dport 13099 -j DNAT --to-destination $EURE_IP:13099
iptables -t nat -A POSTROUTING -j MASQUERADE
sysctl net.ipv4.ip_forward=1
echo open Port 11002.. done!
echo open Port 13001.. done!
echo open Port 13002.. done!
echo open Port 13003.. done!
echo open Port 13004.. done!
echo open Port 13061.. done!
echo open Port 13069.. done!
echo open Port 13099.. done!
echo enable Port-forwarding
echo all Metin Ports are open!
FreeBSD ist des richtige.
01/22/2021 14:33 Zeratoxx#6
Hast du evtl. Empfehlungen für stabil laufende Server files? Evtl auch als vorbereitete VM, wäre echt nice ^^
01/27/2021 17:08 Endless.#7
Quote:
Originally Posted by Zeratoxx View Post
Hast du evtl. Empfehlungen für stabil laufende Server files? Evtl auch als vorbereitete VM, wäre echt nice ^^

Aktuell sind diese von Fliege im Trend :D Es gibt bereits entbuggte Serverfiles mit fast allen neuen Systemen und ein script welches dir erleichtert die src zu compilen.

Wenn du dich mit FreeBSD Linux auskennst, könntest du theoretisch auf ne VM verzichten und diesen ganzen Metin Kram direkt in ein Live FreeBSD schmeißen. Müsstest dann alle dazugehörigen Komponenten wie html, php und mysql usw nachinstallieren sowie ein ftp Service einbauen, damit würde dein Server direkt mit der Leistung deines Rechners laufen. Bei der VM bin ich mir jetzt nicht 100% sicher ob diese, die komplette Leistung die ich da einstelle, auch wirklich übernommen wird, weil Linux hat ja noch ne SWAP Partition im System selbst. Ich muss gucken wie hoch der swap dort sein wird.
01/27/2021 17:39 Zeratoxx#8
Lieben Dank für den Tipp 👌

Was das Thema mit FreeBSD angeht, ein Server wurde schon angemietet, nur bietet der Provider leider kein plain FreeBSD an, somit ist es grade ubuntu für Server. Das schöne daran ist, dass, soweit ich das weiß, VMs unter Linux eigentlich etwa genauso viel Leistung haben, als wenn man sie mit den gleichen zugewiesenen Ressourcen richtig laufen lassen würde 😅

Jedenfalls wurde der ubuntu server schon so hergerichtet, dass er easy VMs laufen lassen kann, allerdings hakt es bisher immer an der letztendlichen Einrichtung von FreeBSD 🤷*♂️ Aber es wird, peu á peu 👌