Gemeinsame Nutzung einer transparent übertragenen Internetverbindung mit PS3

7

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

[server] ---- (ssh tunnel) --- [wlan0 <laptop> eth0] --- [PS3]

So habe ich es gemacht:

ssh -ND 4711 [email protected]

In diesem Moment habe ich versucht, mit Firefox (mit SOCKS-Proxyeinstellungen) von meinem Laptop aus auf google.com zuzugreifen, und ich wurde zu google.co.jp weitergeleitet. Toll.

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 zu geben:

systemctl start dhcp4.service

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

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

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

Nach vielen Verbindungsweiterleitungen über nicht funktionierende iptables habe ich mich für einen transparenten Proxy entschieden: 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 wie in https://github.com/darkk/redsocks/blob/master/redsocks.conf.example ausgelassen

Ich habe die grundlegenden redsocks.rules verwendet, die in dem Paket enthalten sind, das ich installiert habe:

*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 Verwendung der SOCKS-Proxy-Einstellungen unter Firefox und luakit einstellen, was ich durch die Umwandlung von google.com in den google.co.jp-Test bestätigt habe.

Ich dachte, ich müsste noch NAT aktivieren, also habe ich Folgendes geändert:

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

Die PS3 hat anscheinend den systemweiten Proxy umgangen und google.com wurde auf google.fr umgeleitet. Ich habe dann die redsocks.rules-Datei so verwendet, als ob sie nicht maskiert wäre. Ich glaubte, dass ich NAT sowieso nicht brauchen würde, da der Redsocks-Server anscheinend auf jeder Schnittstelle lauscht.

Ich habe versucht, die PS3 erneut zu verbinden, und die folgende Meldung erhalten (nachdem die PS3 eine IP-Adresse von meinem DHCP-Server bezogen und keine Internetverbindung hergestellt hat):

"Während 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 DNS-Auflösung über UDP anfordert und dass dnstc die ganze Zeit mit "abgeschnittener Antwort" antwortet. Wenn ich es richtig verstehe, sollte es die Anfrage erneut über TCP senden, aber anscheinend wird stattdessen ein DNS-Fehler erzeugt?

Was soll ich machen? Oder genauer:

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

Vielen Dank, dass Sie diese Textmauer gelesen haben! Hoffe, es ist nicht zu viel für eine erste Frage saugen ...

paob
quelle

Antworten:

2

Sie können die PS3 so einstellen, dass sie einen statischen DNS-Server verwendet. Sie können OpenDNS mit Servern auf 208.67.222.222und 208.67.220.220oder den öffentlichen DNS-Server von Google auf 8.8.8.8und testen8.8.4.4 .

Jarett Millard
quelle
Vielen Dank für Ihre Antwort! Leider habe ich so etwas schon probiert. Anscheinend werden DNS-Pakete von dnstc abgefangen und daher nie an den DNS-Server weitergeleitet. Ich werde meine Frage aktualisiert werden bald meine neue spärlichen Erkenntnisse zu teilen ...
PAOB
Möglicherweise sieht der Ablauf so aus: UDP DNS -> dnstc -> TCP DNS -> gets picked up by redsocks and redirected.Wenn die DNS-Anfrage aus diesem Grund nicht zurückkommt, fügen Sie möglicherweise die DNS-Server-IPs zur Redsocks-Whitelist hinzu, damit die TCP-DNS-Anfrage durchgelassen wird.
Jarett Millard