Извините что долго не писал. Читал документацию, экспериментировал, анализировал, искал решения.
Команда
Код:
iptables -t nat -A OUTPUT -p tcp -m tcp --dport 80 -d 195.82.146.120/30 -j DNAT --to-destination 163.172.167.207:3128
у меня выполняется и работает.
Проверил я это следующим путем:
1. Выполняю:
Код:
iptables -t nat -L -n --line-numbers
и вижу соответствующую запись в OUTPUT.
2. Выполняю:
Код:
iptables -t nat -A POSTROUTING -o eth2.2 -p tcp -m tcp -d 163.172.167.207 -j LOG --log-level info --log-tcp-options
curl bt.t-ru.org/myip
и вижу соответствующую информацию в логе:
скрытый текст
[I] Jul 17 20:01:07 ndm: kernel: IN= OUT=eth2.2 SRC=xxx.yyy.zzz.nnn DST=163.172.167.207 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=15497 DF PROTO=TCP SPT=48463 DPT=3128 WINDOW=5840 RES=0x00 SYN URGP=0 OPT (020405B40402080A00BD88100000000001030306)
Но curl возвращает мне:
curl: (7) Failed to connect to bt.t-ru.org port 80: Connection timed out
Т.е. теперь необходимо понять а приходит ли ответ? Я думаю он приходит. Но проблема в том, что curl ждет ответа от 195.82.146.120, а ответ приходит от 163.172.167.207. Curl такой ответ игнорирует и пишет ошибку.
Для отслеживания ответа (откуда и сколько) попробовал выполнить аналогичную команду:
Код:
iptables -t nat -I PREROUTING 1 -p tcp -m tcp -s 195.82.146.120 -j LOG --log-level info --log-tcp-options
iptables -t nat -I PREROUTING 1 -p tcp -m tcp -s 163.172.167.207 -j LOG --log-level info --log-tcp-options
curl bt.t-ru.org/myip
Но, увы!, в логах только информация об исходящем пакете. Неужели нет ни какого ответа?! Тогда я решил воспользоваться захватом пакетов.
И точно: куча исходящих/входящих пакетов от общения моего роутера с 163.172.167.207. Если необходимо, то лог могу выложить.
Я понимаю что необходимо сделать SNAT, но меня смущает, что пакеты от 163.172.167.207 не отлавливаются в nat. В общем,
Гуфыч, нужна твоя квалифицированная помощь в решении этой проблемы.