Partilha de ligação à Internet com proxy transparente e PS3

7

Estou tentando jogar um jogo de karaokê japonês no 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, efetuando login via OpenSSH no servidor de meu amigo no Japão.

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

Então foi isso que eu fiz:

ssh -ND 4711 [email protected]

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

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

Primeiro, atribuai um IP estático a eth0 com:

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

Em seguida, iniciei um servidor DHCP no meu laptop para fornecer um IP ao PS3 com:

systemctl start dhcp4.service

E finalmente habilitei o NAT com alguma mágica 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 bom, parecia funcionar. Lancei o navegador e o google.com foi redirecionado para google.fr. Que idiota, eu esqueci de encaminhar a conexão para a porta certa.

Depois de muito encaminhamento de conexão através do iptables que não funcionou, decidi tentar usar um proxy transparente: redsocks. http://darkk.net.ru/redsocks/

Após a instalação, modifiquei o /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 resto deixado de fora como em https://github.com/darkk/redsocks/blob/master/redsocks.conf.example

Eu usei o redsocks.rules básico fornecido 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 me permitiu parar de usar as configurações de proxy do SOCKS no Firefox e no luakit, que eu confirmei com o google.com se transformando no teste google.co.jp.

Achei que ainda precisava ativar o NAT, então refiz:

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

Aparentemente, o PS3 ignorou o proxy em todo o sistema e o google.com foi redirecionado para google.fr. Eu então usei o arquivo redsocks.rules como estava sem mascarar. Eu acreditava que, de qualquer maneira, não precisaria do NAT, pois 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 à Internet):

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

É onde eu estou agora. Eu acho que pode haver 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 solicite resolução de DNS via UDP e que o dnstc responda com "resposta truncada" o tempo todo. Se bem entendi, ele deve reenviar a solicitação através do TCP, mas aparentemente produz um erro de DNS?

O que devo fazer? Ou, mais precisamente:

  • Redsocks é desnecessário? 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 seja demais para uma primeira pergunta ...

paob
fonte

Respostas:

2

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

Jarett Millard
fonte
Obrigado pela sua resposta! Infelizmente, eu já tentei esse tipo de coisa. Parece que os pacotes DNS são interceptados pelo dnstc e, portanto, nunca são retransmitidos para o servidor DNS. Vou atualizar a minha pergunta em breve para compartilhar minhas novas descobertas escassos ...
paob
Talvez o fluxo seja mais ou menos assim: UDP DNS -> dnstc -> TCP DNS -> gets picked up by redsocks and redirected.se é por isso que a solicitação de DNS não está retornando, talvez, adicionando os IPs do servidor DNS à lista de permissões dos redsocks, isso permitiria que a solicitação de DNS do TCP passasse.
Jarett Millard