transparent squid и пр.

Проблемы установки, настройки и работы Правильной Операционной Системы

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
bmth
рядовой
Сообщения: 32
Зарегистрирован: 2008-10-10 19:06:09

transparent squid и пр.

Непрочитанное сообщение bmth » 2009-07-18 21:52:06

Дано: FreeBSD 7.0, ядро GENERIC, ipnat, ipfw, squid 2.7.
Требуется: организовать прозрачный прокси

Проблема возникает тут:

Код: Выделить всё

gw#ipfw add fwd 172.16.0.1:3128 tcp from 172.16.0.0/16 to any http
ipfw: getsockopt(IP_FW_ADD): Invalid argument
На форуме и в интернете есть масса информации тему transparent proxy вообще и этой ошибки в частности, но я хотел бы разобраться немного в другом.

IPFW подгружается модулем (/etc/rc.conf):

Код: Выделить всё

firewall_enable="YES"
firewall_type="/etc/ipfw.rules"
Вполне успешно в него подгружаются правила стандартной открытой конфигурации, которые я вынес в отдельный файл для удобства последующего редактирования (/etc/ipfw.rules):

Код: Выделить всё

add 00100 allow ip from any to any via lo0
add 00200 deny ip from any to 127.0.0.0/8
add 00300 deny ip from 127.0.0.0/8 to any
add 65000 allow ip from any to any
add 65535 deny ip from any to any
Так что все вроде работает, проблема возникает только с правилами перенаправления (fwd). Вероятную причину я вижу в том, что в конфигурации ядра отсутствует опция IPFIREWALL_FORWARD. И вот тут у меня возникает ряд вопросов.
  1. Как узнать опции, с которыми было сконфигурировано данное ядро? Понятно, что сейчас у меня стандарное ядро, и его опции указаны в /usr/src/sys/i386/conf/GENERIC. Но меня интересует можно ли узнать опции ядра случае, когда само ядро есть, а файл с его настройками потерялся, удалился, испортился или засекретился?
  2. В ядре GENERIC вообще нет опций связанных с IPFW - файрволл подгружается модулем. Соответственно, хотелось бы узнать с какими настройками был собран этот модуль?
  3. Наконец, можно ли пересобрать не все ядро, а лишь отдельный его модуль?

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: transparent squid и пр.

Непрочитанное сообщение paradox » 2009-07-18 21:55:49

К
ак узнать опции, с которыми было сконфигурировано данное ядро? Понятно, что сейчас у меня стандарное ядро, и его опции указаны в /usr/src/sys/i386/conf/GENERIC. Но меня интересует можно ли узнать опции ядра случае, когда само ядро есть, а файл с его настройками потерялся, удалился, испортился или засекретился?
никак
В ядре GENERIC вообще нет опций связанных с IPFW - файрволл подгружается модулем. Соответственно, хотелось бы узнать с какими настройками был собран этот модуль?
по умолчанию
Наконец, можно ли пересобрать не все ядро, а лишь отдельный его модуль?
попробуйте

bmth
рядовой
Сообщения: 32
Зарегистрирован: 2008-10-10 19:06:09

Re: transparent squid и пр.

Непрочитанное сообщение bmth » 2009-07-18 23:44:45

paradox писал(а):
bmth писал(а):В ядре GENERIC вообще нет опций связанных с IPFW - файрволл подгружается модулем. Соответственно, хотелось бы узнать с какими настройками был собран этот модуль?
по умолчанию
а где их найти? в /usr/src/sys/modules/ipfw/ один только мейкфайл =\

bmth
рядовой
Сообщения: 32
Зарегистрирован: 2008-10-10 19:06:09

Re: transparent squid и пр.

Непрочитанное сообщение bmth » 2009-07-18 23:48:14

А вообще, хотелось бы не вкомпиливать ipfw в ядро - оставить модулем, но при этом получить поддержку форвардинга. Сейчас ее нет:

