與 PS3 共享透明代理互聯網連接

與 PS3 共享透明代理互聯網連接

我正在嘗試在 PS3 上玩日本卡拉 OK 遊戲,但延遲非常可怕,而且下載歌曲需要很長時間。我得到的一個建議是透過 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

然後,我在筆記型電腦上啟動了 DHCP 伺服器,為 PS3 提供 IP:

systemctl start dhcp4.service

最後我用一些 iptables 魔法啟用了 NAT:

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

這使我能夠停止在 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 文件,因為它沒有偽裝。我相信無論如何我都不需要 NAT,因為 redsocks 伺服器顯然會監聽每個介面。

我再次嘗試連接 PS3,收到以下訊息(在 PS3 從我的 DHCP 伺服器取得 IP 但無法連接網路之後):

“與伺服器通訊時發生錯誤。這是 DNS 錯誤。”

這就是我現在的處境。我想這可能是 redsocks 的問題,因為它使用一個名為 dnstc 的 DNS 伺服器,它根據文件執行此操作:

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 錯誤?

我該怎麼辦?或者更準確地說:

  • 紅襪有必要嗎?我只是 iptables 文盲嗎?
  • 我應該安裝 DNS 伺服器並轉送 DNS 請求嗎?如果是這樣,怎麼辦?

感謝您閱讀文字牆!希望第一個問題不會太糟....

答案1

您可以將 PS3 設定為使用靜態 DNS 伺服器。你可以嘗試開放DNS,其伺服器位於208.67.222.222208.67.220.220,或嘗試Google 的公共 DNS 伺服器8.8.8.88.8.4.4

相關內容