Не коментуючи ТЗ, оскільки я не маю багато знань.
Але для мети iptables ось воно. PREROUTING
передбачає маршрутизацію. Ініціюючи з'єднання з локальної системи, ви не здійснюєте маршрутизацію. Вам просто потрібно використовувати OUTPUT
замість / на додаток PREROUTING
.
Сфера застосування REDIRECT
:
ПОПЕРЕДЖЕННЯ
Ця ціль дійсна лише в таблиці nat, в ланцюгах PREROUTING і OUTPUT та у визначених користувачем ланцюгах, які викликаються лише з цих ланцюгів. Він перенаправляє пакет на сам апарат, змінюючи IP-адресу призначення на основну адресу вхідного інтерфейсу (локально згенеровані пакети відображаються на адресу localhost, 127.0.0.1 для IPv4 та :: 1 для IPv6).
Тому:
iptables -t nat -A OUTPUT -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080
Редагувати:
Щоб уникнути перенаправлення конкретного користувача або групи (наприклад, щоб уникнути нескінченного циклу з послугою на порту 8080), ви можете зробити так (наприклад, для служби, що працює з ефективною групою tor
) замість вище:
iptables -t nat -N OUTPUT intercept
iptables -t nat -A OUTPUT -p tcp -m tcp --dport 80 -j intercept
iptables -t nat -A intercept -m owner --gid-owner tor -j RETURN
iptables -t nat -A intercept -j REDIRECT --to-ports 8080