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

Исходное сообщение
"getsockopt(IP_FW_ADD): Invalid argument"

Отправлено slowkazak , 04-Янв-12 10:52 
Добрый день! Сколько времени уже мучаюсь с ipfw fwd
Да, создавал тему, в которой мне предлагали сделать все через автонастройку прокси, но всеже хочется понять что у меня не так:
при вызове правила fwd получаю ipfw: getsockopt(IP_FW_ADD): Invalid argument

Ладно, иду в man ipfw, читаю. пересобираю ядро со всеми нижеописанными параметрами, переустанавливаю, перегружаюсь

options         IPFIREWALL                   # собственно файрволл
options         IPFIREWALL_VERBOSE           # логгинг пакетов, если в правиле написано log
options         IPFIREWALL_VERBOSE_LIMIT=100 # ограничение логов (повторяющихся)
options         IPFIREWALL_DEFAULT_TO_ACCEPT # дефолтное правило - разрешающее
options         IPDIVERT                     # необходимо для NAT
options         IPFIREWALL_FORWARD           # перенаправление пакетов


пробую добавить правило:
ipfw add 64000 fwd 127.0.0.1:3128 tcp from 192.168.1.0/24 80 to any 80 via rl0 keep-state
(хотя и не только его, любое правило где есть инструция fwd). и получаю тоже самое.
Объясните, в чем такая жуткая проблема?

#uname-a
#FreeBSD localhost.bsd 8.2-RELEASE FreeBSD 8.2-RELEASE #1:

# kldstat
Id Refs Address            Size     Name
1   16 0xffffffff80100000 c9fe20   kernel
2    4 0xffffffff80e22000 8d44     netgraph.ko
3    1 0xffffffff80e2b000 1532     ng_ether.ko
4    1 0xffffffff80e2d000 323e     ng_pppoe.ko
5    1 0xffffffff80e31000 1bc2     ng_socket.ko
6    2 0xffffffff80e33000 ca6e     ipfw.ko
7    1 0xffffffff80e40000 b1da     libalias.ko
8    1 0xffffffff80e4c000 163f     ipdivert.ko


Содержание

Сообщения в этом обсуждении
"getsockopt(IP_FW_ADD): Invalid argument"
Отправлено михалыч , 04-Янв-12 11:22 
>[оверквотинг удален]
>  4    1 0xffffffff80e2d000 323e    
> ng_pppoe.ko
>  5    1 0xffffffff80e31000 1bc2    
> ng_socket.ko
>  6    2 0xffffffff80e33000 ca6e    
> ipfw.ko
>  7    1 0xffffffff80e40000 b1da    
> libalias.ko
>  8    1 0xffffffff80e4c000 163f    
> ipdivert.ko

Дарагой друк!
Не пытайтесь нас обмануть или ввести в заблуждение!
Либо вы не пересобирали ядро, либо пересобрали его неправильно.
Об этом свидетельствует ваш вывод kldstat а именно строки
ipfw.ko и ipdivert.ko
Это означает, что фаер и диверт не в ядре, а подгружены модулем.

Как пересобирали ядро? Команды пересборки? ident в ядре изменен?


"getsockopt(IP_FW_ADD): Invalid argument"
Отправлено slowkazak , 04-Янв-12 11:48 
>[оверквотинг удален]
>> libalias.ko
>>  8    1 0xffffffff80e4c000 163f
>> ipdivert.ko
> Дарагой друк!
> Не пытайтесь нас обмануть или ввести в заблуждение!
> Либо вы не пересобирали ядро, либо пересобрали его неправильно.
> Об этом свидетельствует ваш вывод kldstat а именно строки
> ipfw.ko и ipdivert.ko
> Это означает, что фаер и диверт не в ядре, а подгружены модулем.
> Как пересобирали ядро? Команды пересборки? ident в ядре изменен?

Делал по-видимому достаточно по-нубски.
Допиливал все это в GENERIC. А собирал и устанавливал через make buildkernel make installkernel


