Ssh

Socks 代理連接 iptables 設置

  • December 13, 2021

我希望有人可以幫助我,因為我無法再進一步:

我有以下設置:

系統 1:PC Windows (192.168.240.2) 系統 2:PC Ubuntu (192.168.240.3)

在 Ubuntu 系統上,我打開了與 vpn 提供商的 ssh 連接,

Ubuntu 系統上的 localport 是 5080 VPN Provider 的遠端埠是 3128(http 代理):

ssh -N -oUserKnownHostsFile=perfect_privacy_known_hosts -L 5080:127.0.0.1:3128 -v pp1989124@erfurt.perfect-privacy.com

如果我在 Ubuntu 系統上將 Firefox 與 Foxy 代理一起使用並連接到 localhost:5080,則流量會通過 ssl 隧道到達 vpn 提供商,並且一切正常。

現在我想通過 Ubuntu 客戶端從我的 Windows 客戶端連接到 VPN 提供商。所以我做了同樣的事情,在 Window 客戶端上,我在 foxy Proxy 中輸入了 Ubuntu 客戶端的 IP 地址 192.168.240.3 和埠 5080。但這不起作用(我認為是因為 ubuntu 客戶端上的 ssh 隧道在 localhost 上偵聽而不是 192.168.240.3)

我必須做些什麼才能讓它發揮作用

最好的問候桑古爾

這是執行此操作的一種方法。

…以避免ssh錯誤地保留多個。無論如何,只有第一個可以打開埠的人才能處理轉發的埠。

  • 更改ssh命令,使其不再使用 127.0.0.1 來監聽

    • 要麼聽 192.168.240.3 代替

    …通過將此可選 IP 地址添加到-L參數中。這意味著 Firefox 代理必須更新為 192.168.240.3:5080 而不是 127.0.0.1:5080 。

    ssh -N -o ExitOnForwardFailure=yes -o UserKnownHostsFile=perfect_privacy_known_hosts -L 192.168.240.3:5080:127.0.0.1:3128 -v pp1989124@erfurt.perfect-privacy.com
    
    • 或聽 0.0.0.0

    …綁定到 IPv4INADDR_ANY萬用字元地址,避免更改 Firefox 代理設置,尤其是在 Ubuntu 主機具有動態 IP 地址且沒有已知 DNS 的情況下。

    ssh -N -o ExitOnForwardFailure=yes -o UserKnownHostsFile=perfect_privacy_known_hosts -L 0.0.0.0:5080:127.0.0.1:3128 -v pp1989124@erfurt.perfect-privacy.com
    
    ```注意:`-g`選項 (ie [`-o GatewayPorts=yes`](https://manpages.debian.org/openssh-client/ssh_config.5#GatewayPorts)) 與上面的效果相同,只是它還綁定到*in6addr_any* ( `::`) 地址,因此如果沒有 IPv6 防火牆,IPv6 訪問也將不受限制:最好避免使用`-g`此處。
    

  • 可選:使用iptables限制訪問。如果不需要,這可以完全省略。

由於 OP 添加了iptables標籤,所以也只允許主機本身和 192.168.240.2 訪問該埠。(幾乎)不影響任何其他訪問,因為這不是 OP 要求的,這真的會開始變得離題。

我正在考慮目前沒有iptables(也沒有 UFW/firewalld)。如果存在此類工具,請考慮更新提供*iptables規則的工具。*下面的規則應該首先讓它們正常工作,所以我使用-I+ 號(以保持升序)而不是-A允許它們在可能的防火牆工具之前添加的規則之前添加,但這不會有太大幫助用於在啟動時自動設置。

iptables -I INPUT 1 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -I INPUT 2 -i lo -j ACCEPT
iptables -I INPUT 3 -m conntrack --ctstate INVALID -j DROP
iptables -I INPUT 4 -p tcp -s 192.168.240.2 --dport 5080 -j ACCEPT
iptables -I INPUT 5 -p tcp --dport 5080 -j REJECT --reject-with tcp-reset

這允許以前的連接繼續,來自主機本身的任何連接,然後只允許從 192.168.240.2 訪問埠 5080。

注意:... INVALID -j DROP存在REJECT規則時這是強制性的(有關技術細節,請參閱此送出)。

引用自:https://unix.stackexchange.com/questions/681257