iptables TPROXY получает удар, но не перенаправляет на порт
Я бегу Debian 8
с iptables
,
У меня есть следующее правило:
iptables -t mangle -A PREROUTING -p tcp --dport 5000 -j TPROXY --tproxy-mark 0x1/0x1 --on-port 4000
Я просто хочу перенаправить весь трафик с порта назначения 5000 на порт 4000.
Стандарт iptables
REDIRECT
не может использоваться в моем случае, так как он изменяет пакет и изменяет исходный порт назначения.
Смотря на iptables -t mangle -nvL
Я вижу, что правило сбито:
Chain PREROUTING (policy ACCEPT 5056 packets, 13M bytes)
pkts bytes target prot opt in out source destination
12 720 TPROXY tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:5000 TPROXY redirect 0.0.0.0:4000 mark
0x1/0x1
Но мой сервис работает в порту 4000
не перехватывает пакеты
У меня простой NodeJS
приложение слушает для всех TCP
в порту 4000
, который не получает никаких packets
:
server.listen(4000, () => { console.log('listening on 4000'); });
Кроме того, работает wireshark
на TCP
порт 4000 на всех интерфейсах ничего не показывает.
1 ответ
Также необходимо настроить правило маршрутизации:
# 1 is --tproxy-mark parameter in iptables command
ip rule add fwmark 1 lookup 100
ip route add local 0.0.0.0/0 dev lo table 100