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. Переадресация IP на Host-Y включена.

Это конфигурация 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

Я вижу трафик, идущий на redsocks на Host-Y из журнала, но я не могу просматривать Интернет на компьютерах, которые используют 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

Связанный контент