Compartir una conexión a Internet proxy transparente con PS3

Compartir una conexión a Internet proxy transparente con PS3

Estoy intentando jugar un juego de karaoke japonés en una PS3, pero la latencia es terrible y la descarga de canciones lleva una eternidad. Una recomendación que recibí fue convertir mi computadora portátil en un proxy SOCKS iniciando sesión a través de OpenSSH en el servidor de mi amigo en Japón.

[servidor]----(túnel ssh)---[wlan0 <portátil> eth0]---[PS3]

Entonces eso es lo que hice:

ssh -ND 4711 [email protected]

En ese momento intenté acceder a google.com desde mi computadora portátil usando Firefox (con configuración de proxy SOCKS) y fui redirigido a google.co.jp. Excelente.

Luego quise conectar mi PS3 a mi computadora portátil a través de Ethernet.

Primero asigné una IP estática a eth0 con:

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

Luego inicié un servidor DHCP en mi computadora portátil para darle una IP a la PS3 con:

systemctl start dhcp4.service

Y finalmente habilité NAT con algo de magia de iptables:

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

Fui a "Configuración de red" y probé la conexión desde mi PS3 y, bueno, pareció funcionar. Inicié el navegador web y google.com fue redirigido a google.fr. Qué estupidez, olvidé reenviar la conexión al puerto correcto.

Después de muchos reenvíos de conexiones a través de iptables que no funcionaron, decidí intentar usar un proxy transparente: redsocks.http://darkk.net.ru/redsocks/

Después de la instalación modifiqué /etc/redsocks.conf para adaptarlo a mis necesidades:

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;
}

con el resto fuera como estaba enhttps://github.com/darkk/redsocks/blob/master/redsocks.conf.example

Utilicé las reglas básicas de redsocks.rules proporcionadas en el paquete que instalé:

*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

Eso me permitió dejar de usar la configuración del proxy SOCKS en Firefox y luakit, lo cual confirmé con la prueba de google.com convirtiéndose en google.co.jp.

Pensé que todavía tenía que habilitar NAT así que lo rehice:

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

La PS3 aparentemente pasó por alto el proxy de todo el sistema y google.com fue redirigido a google.fr. Luego utilicé el archivo redsocks.rules tal como estaba sin enmascararlo. Creí que de todos modos no necesitaría NAT ya que el servidor redsocks aparentemente escucha en cada interfaz.

Intenté conectar la PS3 nuevamente y recibí el siguiente mensaje (después de que la PS3 adquirió una IP de mi servidor DHCP y no pudo obtener una conexión a Internet):

"Se produjo un error durante la comunicación con el servidor. Este es un error de DNS".

Ahí es donde estoy ahora. Supongo que podría ser un problema con redsocks, ya que utiliza un servidor DNS llamado dnstc que hace esto de acuerdo con la documentación:

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;
}

Mi suposición descabellada es que mi PS3 solicita resolución DNS a través de UDP y que dnstc responde con una "respuesta truncada" todo el tiempo. Si entiendo correctamente, ¿debería reenviar la solicitud a través de TCP pero aparentemente produce un error de DNS?

¿Qué tengo que hacer? O más precisamente:

  • ¿Son innecesarios los calcetines rojos? ¿Soy simplemente un analfabeto en iptables?
  • ¿Debo instalar un servidor DNS y reenviar las solicitudes de DNS? ¿Si es así, cómo?

¡Gracias por leer ese muro de texto! Espero que no sea demasiado pesado para una primera pregunta...

Respuesta1

Puedes configurar la PS3 para que utilice un servidor DNS estático. Tu podrías intentarOpenDNS, que tiene servidores en 208.67.222.222y 208.67.220.220, o pruebaEl servidor DNS público de Google8.8.8.8y en 8.8.4.4.

información relacionada