redsocks + 不同機器上的socks伺服器

redsocks + 不同機器上的socks伺服器

我有以下設定:

  • Host-X (192.168.1.100) 運行 ssh -D 以便它可以用作襪子伺服器。
  • Host-Y (192.168.1.101) 運行 redsocks,配置了 Host-X 作為襪子。

它們與其他機器位於同一網路中。我想在某些電腦上使用 Host-Y 作為網關來利用 redsocks。 Host-Y 上的 IP 轉送已啟用。

這是紅襪配置:

base {
    log_info = on;
    log = "file:/var/log/redsocks.log";
    daemon = on;
    redirector = iptables;
}
redsocks {
    local_ip = 0.0.0.0;
    local_port = 2001;
    ip = 192.168.1.100;
    port = 2000;
    type = socks5;
}

這些是我的 iptables 規則:

iptables -t nat -N REDSOCKS
iptables -t nat -A REDSOCKS -d 0.0.0.0/8 -j RETURN
iptables -t nat -A REDSOCKS -d 10.0.0.0/8 -j RETURN
iptables -t nat -A REDSOCKS -d 127.0.0.0/8 -j RETURN
iptables -t nat -A REDSOCKS -d 169.254.0.0/16 -j RETURN
iptables -t nat -A REDSOCKS -d 172.16.0.0/12 -j RETURN
iptables -t nat -A REDSOCKS -d 192.168.0.0/16 -j RETURN
iptables -t nat -A REDSOCKS -d 224.0.0.0/4 -j RETURN
iptables -t nat -A REDSOCKS -d 240.0.0.0/4 -j RETURN
iptables -t nat -A REDSOCKS -p tcp -j REDIRECT --to-port 2001
iptables -t nat -A PREROUTING -i eth0 -p tcp -j REDSOCKS

我可以從日誌中看到 Host-Y 上的 redsocks 的流量,但我無法在使用 Host-Y 作為網關的電腦上瀏覽 Internet。顯然缺少一些 iptables 規則,我猜想將 redsocks 輸出流量傳送到襪子伺服器的規則。有人可以幫忙嗎?

謝謝你!

答案1

看起來如果我將最後一條規則作為第一條規則,一切都會正常運作。所以解決方案是使用以下 iptables 規則:

iptables -t nat -N REDSOCKS
iptables -t nat -A PREROUTING -i eth0 -p tcp -j REDSOCKS
iptables -t nat -A REDSOCKS -d 0.0.0.0/8 -j RETURN
iptables -t nat -A REDSOCKS -d 10.0.0.0/8 -j RETURN
iptables -t nat -A REDSOCKS -d 127.0.0.0/8 -j RETURN
iptables -t nat -A REDSOCKS -d 169.254.0.0/16 -j RETURN
iptables -t nat -A REDSOCKS -d 172.16.0.0/12 -j RETURN
iptables -t nat -A REDSOCKS -d 192.168.0.0/16 -j RETURN
iptables -t nat -A REDSOCKS -d 224.0.0.0/4 -j RETURN
iptables -t nat -A REDSOCKS -d 240.0.0.0/4 -j RETURN
iptables -t nat -A REDSOCKS -p tcp -j REDIRECT --to-port 2001

相關內容