Здравствуйте!Стоит задача переадресовать пользователя который открывает какую-то страницу "A" (78.1.1.1) на определенную страницу "Б" (79.2.2.2),
где например ему показывается информация о предоставлении услуг, недостаточном балансе и т.п.,
и все это далее завернуть в другой процесс "C" (192.168.33.33, в общем случае это какой-то прокси или другая сеть).Просто переадресация работает нормально, делаю так:
iptables -t nat -A PREROUTING -i $DEV -p tcp -j DNAT --to-destination 79.2.2.2Затем заворачиваю это все в 192.168.33.33:
iptables -t nat -A PREROUTING -i $DEV -p tcp -j DNAT --to-destination 192.168.33.33
Но это правило игнорируется, все уходит сразу в 79.2.2.2 и больше никуда не идет.Почему? Как сделать чтобы обрабатывались оба правила и пакет после первого с dst 79.2.2.2 уходил на 192.168.33.33?
Не могу до конца понять как работает DNAT, если по одному и тому-же пакету через него дважды делают подмену адреса назначения,
или он оставляет только какой-то один на выходе из PREROUTINGа?
Как тогда это обойти? Мне бы и POSTROUTING подошел, но там вроде нельзя DNAT. Возможно вместо первого DNAT нужно отдельный прокси разворачивать, какой тогда лучше?
(пробовал squid, но на него моих знаний или мощности не хватает, все виснет).
Или есть какое-то более простое решение?Вроде простая задача, примерно как у любого провайдера при нулевом балансе открывается домашняя страница с предупреждением,
но мне это еще нужно через дополнительную сеть пустить.
> Почему? Как сделать чтобы обрабатывались оба правила и пакет после первого с
> dst 79.2.2.2 уходил на 192.168.33.33?После того как пакет достиг адреса назначения- исчезает. Вообще. Перестает существовать.
как он может после этого еще куда-то попасть?
ну так и покажите ему (пользователю) свою страницу о балансе сразу на 33.33или, если уж так сильно хочется, показывайте свою заглушку на странице 2.2 ,
а потом с этой страницы делайте перенаправление на страницу 33.33 ,
но уже средствами самой страницы (редирект, пхп, перл и т.д.)
>[оверквотинг удален]
> или он оставляет только какой-то один на выходе из PREROUTINGа?
> Как тогда это обойти? Мне бы и POSTROUTING подошел, но там вроде
> нельзя DNAT. Возможно вместо первого DNAT нужно отдельный прокси разворачивать, какой
> тогда лучше?
> (пробовал squid, но на него моих знаний или мощности не хватает, все
> виснет).
> Или есть какое-то более простое решение?
> Вроде простая задача, примерно как у любого провайдера при нулевом балансе открывается
> домашняя страница с предупреждением,
> но мне это еще нужно через дополнительную сеть пустить.Если правило подошло по критериям, то действия ACEPT, DROP, REJECT отрабатывают и дальнейшие правила в не рассматриваются, это точно. Для действия DNAT видимо тоже самое, дальше пакет попадает наверное в цепочку FORWARD.
Благодарю за комментарии!
Очень помогло, нашел решение через Bridge и создание дополнительной сети.