Код: Выделить всё

ipfw2 (+ipv6) initialized, divert loadable, rule-based forwarding disabled, default to deny, logging disabled

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: transparent squid и пр.

Непрочитанное сообщение paradox » 2009-07-19 0:00:52

а мне хотелось бы замок из золота
на необитаемом острове
но увы стоко золота токо в фортноксе
и америка не дает добро что бы я его у них вывез

поэтому и без пересборки ядра форвард вы никак не получите одной лиш пересборкой модуля фаервола

bmth
рядовой
Сообщения: 32
Зарегистрирован: 2008-10-10 19:06:09

Re: transparent squid и пр.

Непрочитанное сообщение bmth » 2009-07-19 1:58:39

я не говорю про пересборку одного лишь модуля ipfw, я говорю про включение форвардинга в модуле

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: transparent squid и пр.

Непрочитанное сообщение paradox » 2009-07-19 2:19:35

ну вот ответте мне на вопрос какая опция в конфиге ядра заставляет модуль быть статически вкомпиленым в ядро

уж наверняка не фаервол-форвард

bmth
рядовой
Сообщения: 32
Зарегистрирован: 2008-10-10 19:06:09

Re: transparent squid и пр.

Непрочитанное сообщение bmth » 2009-07-19 3:12:57

Ага, понятно. Просто я думал, что IPFIREWALL_FORWARD подразумевает наличие IPFIREWALL.

Тут возникла другая проблема... после пересборки ядра не меняется его идентификатор (sysctl kern.ident) =/ Не говоря уже о том, что форвардинг не начинает работать как надо.

Дошел уже до такого эксперимента:

Код: Выделить всё

gw./usr/src/# cp sys/i386/conf/GENERIC sys/i386/conf/MYKERNEL
gw./usr/src/# ee sys/i386/conf/MYKERNEL <- тут просто меняю параметр ident на MYKERNEL
gw./usr/src/# make buildkernel KERNCONF=MYKERNEL
gw./usr/src/# make installkernel KERNCONF=MYKERNEL
gw./usr/src/# reboot
....
gw./root/# uname -a
FreeBSD gw 7.0-RELEASE FreeBSD 7.0-RELEASE #0: Sun Feb 24 19:59:52 UTC 2008     root@logan.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC  i386
gw./root/# sysctl kern.ident
kern.ident: GENERIC
Я так понимаю, что каким-то образом подгружается старое ядро. Смущает, что kern.bootfile указывает на новое ядро, в котором указан правильный ident, а строки root@logan.cse.buffalo.edu просто нет.

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: transparent squid и пр.

Непрочитанное сообщение paradox » 2009-07-19 3:20:34

та ну просто фантастика
ls -l /usr/obj/src/sys/ итд кто там что там смотри имя ядра
собиралось ли твой MYKERNEL

bmth
рядовой
Сообщения: 32
Зарегистрирован: 2008-10-10 19:06:09

Re: transparent squid и пр.

Непрочитанное сообщение bmth » 2009-07-19 4:02:05

Фантастика объяснилась очень просто - у меня было битым зеркало на gmirror =) соотв. на диске, с которого происходит загрузка, находилась устаревшая файловая система, а все мои изменения записывались на другой диск.

bmth
рядовой
Сообщения: 32
Зарегистрирован: 2008-10-10 19:06:09

Re: transparent squid и пр.

Непрочитанное сообщение bmth » 2009-07-19 4:53:13

все настроил, спасибо за наводящие мысли.
p.s. ipfirewall_forward не заработал без ipfirewall =/ видимо неспроста эта возможность не вкомпилирована в модуль ipfw

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: transparent squid и пр.

Непрочитанное сообщение paradox » 2009-07-19 5:13:28

форвард это опция не модуля а ядра
потому что оно стек перестраивает по другому
поэтому форвард нужно в ядро добавлять