Если кто знает, где ошибка, помогите пожалуйста!
Нужно сделать прозрачный прокси (Squid).
Для этого сделал:
Пересобрал ядро с:
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_FORWARD
options IPFIREWALL_VEROSE_LIMIT=50
options IPDIVERT
options IPFW2
В rc.conf в числе прочего указал:
gateway_enable="YES"
firewall_enable="YES"
firewall_script="/etc/rc.firewall"
firewall_quiet="YES"В /etc/rc.firewall есть строки:
ipfw add fwd 127.0.0.1,3128 tcp from 192.1.1.0/24 to any 80 in via xl0
ipfw add allow tcp from 192.1.1.0/24 to me 3128
#192.1.1.0/24 - LAN; xl0 - сетевая карточка, смотрящая в LANРезультат выглядит так:
Сам SQUID работает нормально.
Пакеты, идущие "мимо" SQUID попадают в строку с fwd,
но не приходят в строку, пропускающую пакеты в SQUID.
Т.е., они как будто не перенаправляются на нужный порт,
а просто отбрасываются.Где не прав?
Заранее благодарен за наставления на путь истинный. :-)
P.S. /etc/sysctl.conf не правил,
net.inet.ip.forwarding:1
net.inet.ip.fastforwarding:0
Посмотри где правила NAT стоят.Форвард должен быть выше
В действительности, всё работало, но строка
пропуска пакетов к Squid'у не охватывала перенаправляемые пакеты.ipfw add allow tcp from 192.1.1.0/24 to me 3128
Дело в том, что эти пакеты действительно приходили на нужный адрес+порт, НО! имели адрес+порт источника и сокет получателя не изменившимися. Т.е. сам пакет остаётся неизменным, но адрес, который указывается в строке "ipfw add fwd <адрес>,<порт>..." становится как бы адресом следующего "хопа" для данного пакета (в данном случае, порт Squid'а).
Т.е., в описанном случае, необходимо в rc.firewall разрешить прохождение пакетов из LAN в инет и отклик. И всё пойдёт через прокси (3128)!Спасибо за отклики.