Использование SOCKS для прозрачного проксирования (transparent proxy)

В данной заметке я рассмотрю настройку маршрута со своего рабочего компьютера на сервер. Вообще для этого требуется какой-то промежуточный машрутизатор. У меня он будет находиться по IP 100.100.100.109 (мой рабочий компьютер по совместительству), а сервер — по адресу 100.100.100.110 (все адреса являются вымышленными, любое совпадение с реальными — случайное 🙂 )

1. Настройте socks proxy на порте 9999 с помощью ssh. Можно сделать это с помощью PuTTY.

ssh -D 9999 100.100.100.109

2. Добавьте ip route для перенаправления специфичных пакетов на сервер.

echo 1 MYPROXY >> /etc/iproute2/rt_tables
ip route add default via 100.100.100.110 table MYPROXY
ip rule add from all fwmark 9 table MYPROXY

Мы задали маркер 9, он будет использован далее.

3. На маршритизаторе отметьте тем же маркером пакеты, идущие на порты 80 и 443 — они должны идти через прокси сервер:

iptables -A OUTPUT -t mangle -i eth0 -p tcp --dport 443 -j MARK --set-mark 9
iptables -A OUTPUT -t mangle -i eth0 -p tcp --dport 80 -j MARK --set-mark 9

В правилах упоминается OUTPUT, т.к. запросы на наш прокси сервер в качестве источника имеют маршрутизирующий компьютер, т.е 100.100.100.109.

4. Настройте браузер — он должен проксеваться через socks proxy на localhost:9999 ( 127.0.0.1:9999 )
Полезная ссылка: ссылка

Запрос с помощью curl будет таким:

curl -v --socks4 127.0.0.1:9999 ”https://www.ya.com/
You can leave a response, or trackback from your own site.

Leave a Reply