Назад | Перейти на главную страницу

Перенаправить весь трафик http и https через прокси SOCKS

У меня есть виртуальная сеть в VMWare с 2 виртуальными машинами.

A: Не подключен к Интернету, но подключен к B

B: подключен к Интернету и к A (интерфейс для A - 192.168.16.2)

Мне нужно создать прокси-сервер SOCKS для перенаправления всего трафика TCP (и HTTP / S) от A к B.

Таким образом, A может пользоваться Интернетом.

Для этого я установил REDSOCKS на A с этой конфигурацией (redsocks.conf):

base {
       log_debug = on;
       log_info = on;
       log = "stderr";
       daemon = on;
       redirector = iptables;
}
redsocks {
       local_ip = 127.0.0.1;
       local_port = 12345;

       ip = 192.168.16.2;
       port = 1337;
       type = socks5;
       login = "Bmachine";
       password = "Bmachine";
}

И я начинаю Redsocks с

sudo redsocks -c redsocks.conf

затем я запускаю ssh на B с помощью этой команды:

ssh -N -D 0.0.0.0:1337 127.0.0.1

А чтобы перенаправить весь трафик на прокси, на A я выполняю следующие команды:

sudo iptables -t nat -N REDSOCKS

sudo iptables -t nat -A REDSOCKS -d 0.0.0.0/8 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 10.0.0.0/8 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 127.0.0.0/8 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 169.254.0.0/16 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 172.16.0.0/12 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 192.168.0.0/16 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 224.0.0.0/4 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 240.0.0.0/4 -j RETURN

sudo iptables -t nat -A REDSOCKS -p tcp -j REDIRECT --to-ports 12345

sudo iptables -t nat -A OUTPUT -p tcp --dport 443 -j REDSOCKS
sudo iptables -t nat -A OUTPUT -p tcp --dport 80 -j REDSOCKS

sudo iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDSOCKS
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDSOCKS

Вот и все, но когда я пытаюсь использовать Интернет или открывать Firefox из A, я ничего не могу получить, Интернет не работает.

Вам нужно запустить команду ssh на A

ssh -N -D 1337 b_username@ip_of_b

Затем вы можете настроить свой веб-браузер или установить переменные среды указать на этот прокси: 127.0.0.1:1337


Если вы хотите использовать redsocks, чтобы весь TCP-трафик, предназначенный для порта 80 или 443, направлялся на прокси-сервер, вы можете обновить конфигурацию:

redsocks {
       local_ip = 127.0.0.1;
       local_port = 12345;

       ip = 127.0.0.1;
       port = 1337;
       type = socks5;
}

Боковое примечание: если вы не туннелируете трафик через A, вам также не нужны правила PREROUTING в iptables.