pf:將連接埠80上的所有封包從任何介面轉送至SOCKS代理

pf:將連接埠80上的所有封包從任何介面轉送至SOCKS代理

我正在嘗試將連接埠 80 上的任何封包從任何介面轉發到我的 SOCKS 代理(伺服器)。我不確定我的設定是否正確,但我無法讓它轉發資料包。

我像這樣創建一個 SOCKS 代理機器A:

ssh -D 5948 user@server

如果我更改 Chrome 中的代理設置,這允許我透過 SOCKS 代理存取互聯網。

這很好,除了我連接一個設備(設備B) 到機器A使用藍牙,我想透過 SOCKS 代理從該設備透過我的機器存取互聯網。

           +---------------+    +---------------+    +--------------+
           |               |    |               |    |              |
           |               |    |               |    |              |
Internet   |    Server     <----+   Machine A   <----+   Device B   |
           |               |    |               |    |              |
           |               |    |               |    |              |
           +---------------+    +---------------+    +--------------+
                                                  Connected via Bluetooth

透過藍牙的連接和互聯網共享工作正常,除了使用我的 ISP 而不是使用 SOCKS 代理。

相反,我想要做的是pf將任何封包從連接埠 80 上的任何介面轉送到我的 SOCKS 代理。

我嘗試透過使用以下內容建立錨文件:

rdr pass inet proto tcp from any to any port 80 -> 127.0.0.1 port 5948

我將錨點包含在pf.conf所有介面上並啟用轉發,如下所示:

net.inet.ip.forwarding=1
net.inet6.ip6.forwarding=1

轉送沒有發生,我只能假設我的pf規則不正確。我已經使用以下方法驗證了它:

sudo pfctl -vnf /etc/pf.anchors/org.jj.forwarding

有什麼想法我哪裡出錯了嗎?

答案1

當您啟用轉送時,新增以下 iptable 規則應該可以運作

iptables -t nat -A PREROUTING -i bl1 -p tcp --dport 80 -j DNAT --to 127.0.0.1:5948

bl1 是您的藍牙接口

相關內容