1

Моя цель - прозрачно проксировать все HTTP-запросы от одного IP (мой ноутбук, 192.168.1.134) в моей локальной сети к внешнему IP (интернет-VPS, скажем, X.X.X.X), на котором работает прокси-сервер (в частности, mitmproxy работающий в прозрачном режиме), прослушивая на порт 80.

Моя домашняя локальная сеть работает на маршрутизаторе ASUS RT-N66U с прошивкой Asuswrt-Merlin. Маршрутизатор имеет IP 192.168.1.1 и является шлюзом по умолчанию для каждого устройства в моей сети. Для пересылки трафика я подключил ssh'd к маршрутизатору и выполнил следующие команды iptables :

iptables -t nat -A PREROUTING -s 192.168.1.134 -p tcp --dport 80 -j DNAT --to X.X.X.X:80
iptables -t nat -A POSTROUTING -j MASQUERADE

Кроме того, на моем маршрутизаторе включена переадресация IP:

admin@RT-N66U:/tmp/home/root# cat /proc/sys/net/ipv4/ip_forward
1

Это приводит к чему-то, но это не то, что я ожидаю. Начиная с 192.168.1.134 (мой ноутбук), когда я делаю простой http-запрос (например, curl http://example.com), в журнале событий моего прокси я вижу, что mitmproxy сообщает, что клиент подключился (используя общедоступный NAT). IP моего роутера, выданный моим провайдером), однако это примерно так же далеко, как он получает. Это никогда не идет дальше, и моя команда curl просто ждет. В конце концов я вижу "Сброс соединения по одноранговой сети" в журнале моего прокси, и соединение закрывается.

Любая помощь будет предложена. Должен признать, я не очень хорошо iptables .

0