
次のような設定になっています:
- Host-X (192.168.1.100) は ssh -D を実行して、SOCKS サーバーとして使用できるようにします。
- Host-Y (192.168.1.101) は、Host-X を socks として設定した redsocks を実行しています。
これらは他のマシンと同じネットワーク内にあります。Redsocks を活用するために、Host-Y をいくつかのコンピューターのゲートウェイとして使用したいと思います。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
ログから Host-Y 上の redsocks にトラフィックが来ていることは確認できますが、Host-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