PS3 と透過的にプロキシされたインターネット接続を共有する

PS3 と透過的にプロキシされたインターネット接続を共有する

PS3 で日本のカラオケ ゲームをプレイしようとしているのですが、遅延がひどく、曲のダウンロードに非常に時間がかかります。私が受けたアドバイスの 1 つは、OpenSSH 経由で日本の友人のサーバーにログインして、ラップトップを SOCKS プロキシに変えるというものでした。

[サーバー]----(ssh トンネル)---[wlan0 < ラップトップ > eth0]---[PS3]

そこで私はこうしました:

ssh -ND 4711 [email protected]

その時、私は Firefox (SOCKS プロキシ設定) を使用してラップトップから google.com にアクセスしようとしましたが、google.co.jp にリダイレクトされました。すばらしい。

次に、PS3 をイーサネット経由でラップトップに接続したいと思いました。

まず、eth0 に静的 IP を割り当てました:

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

次に、PS3 に IP を割り当てるために、ラップトップで DHCP サーバーを起動しました。

systemctl start dhcp4.service

そして最後に、iptables マジックを使って NAT を有効にしました。

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

「ネットワーク設定」に行き、PS3 からの接続をテストしたところ、うまくいったようです。Web ブラウザを起動すると、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

これにより、Firefox と luakit の SOCKS プロキシ設定の使用を停止することができ、google.com が google.co.jp に変わるというテストで確認できました。

NAT を有効にする必要があると判断したので、やり直しました:

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

PS3 はシステム全体のプロキシをバイパスしたようで、google.com は google.fr にリダイレクトされました。そこで、マスカレードなしで redsocks.rules ファイルをそのまま使用しました。redsocks サーバーはすべてのインターフェースでリッスンしているようなので、NAT は必要ないだろうと考えました。

PS3 を再度接続しようとすると、次のメッセージが表示されました (PS3 が DHCP サーバーから IP を取得した後、インターネット接続に失敗しました)。

「サーバーとの通信中にエラーが発生しました。これは DNS エラーです。」

それが今私がいる場所です。ただし、ドキュメントによると、redsocks は dnstc という DNS サーバーを使用しており、これが次の動作をするため、redsocks に問題がある可能性があります。

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 が UDP 経由で DNS 解決を要求し、dnstc が常に「切り詰められた回答」で応答しているようです。私の理解が正しければ、TCP 経由で要求を再送信する必要がありますが、代わりに DNS エラーが発生するようです。

どうすればいいでしょうか?もっと正確に言うと、

  • redsocks は不要ですか? 私は iptables に疎いだけでしょうか?
  • DNS サーバーをインストールして DNS 要求を転送する必要がありますか? その場合、どのようにすればよいですか?

長文を読んでくださりありがとうございます。初めての質問としては、あまりつまらない内容ではないといいのですが...

答え1

PS3を静的DNSサーバーを使用するように設定することもできます。オープンDNS、およびにサーバーがある208.67.222.222208.67.220.220または試してくださいGoogle のパブリック DNS サーバーオン8.8.8.88.8.4.4

関連情報