Долго парился с
iptables на своём ASUS RT-AC68U с Asuswrt-merlin. Добавил в
/jffs/scripts/nat-start два правила:
Код:
iptables -t nat -I OUTPUT -p tcp -m tcp --dport 80 -d 195.82.146.120/30 -j DNAT --to-destination 163.172.167.207:3128
iptables -t nat -I PREROUTING -p tcp -m tcp --dport 80 -d 195.82.146.120/30 -j DNAT --to-destination 163.172.167.207:3128
На самом рутере DNAT работает без проблем. Запрос
Код:
curl bt.t-ru.org/myip
выдаёт мне мой IP-адрес, proxy и xf.
От трекера ответ приходит:
Код:
# curl http://bt4.t-ru.org/ann_time.php
��� �������� ��������� ������ (answer from real tracker)
Но на хостах внутри локальной сети ничего не работало. Перепроверил цепочки nat/PREROUTING, nat/POSTROUTING (на наличие подходящего MASQUERADE target), filter/FORWARD (на наличие подходящего ACCEPT target) и не нашёл ничего неправильного. Счётчики
pkts и
bytes напротив соответсвующих правил увеличивались, и я понял, что правила работают.
Оказалось, что проблема в
NAT Acceleration.
Отключил, и всё заработало! Отключается через Web GUI здесь:
Advanced Settings/LAN > вкладка
Switch Control >
NAT Acceleration —
Disable.