Holepunching und TTL



  • Hi!
    Ich habe für eine Anwendung (ein altes Spiel) eine Erweiterung programmiert, die als Technik für die NAT-Weiterleitung UDP Hole Punching benutzt. Da ich für das Spiel keinen Code habe, habe ich den Hook für meinen entsprechenden Code via Assembly in das Binary "hard gecoded". Jeder kann sich vorstellen, dass man sowas nur ungern macht und sehr fehleranfällig beim schreiben ist.

    Mein Problem ist nun folgendes: mein Code bekommt den Socket-Deskriptor vom Spiel übergeben, mit dem er das Holepunching durchführt (klar, ich will ja das selbe IP-Port-Paar weiterbenutzen). Zum Holepunching an sich setzte ich den TTL-Wert via setsockopt() auf 1 oder 2 herunter, sodass das Paket nicht weit kommt, sondern höchstens einen Eintrag in die NAT-Tabelle des Routers schafft. Es ist sogar zwingend notwendig, da, falls das Paket bis zum anderen Ende durchkommen sollte, als Packet des Spiels interpretiert wird, woraufhin die Anwendung abschmiert. Jetzt habe ich bei einigen Leuten beobachtet, dass genau das passiert. Bei einigen stellte sich heraus, dass sie in der selben Stadt waren und die Anzahl der IP-Knotenpunkte unterhalb des TTLs lag, woraufhin ein Senken des TTLs auf 1-2 half. Bei einigen jedoch scheint das keinen Unterschied zu machen, die TTL-Option wird scheinbar vollkommen ignoriert.
    Nach einer Google-Recherche fand ich, dass wohl einige Router das TTL-Flag ignorieren. Daher meine Frage: kann ich irgendwie auf anderem Wege gewährleisten, dass die Pakete ihr Ziel nicht erreichen? Oder muss ich den umständlichen Weg wählen, ein weiteres mal das Binary zu modifizieren, um Holepunching-Pakete als solche zu erkennen und zu ignorieren, anstatt sie ans Spiel weiterzureichen?



  • Dieser Thread wurde von Moderator/in nachtfeuer aus dem Forum Rund um die Programmierung in das Forum Spiele-/Grafikprogrammierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Anmelden zum Antworten