Назад | Перейти на главную страницу

iptables preroute localhost

Я хочу перенаправить весь входящий трафик с одного порта на другой с помощью iptables. Проблема в том, что предварительная маршрутизация не работает для трафика с localhost. это тема предлагает решение:

iptables -t nat -I PREROUTING -p tcp --dport 443 -j REDIRECT --to-ports 8080
iptables -t nat -I OUTPUT -p tcp -d 127.0.0.1 --dport 443 -j REDIRECT --to-ports 8080

Это решение работает в большинстве случаев. Однако когда я подключаюсь к http: // мойсервер: 443 где myserver преобразуется в IP-адрес, размещенный на локальном компьютере, но не 127.0.0.1, похоже, что оба правила обходятся.

Есть ли способ также перехватить переадресацию запросов с локального компьютера, которые выполняются на ip-адрес eth0?

Вместо того, чтобы делать -d 127.0.0.1 по правилу OUTPUT вы можете сделать -o lo. Это будет соответствовать любому трафику, проходящему через интерфейс обратной связи, независимо от места назначения.

В качестве примечания, даже если вы отправляете "http: // мойсервер: 443', трафик по-прежнему является локальным, поэтому он по-прежнему проходит через интерфейс обратной связи, даже если он не разрешается в' 127.0.0.1 '.