不同机器上的 redsocks + socks 服务器

不同机器上的 redsocks + socks 服务器

我有以下设置:

  • Host-X(192.168.1.100)运行 ssh -D,以便它可以用作 socks 服务器。
  • Host-Y(192.168.1.101)运行 redsocks,并以 Host-X 配置为 socks。

它们与其他机器位于同一网络中。我想在某些计算机上使用 Host-Y 作为网关,以利用 redsocks。Host-Y 上的 IP 转发已启用。

这是 redsocks 配置:

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

我可以从日志中看到主机 Y 上的 redsocks 流量,但我无法在使用主机 Y 作为网关的计算机上浏览互联网。显然缺少一些 iptables 规则,我猜是一条将 redsocks 输出流量发送到 socks 服务器的规则。有谁能帮忙吗?

谢谢你!

答案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

相关内容