Я пытаюсь перенаправить все запросы порта 80 по одному IP-адресу локальной сети на внешний прокси-сервер squid за пределами моей сети. В целях отладки я пытаюсь сделать это на уровне маршрутизатора, поскольку приложение не поддерживает прокси, но отправляет свои запросы через порт 80.
До сих пор я пытался подключить это в поле «команда запуска» на DDWRT:
YourIP=192.168.1.128
YourPort=80
TargetIP=x.x.x.x
TargetPort=23128
iptables -t nat -A PREROUTING --dst $YourIP -p tcp --dport $YourPort -j DNAT --to-destination $TargetIP:$TargetPort
iptables -t nat -A POSTROUTING -p tcp --dst $TargetIP --dport $TargetPort -j SNAT --to-source $YourIP
iptables -t nat -A OUTPUT --dst $YourIP -p tcp --dport $YourPort -j DNAT --to-destination $TargetIP:$TargetPort
Кажется, он ничего не делает. Запросы по-прежнему обслуживаются через домашнее подключение к Интернету с указанного устройства. Я поступаю об этом неправильно? Любая помощь приветствуется. Когда я запускаю «iptables -t nat -L», я вижу следующее:
DNAT tcp -- anywhere 192.168.1.128 tcp dpt:www to:x.x.x.x:23128
YourIP=192.168.1.128
в вашем контексте? Это IP-адрес, назначенный клиенту, с которого вы тестируете? Это поле dd-wrt будет делать http-запросы? Если нет, вы можете отказаться от-A OUTPUT
правила. Вам также, вероятно, не нужен SNAT.