"getsockopt(IP_FW_ADD): Invalid argument"
Отправлено михалыч , 04-Янв-12 12:08 
>[оверквотинг удален]
>> Дарагой друк!
>> Не пытайтесь нас обмануть или ввести в заблуждение!
>> Либо вы не пересобирали ядро, либо пересобрали его неправильно.
>> Об этом свидетельствует ваш вывод kldstat а именно строки
>> ipfw.ko и ipdivert.ko
>> Это означает, что фаер и диверт не в ядре, а подгружены модулем.
>> Как пересобирали ядро? Команды пересборки? ident в ядре изменен?
> Делал по-видимому достаточно по-нубски.
> Допиливал все это в GENERIC. А собирал и устанавливал через make buildkernel
> make installkernel

1. Полный вывод uname -a
2. cat /boot/loader.conf
3. cat /usr/src/sys/i386/conf/`uname -a | awk '{print $13}' | sed 's/\(.*\/\)\{6\}//g'` | grep ident

настольную библию не судьба почитать?
Все не просто, а очень просто.

1. cp /usr/src/sys/i386/conf/GENERIC /usr/src/sys/i386/conf/my
2. рихтуем как нам надо наш my
(не забываем! обязательно изменить идентификатор ядра ident GENERIC на ident my)
3. make buildkernel KERNCONF=my
4. make installkernel KERNCONF=my

И если то, что было подгружено ранее в /boot/loader.conf
а теперь есть в ядре, то это в /boot/loader.conf нужно закомментировать.


"getsockopt(IP_FW_ADD): Invalid argument"
Отправлено XoRe , 04-Янв-12 19:09 
> ipfw add 64000 fwd 127.0.0.1:3128 tcp from 192.168.1.0/24 80 to any 80

fwd | forward ipaddr | tablearg [, port ]

надо адрес,порт
у вас адрес:порт

http://www.opennet.me/man.shtml?topic=ipfw&category=8&russian=1


"getsockopt(IP_FW_ADD): Invalid argument"
Отправлено михалыч , 04-Янв-12 19:26 
>> ipfw add 64000 fwd 127.0.0.1:3128 tcp from 192.168.1.0/24 80 to any 80
> fwd | forward ipaddr | tablearg [, port ]
> надо адрес,порт
> у вас адрес:порт
> http://www.opennet.me/man.shtml?topic=ipfw&category=8&russian=1

Да, но у меня правила добавляются через адрес:порт и через адрес,порт.

Другое дело, что ipfw и divert могут быть включены как в конфигурационном файле ядра
options IPFIREWALL
options IPDIVERT

так и подгружены через loader.conf
ipfw_load="YES"
ipdivert_load="YES"

а fwd включается только через ядро
options IPFIREWALL_FORWARD

что мы и наблюдаем у топикстартера.


"getsockopt(IP_FW_ADD): Invalid argument"
Отправлено XoRe , 05-Янв-12 12:23 
>[оверквотинг удален]
> Другое дело, что ipfw и divert могут быть включены как в конфигурационном
> файле ядра
> options IPFIREWALL
> options IPDIVERT
> так и подгружены через loader.conf
> ipfw_load="YES"
> ipdivert_load="YES"
> а fwd включается только через ядро
> options IPFIREWALL_FORWARD
> что мы и наблюдаем у топикстартера.

У вас точно работает через двоеточие?
Можно узнать версию ОС?)


"getsockopt(IP_FW_ADD): Invalid argument"
Отправлено михалыч , 05-Янв-12 15:57 
>[оверквотинг удален]
>> options IPFIREWALL
>> options IPDIVERT
>> так и подгружены через loader.conf
>> ipfw_load="YES"
>> ipdivert_load="YES"
>> а fwd включается только через ядро
>> options IPFIREWALL_FORWARD
>> что мы и наблюдаем у топикстартера.
> У вас точно работает через двоеточие?
> Можно узнать версию ОС?)

=)) Я сам был крайне удивлен, когда проверил на 7.4 - работает!
Мало того, специально проверил на 8.2 - аналогично!
НАВЕРНОЕ У МЕНЯ ФРЯ НЕПРАВИЛЬНАЯ?!