Synapse: NAT

Alle Fragen zur Netzwerkkommunikation
Scotty
Beiträge: 768
Registriert: Mo 4. Mai 2009, 13:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
CPU-Target: x86_64-linux-qt/gtk2
Kontaktdaten:

Synapse: NAT

Beitrag von Scotty »

Wenn ich mich lokal über 127.0.0.1 mit einem TCPClient zu einem TCPServer verbinde, klappt alles. Nehme ich die Internet-Adresse meines Routers (DSL-Modem), dann kommt nichts an. Das kann ich beheben, indem ich dem Router unter NAT sage, dass der Port 5000 an die Adresse 192.168.2.101 weiter geleitet werden soll. Wie kann ich diese Eingabe vermeiden. Ist das der HTTP-Tunnel?

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6208
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Synapse: NAT

Beitrag von af0815 »

Es ist im Wesen von NAT, das man sagen muß, welches Endgerät für den Port zuständig ist.

Abhilfen:
*) Man routet und verwendet kein NAT (Setzt Adressen voraus).
*) Man setzt den Rechner als DMZ ein (keine gute Lösung - wenn NAT auch ein bischen Firewall spielen soll)

Bei einem Tunnel (der nicht vom Router verwaltet wird) musst du trotzdem das NAT konfigurieren, denn sonst ist der Tunnelendpunkt wieder nicht von aussen erreichbar. Damit sind wir wieder - siehe oben.

Mein Vorschlag:
Nimm im Router für die 'erreichbaren' Rechner reservierte (oder fixe) Adressen und trage NAT Bereiche im Router ein. Dann hat man die Arbeit nur einmalig.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Scotty
Beiträge: 768
Registriert: Mo 4. Mai 2009, 13:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
CPU-Target: x86_64-linux-qt/gtk2
Kontaktdaten:

Re: Synapse: NAT

Beitrag von Scotty »

Ich verstehe kein Wort :oops: Routing ohne NAT? DMZ?
Auf keinen Fall will ich dem Benutzer zumuten, im Router irgendwas umstellen zu müssen. Wie macht das denn ein Browser? Bisher hatte ich Indy (DelphI) und ich kann mich nicht erinnern, dass ich da was basteln musste.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6208
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Synapse: NAT

Beitrag von af0815 »

Scotty hat geschrieben:Ich verstehe kein Wort :oops: Routing ohne NAT? DMZ?

Es gibt genügend Routerforen die das erklären :-)

Scotty hat geschrieben:Auf keinen Fall will ich dem Benutzer zumuten, im Router irgendwas umstellen zu müssen. Wie macht das denn ein Browser? Bisher hatte ich Indy (DelphI) und ich kann mich nicht erinnern, dass ich da was basteln musste.


Da ist der Browser der aktive Part und dann weis der Router, wer von 'innen' das Paket verschickt hat und zu wem es somit zurückgesendet werden soll. Wenn du also eine Kommunikation auf der selben Basis machst, so wirds auch funktionieren.
Sehr viele (Online) Spiele muten den Benutzern zu, Umstellungen im NAT zu machen. Deshalb sind auch die Routerforen voll mit Fragen zu Ports und NAT. Das Thema ist so alt wie die Multiplayerspiele selbst.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Scotty
Beiträge: 768
Registriert: Mo 4. Mai 2009, 13:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
CPU-Target: x86_64-linux-qt/gtk2
Kontaktdaten:

Re: Synapse: NAT

Beitrag von Scotty »

Wenn du zufällig noch den einen oder anderen guten Link hättest... :mrgreen:

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6208
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Synapse: NAT

Beitrag von af0815 »

Scotty hat geschrieben:Wenn du zufällig noch den einen oder anderen guten Link hättest... :mrgreen:

Google und Bling sind zwar schon erfunden aber hier ist einer der Einstiegspunkte
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

shokwave
Beiträge: 470
Registriert: Do 15. Nov 2007, 16:58
OS, Lazarus, FPC: Win11/Ubuntu Budgie (L 3.0 FPC 3.2.2)
CPU-Target: i386, x64
Wohnort: Gera

Re: Synapse: NAT

Beitrag von shokwave »

Sorry, dass ich mich einmische, aber ich hab dein Ziel noch nicht verstanden.
Nehme ich die Internet-Adresse meines Routers (DSL-Modem), dann kommt nichts an.
Auf keinen Fall will ich dem Benutzer zumuten, im Router irgendwas umstellen zu müssen.
Du möchtest, dass die Benutzer deines Progis sich mit dir verbinden? Fernwartung oder Trojaner? :mrgreen:
Nein im ernst. Muss sich das Progi mit einem bestimmten (deinem?) Rechner verbinden? Für Updates könnte man ja auch die Sachen ins Netz stellen und das Progi holt sie sich per HTTP (Port 80) oder FTP (Port 20 und 21). Dann hast du keinen Ärger mit NAT oder Firewalls.
Das kann ich beheben, indem ich dem Router unter NAT sage, dass der Port 5000 an die Adresse 192.168.2.101 weiter geleitet werden soll.
Port 5000 wird bereits für UPNP verwendet, du solltest einen anderen nehmen. Allerdings wirst du dann wohl Probleme mit den Firewalls bekommen, da unbekannte Ports meist blockiert werden.
mfg Ingo

Scotty
Beiträge: 768
Registriert: Mo 4. Mai 2009, 13:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
CPU-Target: x86_64-linux-qt/gtk2
Kontaktdaten:

