Совместное использование прозрачного прокси-подключения к Интернету с PS3

1439
paob

Я пытаюсь играть в японскую игру караоке на PS3, но задержка просто ужасна, и загрузка песен занимает вечность. Одна рекомендация, которую я получил, состояла в том, чтобы превратить мой ноутбук в прокси-сервер SOCKS, выполнив вход через OpenSSH на сервер моего друга в Японии.

[сервер] ---- (туннель ssh) --- [wlan0 <ноутбук> eth0] --- [PS3]

Вот что я сделал:

ssh -ND 4711 login@friend.server 

В этот момент я попытался зайти на google.com со своего ноутбука с помощью Firefox (с настройками прокси-сервера SOCKS), и меня перенаправили на google.co.jp. Отлично.

Затем я хотел подключить PS3 к ноутбуку через Ethernet.

Сначала я назначил статический IP для eth0 с помощью:

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

Затем я запустил сервер DHCP на своем ноутбуке, чтобы дать IP для PS3 с:

systemctl start dhcp4.service 

И, наконец, я включил NAT с магией iptables:

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

Я зашел в «Настройки сети» и проверил соединение с моей PS3 и хорошо, похоже, работает. Я запустил веб-браузер, и google.com был перенаправлен на google.fr. Как глупо, я забыл перенаправить соединение на правильный порт.

После большой переадресации соединения через iptables, которая не работала, я решил попробовать использовать прозрачный прокси: redsocks. http://darkk.net.ru/redsocks/

После установки я изменил /etc/redsocks.conf в соответствии со своими потребностями:

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

с остальными, оставленными, как это было в https://github.com/darkk/redsocks/blob/master/redsocks.conf.example

Я использовал основные redsocks.rules, представленные в пакете, который я установил:

*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 

Это позволило мне прекратить использование настроек прокси-сервера SOCKS в Firefox и luakit, что я подтвердил, превратив google.com в тест google.co.jp.

Я решил, что мне все еще нужно включить NAT, поэтому я переделал:

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

PS3 явно обошел общесистемный прокси, и google.com был перенаправлен на google.fr. Затем я использовал файл redsocks.rules без маскировки. Я полагал, что в любом случае мне не понадобится NAT, поскольку сервер redsocks, очевидно, слушает каждый интерфейс.

Я попытался снова подключить PS3 и получил следующее сообщение (после того, как PS3 получил IP-адрес от моего DHCP-сервера и не смог получить подключение к Интернету):

«Произошла ошибка во время связи с сервером. Это ошибка DNS».

Вот где я сейчас. Я предполагаю, что это может быть проблемой с redsocks, так как он использует DNS-сервер dnstc, который делает это в соответствии с документацией:

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

Мое предположение состоит в том, что мой PS3 запрашивает разрешение DNS через UDP и что dnstc отвечает «усеченным ответом» все время. Если я правильно понимаю, он должен повторно отправить запрос через TCP, но, по-видимому, вместо этого выдает ошибку DNS ??

Что я должен делать? Или точнее:

  • В красных лирях нет необходимости? Я просто iptables-неграмотный?
  • Должен ли я установить DNS-сервер и переслать DNS-запросы? Если так, то как?

Спасибо за чтение этой стены текста! Надеюсь, это не слишком много для первого вопроса ...

7

1 ответ на вопрос

2
Jarett Millard

You could set the PS3 to use a static DNS server. You could try OpenDNS, which has servers on 208.67.222.222 and 208.67.220.220, or try Google's public DNS server on 8.8.8.8 and 8.8.4.4.

Спасибо за ваш ответ! К сожалению, я уже пробовал подобные вещи. Кажется, что DNS-пакеты перехватываются dnstc и, следовательно, никогда не передаются на DNS-сервер. Я скоро обновлю свой вопрос, чтобы поделиться своими новыми скудными результатами ... paob 11 лет назад 0
Возможно, поток выглядит примерно так: `UDP DNS -> dnstc -> TCP DNS -> принимается redsocks и перенаправляется. Если именно поэтому DNS-запрос не возвращается, возможно, добавление IP-адресов DNS-сервера в redsocks Белый список пропустит DNS-запрос TCP. Jarett Millard 11 лет назад 0

Похожие вопросы