всем здрасте. интересная заковыка обнаружилась.
была задача: с шлюза - FW - (ipfw+natd, FreeBSD4.7) перекинуть http трафик на другую машину, на которой был поднят squid (FreeBSD4.10, Squid2.4Stable7 из портов, ручками несущественно поправлен /usr/ports/www/squid24/Makefile) - SQ. обе машинки стоят в локалке с фриковыми адресами. сразу говорю - по отдельности рабоает все так, что ого-го!!! ну и - ядра с FORWARD, правила ipfw первые.
ну, что? пишем правила фаерволу FW:
ipfw add 10 fwd 129.168.1.1 tcp rom 192.168.1.0/24 to any 80
зная, что fwd не умеет менять порт пакета, когда форвардит на другую машину, рисуем правила для фаервола SQ:
ipfw add 10 fwd 192.168.1.1:3128 tcp from 192.168.1.0/24 to any 80
и смотрим что получилось - а ничего не получилось. фаервол FW успешно форвардит трафик на SQ, тот его заворачивает на 3128 порт, а сам Squid грит - "Доступ запрещен", хотя, замечу, он совсем не "denied" для всей локалки (авторизация, для простоты момента, отключена напрочь).
ладно. меняем правила на обих фаерволах:
на FW:
ipfw add 10 fwd 129.168.1.1 tcp rom 192.168.1.20 to any 80
на SQ:
ipfw add 10 fwd 129.168.1.1:3128 tcp rom 192.168.1.20 to any 80
и чо вы думаете? работает! причем именно так - когда на обоих фаерволах ip-адреса прописаны.
теперича вопрос: это каким макаром нужно прописать правила фаерволу, что бы он форвадил всю сетку сразу. а то на каждого писать, тоже, знаете ли... судя по всему, при форвардинге сети что-то с заголвками пакетов происходит, но что?
ну и попутный вопрос - в форуме промелькнуло сообщение, что кто-то форвардил с помощью natd -proxy_rule. ежели кто так сделал - расскажите, а?
|