
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 isso que eu fiz:
ssh -ND 4711 [email protected]
Naquele momento, tentei acessar google.com do 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 atribuí um IP estático à 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
Fui em “Configurações de Rede” e testei a conexão do meu PS3 e legal, pareceu funcionar. Iniciei o navegador da web e google.com foi redirecionado para google.fr. Que estúpido, 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 resolvi tentar usar um proxy transparente: redsocks.http://darkk.net.ru/redsocks/
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 resto deixado de fora como estavahttps://github.com/darkk/redsocks/blob/master/redsocks.conf.example
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 SOCKS no Firefox e no luakit, o que confirmei com o teste google.com se transformando em google.co.jp.
Achei que ainda precisava ativar o NAT, então refiz:
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
O PS3 aparentemente contornou o proxy de todo o sistema e o google.com foi redirecionado para google.fr. Em seguida, usei o arquivo redsocks.rules como estava, sem mascaramento. Eu acreditava que de qualquer maneira não precisaria de 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 não conseguiu obter uma conexão com a Internet):
"Ocorreu um erro durante a comunicação com o servidor. Este é um erro de DNS."
É onde 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 resolução de DNS via UDP e que o dnstc responde com "resposta truncada" o tempo todo. Se bem entendi, ele deveria reenviar a solicitação através de TCP, mas aparentemente produz um erro de DNS?
O que devo fazer? Ou mais precisamente:
- As redsocks são desnecessárias? Eu sou apenas analfabeto em iptables?
- Devo instalar um servidor DNS e encaminhar as solicitações DNS? Se sim, como?
Obrigado por ler aquela parede de texto! Espero que não seja muito ruim para uma primeira pergunta ...
Responder1
Você pode configurar o PS3 para usar um servidor DNS estático. Você poderia tentarOpenDNS, que possui servidores ativados 208.67.222.222
e 208.67.220.220
, ou tenteServidor DNS público do Googleem 8.8.8.8
e 8.8.4.4
.