Перенаправьте HTTP-трафик с локальной сети на внешний прокси-сервер с помощью iptables на моем маршрутизаторе
Моя цель - прозрачно проксировать все 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
сообщает, что клиент подключился (используя общедоступный IP-адрес NAT моего маршрутизатора, выданный моим Интернет-провайдером), но это все, что он получает. Это никогда не идет дальше, и моя команда curl просто ждет. В конце концов я вижу "Сброс соединения по одноранговой сети" в журнале моего прокси, и соединение закрывается.
Любая помощь будет предложена. Я должен признать, я не очень опытный с iptables
,