Re: Synapse: NAT

Beitrag von Scotty »

shokwave hat geschrieben:Muss sich das Progi mit einem bestimmten (deinem?) Rechner verbinden? ... HTTP (Port 80) oder FTP (Port 20 und 21)...Port 5000 wird bereits für UPNP...Firewalls

Es geht um den Onlineteil eines Spiels mit bis zu vier Mitspielern. Bisher habe ich Indy benutzt (und Delphi) und kann mich nicht an solche zusätzlichen Einstellungen erinnern. Den Port habe ich variabel gehalten, vielleicht setze ich 5002 als default ein.

af0815 hat geschrieben:Google und Bling sind zwar schon erfunden

NAT liefert 67^6 Ergebnisse... :oops: Danke für den Link!

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Re: Synapse: NAT

Beitrag von monta »

Zur Not läuft Indy aber auch mit Lazarus und das unter Windows und Linux (wobei ich persönlich nur ersteres bisher getestet habe).
http://wiki.lazarus.freepascal.org/Indy_with_Lazarus

Vielleicht ist das (je nach Umfang) einfacher, als auf Synapse zu wechseln.
Johannes

Scotty
Beiträge: 768
Registriert: Mo 4. Mai 2009, 13:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
CPU-Target: x86_64-linux-qt/gtk2
Kontaktdaten:

Re: Synapse: NAT

Beitrag von Scotty »

monta hat geschrieben:Zur Not läuft Indy aber auch mit Lazarus...

Das wäre meine letzte Hoffnung. Allerdings ist Indy nicht gerade nativ Freepascal. Ich denke bei solchen Fragen an jemanden, der meinen Code herunter lädt und kompilieren will. Dazu sollen so wenig Komponenten wie möglich installiert werden müssen und der Benutzer soll auch seine Hierarchie anwenden können. Das, finde ich, ist ein Manko an Synapse - man kopiert es "irgendwo" hin. Am liebsten würde ich deswegen lNet benutzen, weil sich das schön integrieren lässt. Aber da bekomme ich andere Sachen nicht hin. :oops: Außerdem habe ich mich nun schon etwas in Synapse eingearbeitet. Ich folge morgen af0815s Hinweisen und sehe, was dabei heraus kommt.

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Synapse: NAT

Beitrag von Socke »

Ich weiß ja noch nicht, wie Indy die NAT umgehen soll, wenn Synapse das nicht schafft...
Vllt. hilft das Stichwort STUN weiter
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Hitman
Beiträge: 512
Registriert: Mo 25. Aug 2008, 18:17
OS, Lazarus, FPC: ArchLinux x86, WinVista x86-64, Lazarus 0.9.29, FPC 2.4.1
CPU-Target: x86
Wohnort: Chemnitz

Re: Synapse: NAT

Beitrag von Hitman »

STUN nützt hier relativ wenig, da das - wie alle NAT Tricksereien - nur für UDP funktioniert

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6208
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Synapse: NAT

Beitrag von af0815 »

Hitman hat geschrieben:STUN nützt hier relativ wenig, da das - wie alle NAT Tricksereien - nur für UDP funktioniert

Es hilft schon, damit man die 'externe' IP Adresse innerhalb des geNATteten Netzwerk sicher herausbekommt. Beim richtigen Konfigurieren hilfts dann weniger. Deshalb sollte der, der einen Server(-Prozess) betreibt schon ein wenig mit dem Router umgehen können (So wie die Spielefreaks).
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
theo
Beiträge: 10497
Registriert: Mo 11. Sep 2006, 19:01

Re: Synapse: NAT

Beitrag von theo »

Scotty hat geschrieben: Das, finde ich, ist ein Manko an Synapse - man kopiert es "irgendwo" hin. Am liebsten würde ich deswegen lNet benutzen,

Wo ist denn da das Problem?
Ich finde das ein Vorteil von Synapse. Die meisten Threads die man zu Indy liest, heissen: "Hilfe, kann Indy nicht installieren".
Ausserdem ist ein Package in wenigen Minuten gemacht. Hatte hier mal eins erstellt: http://www.lazarus.freepascal.org/index ... l#msg33281

Scotty
Beiträge: 768
Registriert: Mo 4. Mai 2009, 13:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
CPU-Target: x86_64-linux-qt/gtk2
Kontaktdaten:

Re: Synapse: NAT

Beitrag von Scotty »

"Aktiver Part" hat mich auf eine Idee gebracht. Der Serverthread bekommt eine Liste mit und merkt sich dort die Kommunikation. Jeder Client fragt in regelmäßigen Abständen (z.B. 10s) nach, ob irgendwas zu tun ist. Dadurch ist ein Chat freilich etwas zäh, aber prinzipiell könnte das doch gehen. Außerdem schreibe ich ja kein Chat-Programm. Was meint ihr?
@Theo: Für einen erfahrenen Benutzer ist da kein Problem. Alles wäre vom Feinsten, wenn jemand regelmäßig die Package erstellen würde und das irgendwo bei FPC oder Lazarus verlinkt wäre. Andererseits: Wenn man sich etwas damit beschäftigt, gehts auch so. BTW: Im SVN-Trunk sind jetzt die legacy-Funktionen ersetzt (news://news.gmane.org/gmane.comp.lang.d ... pse.public -> compatibility with FPC trunk).

Antworten