Выполняю на маршрутизаторе следующие команды:
iptables -t mangle -A POSTROUTING -j CONNMARK --restore-mark
iptables -t mangle -A POSTROUTING --match ipp2p --bit -p tcp -j MARK --set-mark 0x1
iptables -t mangle -A POSTROUTING -j CONNMARK --save-mark
iptables -t nat -A POSTROUTING --match mark --mark 0x1 -p tcp -j MASQUERADE --to-ports 0x1000-0x10ff
Ожидаю увидеть, что все tcp-пакеты с торрентами маркируются, а потом для исходящих пакетов подменяется порт источника.
Маркируются они нормально:
iptables -t mangle -vnL POSTROUTING
Chain POSTROUTING (policy ACCEPT 396K packets, 351M bytes)
pkts bytes target prot opt in out source destination
396K 351M CONNMARK all -- * * 0.0.0.0/0 0.0.0.0/0 CONNMARK restore
1123 165K MARK tcp -- * * 0.0.0.0/0 0.0.0.0/0 ipp2p --bit MARK set 0x1
396K 351M CONNMARK all -- * * 0.0.0.0/0 0.0.0.0/0 CONNMARK save
А вот порт меняться даже и не думает:
iptables -t nat -vnL POSTROUTING
Chain POSTROUTING (policy ACCEPT 1251 packets, 102K bytes)
pkts bytes target prot opt in out source destination
0 0 MASQUERADE tcp -- * * 0.0.0.0/0 0.0.0.0/0 mark match 0x1 masq ports: 4096-4351
2042 127K MASQUERADE all -- * ppp0 0.0.0.0/0 0.0.0.0/0
1 258 MASQUERADE all -- * eth1 0.0.0.0/0 192.168.1.0/24
Подскажите пожалуйста, в чём может быть проблема?
Исходящие пакеты с торрентами в это время точно были, и соединения устанавливались (специально перезапускал клиент).