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

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

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

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

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

ssh -ND 4711 [email protected]

В этот момент я попытался зайти на 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??

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

  • Redsocks не нужен? Я просто неграмотен в iptables?
  • Стоит ли устанавливать DNS-сервер и пересылать DNS-запросы? Если да, то как?

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

решение1

Вы можете настроить PS3 на использование статического DNS-сервера. Вы можете попробоватьOpenDNS, у которого есть серверы на 208.67.222.222и 208.67.220.220, или попробуйтеПубличный DNS-сервер Googleна 8.8.8.8и 8.8.4.4.

Связанный контент