Я хочу перенаправить весь входящий трафик с одного порта на другой с помощью 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 '.