Transparente Internetverbindung mit PS3 gemeinsam nutzen

1490
paob

Ich versuche, ein japanisches Karaoke-Spiel auf einer PS3 zu spielen, aber die Latenz ist einfach fürchterlich und das Herunterladen von Songs dauert ewig. Eine Empfehlung, die ich erhielt, war, meinen Laptop in einen SOCKS-Proxy zu verwandeln, indem er sich über OpenSSH auf dem Server meines Freundes in Japan anmeldete.

[Server] ---- (SSH-Tunnel) --- [wlan0 <Laptop> eth0] --- [PS3]

Also habe ich das gemacht:

ssh -ND 4711 login@friend.server 

In diesem Moment habe ich versucht, google.com von meinem Laptop aus mit Firefox (mit SOCKS-Proxy-Einstellungen) zu erreichen, und ich wurde zu google.co.jp umgeleitet. Großartig.

Dann wollte ich meine PS3 über Ethernet mit meinem Laptop verbinden.

Ich habe eth0 zuerst eine statische IP zugewiesen mit:

ip link set dev eth0 up ip addr add 139.96.30.100/24 dev eth0 

Ich habe dann einen DHCP-Server auf meinem Laptop gestartet, um der PS3 eine IP mit zu geben:

systemctl start dhcp4.service 

Und schließlich habe ich NAT mit etwas iptables-Zauber aktiviert:

iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE 

Ich ging zu "Networks Settings" und testete die Verbindung von meiner PS3 und schön, es schien zu funktionieren. Ich habe den Webbrowser gestartet und google.com wurde an google.fr weitergeleitet. Wie dumm, ich habe vergessen, die Verbindung an den richtigen Port weiterzuleiten.

Nach vielen Verbindungsweiterleitungen über iptables, die nicht funktionierten, entschied ich mich für einen transparenten Proxy: Redsocks. http://darkk.net.ru/redsocks/

Nach der Installation habe ich /etc/redsocks.conf an meine Bedürfnisse angepasst:

redsocks { local_ip=0.0.0.0; // documentation says: "use 0.0.0.0 if you want to listen on every interface" local_port=31388; ip=127.0.0.1; port=4711; } 

Der Rest wurde ausgelassen, wie in https://github.com/darkk/redsocks/blob/master/redsocks.conf.example

Ich habe die grundlegenden Redsocks.Rules verwendet, die in dem von mir installierten Paket enthalten sind:

*nat :PREROUTING ACCEPT [0:0] :INPUT ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] :REDSOCKS - [0:0]  # Redirect all output through redsocks -A OUTPUT -p tcp -j REDSOCKS  # Whitelist LANs and some other reserved addresses. # https://en.wikipedia.org/wiki/Reserved_IP_addresses#Reserved_IPv4_addresses -A REDSOCKS -d 0.0.0.0/8 -j RETURN -A REDSOCKS -d 10.0.0.0/8 -j RETURN -A REDSOCKS -d 127.0.0.0/8 -j RETURN -A REDSOCKS -d 169.254.0.0/16 -j RETURN -A REDSOCKS -d 172.16.0.0/12 -j RETURN -A REDSOCKS -d 192.168.0.0/16 -j RETURN -A REDSOCKS -d 224.0.0.0/4 -j RETURN -A REDSOCKS -d 240.0.0.0/4 -j RETURN  # Redirect everything else to redsocks port -A REDSOCKS -p tcp -j REDIRECT --to-ports 31338  COMMIT 

Dadurch konnte ich die SOCKS-Proxy-Einstellungen für Firefox und luakit nicht mehr verwenden, was ich bei google.com in google.co.jp test bestätigte.

Ich dachte, ich müsste noch NAT aktivieren, also redid ich:

iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE 

Die PS3 umging anscheinend den systemweiten Proxy und google.com wurde auf google.fr umgeleitet. Ich habe dann die Datei redsocks.rules so verwendet, wie sie ohne Masquerading war. Ich glaubte, dass ich sowieso kein NAT brauche, da der Redsocks-Server offenbar auf jeder Schnittstelle zuhört.

Ich habe versucht, die PS3 erneut anzuschließen, und die folgende Meldung wurde angezeigt (nachdem die PS3 eine IP von meinem DHCP-Server erhalten hatte und keine Internetverbindung herstellen konnte):

"Bei der Kommunikation mit dem Server ist ein Fehler aufgetreten. Dies ist ein DNS-Fehler."

Dort bin ich gerade. Ich denke, es könnte ein Problem mit Redsocks sein, da es einen DNS-Server namens dnstc verwendet, der dies gemäß der Dokumentation tut:

dnstc { // fake and really dumb DNS server that returns "truncated answer" to // every query via UDP, RFC-compliant resolver should repeat same query // via TCP in this case. local_ip = 127.0.0.1; local_port = 5300; } 

Meine wilde Vermutung ist, dass meine PS3 die DNS-Auflösung über UDP anfordert und dass dnstc immer mit "abgeschnittener Antwort" antwortet. Wenn ich es richtig verstehe, sollte es die Anfrage erneut über TCP senden, aber anscheinend erzeugt es stattdessen einen DNS-Fehler.

Was soll ich machen? Oder genauer:

  • Sind Redsocks unnötig? Bin ich nur iptables-Analphabet?
  • Sollte ich einen DNS-Server installieren und die DNS-Anfragen weiterleiten? Wenn das so ist, wie?

Vielen Dank für das Lesen dieser Textwand! Hoffe, es saugt nicht zu viel für eine erste Frage ...

7

1 Antwort auf die Frage

2
Jarett Millard

You could set the PS3 to use a static DNS server. You could try OpenDNS, which has servers on 208.67.222.222 and 208.67.220.220, or try Google's public DNS server on 8.8.8.8 and 8.8.4.4.

Vielen Dank für Ihre Antwort! Leider habe ich so etwas schon probiert. Es scheint, als würden DNS-Pakete von dnstc abgefangen und daher niemals an den DNS-Server weitergeleitet. Ich werde meine Frage bald aktualisieren, um meine neuen mageren Erkenntnisse mitzuteilen ... paob vor 11 Jahren 0
Vielleicht ist der Fluss in etwa so: UDP-UDP -> dnstc -> TCP DNS -> wird von Redsocks aufgegriffen und umgeleitet. 'Wenn die DNS-Anforderung deshalb nicht zurückkommt, werden möglicherweise die DNS-Server-IPs zu den Redsocks hinzugefügt Whitelist würde die TCP-DNS-Anfrage durchlassen. Jarett Millard vor 11 Jahren 0