Я пытаюсь играть в японскую игру караоке на 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-запросы? Если так, то как?
Спасибо за чтение этой стены текста! Надеюсь, это не слишком много для первого вопроса ...