URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID10
Нить номер: 1107
[ Назад ]

Исходное сообщение
"Не работает FORWARDING"

Отправлено Yak , 19-Янв-04 12:20 
Если кто знает, где ошибка, помогите пожалуйста!
Нужно сделать прозрачный прокси (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


Содержание

Сообщения в этом обсуждении
"Не работает FORWARDING"
Отправлено СергейКа , 19-Янв-04 13:45 
Посмотри где правила NAT стоят.

Форвард должен быть выше


"Прошу прощения за беспокойство, нашёл ошибку (+)"
Отправлено Yak , 19-Янв-04 15:24 
В действительности, всё работало, но строка
пропуска пакетов к Squid'у не охватывала перенаправляемые пакеты.

ipfw add allow tcp from 192.1.1.0/24 to me 3128

Дело в том, что эти пакеты действительно приходили на нужный адрес+порт, НО! имели адрес+порт источника и сокет получателя не изменившимися. Т.е. сам пакет остаётся неизменным, но адрес, который указывается в строке "ipfw add fwd <адрес>,<порт>..." становится как бы адресом следующего "хопа" для данного пакета (в данном случае, порт Squid'а).
Т.е., в описанном случае, необходимо в rc.firewall разрешить прохождение пакетов из LAN в инет и отклик. И всё пойдёт через прокси (3128)!

Спасибо за отклики.