Compartilhando de forma transparente conexão com a Internet por proxy com o PS3

7

Eu estou tentando jogar um jogo de karaokê japonês em um PS3, mas a latência é horrível e o download de músicas leva uma eternidade. Uma recomendação que recebi foi transformar meu laptop em um proxy SOCKS fazendo login via OpenSSH no servidor do meu amigo no Japão.

[servidor] ---- (túnel ssh) --- [wlan0 < laptop > eth0] --- [PS3]

Então foi o que eu fiz:

ssh -ND 4711 [email protected]

Nesse momento, tentei acessar o google.com do meu laptop usando o Firefox (com as configurações de proxy do SOCKS) e fui redirecionado para o google.co.jp. Ótimo.

Então eu queria conectar meu PS3 ao meu laptop via Ethernet.

Primeiro atribuí um IP estático à eth0 com:

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

Eu iniciei um servidor DHCP no meu laptop para dar um IP ao PS3 com:

systemctl start dhcp4.service

E finalmente habilitei o NAT com alguma magia do iptables:

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

Eu fui para "Configurações de Redes" e testei a conexão do meu PS3 e legal, parecia funcionar. Eu lancei o navegador da web e o google.com foi redirecionado para o google.fr. Quão estúpido, esqueci de encaminhar a conexão para a porta certa.

Depois de muito redirecionamento de conexão através do iptables que não funcionou, decidi tentar usar um proxy transparente: redsocks. link

Após a instalação, modifiquei /etc/redsocks.conf para atender às minhas necessidades:

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

com o restante deixado como estava em link

Eu usei as redsocks.rules básicas fornecidas no pacote que instalei:

*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

Isso permitiu que eu parasse de usar as configurações de proxy SOCKS no Firefox e luakit, que confirmei com o google.com se transformando no teste google.co.jp.

Eu percebi que ainda precisava ativar o NAT, então refiz:

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

O PS3 aparentemente ignorou o proxy para todo o sistema e o google.com foi redirecionado para o google.fr. Eu então usei o arquivo redsocks.rules como estava sem se mascarar. Eu acreditava que, de qualquer maneira, eu não precisaria do NAT, já que o servidor Redsocks aparentemente escuta em todas as interfaces.

Tentei conectar o PS3 novamente e recebi a seguinte mensagem (depois que o PS3 adquiriu um IP do meu servidor DHCP e falhou ao obter uma conexão com a Internet):

"Ocorreu um erro durante a comunicação com o servidor. Este é um erro de DNS."

É onde eu estou agora. Eu acho que pode ser um problema com redsocks, já que ele usa um servidor DNS chamado dnstc que faz isso de acordo com a documentação:

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

Meu palpite é que meu PS3 solicita a resolução de DNS via UDP e que o dnstc responde com "resposta truncada" o tempo todo. Se bem entendi, ele deve reenviar o pedido através do TCP, mas, aparentemente, ele produz um erro de DNS, em vez de

O que devo fazer? Ou mais precisamente:

  • Os redsocks são desnecessários? Eu sou apenas iptables-analfabeto?
  • Devo instalar um servidor DNS e encaminhar as solicitações de DNS? Se sim, como?

Obrigado por ler essa parede de texto! Espero que não sugue muito para uma primeira pergunta ...

    
por paob 08.02.2013 / 19:21

1 resposta

2

Você pode definir o PS3 para usar um servidor DNS estático. Você pode tentar o OpenDNS , que tem servidores em 208.67.222.222 e 208.67.220.220 , ou tente servidor DNS público do Google em 8.8.8.8 e 8.8.4.4 .

    
por 11.02.2013 / 07:04