Добрый день! Сколько времени уже мучаюсь с 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
>[оверквотинг удален]
> 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 в ядре изменен?
>[оверквотинг удален]
>> libalias.ko
>> 8 1 0xffffffff80e4c000 163f
>> ipdivert.ko
> Дарагой друк!
> Не пытайтесь нас обмануть или ввести в заблуждение!
> Либо вы не пересобирали ядро, либо пересобрали его неправильно.
> Об этом свидетельствует ваш вывод kldstat а именно строки
> ipfw.ko и ipdivert.ko
> Это означает, что фаер и диверт не в ядре, а подгружены модулем.
> Как пересобирали ядро? Команды пересборки? ident в ядре изменен?Делал по-видимому достаточно по-нубски.
Допиливал все это в GENERIC. А собирал и устанавливал через make buildkernel make installkernel
>[оверквотинг удален]
>> Дарагой друк!
>> Не пытайтесь нас обмануть или ввести в заблуждение!
>> Либо вы не пересобирали ядро, либо пересобрали его неправильно.
>> Об этом свидетельствует ваш вывод kldstat а именно строки
>> ipfw.ko и ipdivert.ko
>> Это означает, что фаер и диверт не в ядре, а подгружены модулем.
>> Как пересобирали ядро? Команды пересборки? ident в ядре изменен?
> Делал по-видимому достаточно по-нубски.
> Допиливал все это в GENERIC. А собирал и устанавливал через make buildkernel
> make installkernel1. Полный вывод 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 нужно закомментировать.
> ipfw add 64000 fwd 127.0.0.1:3128 tcp from 192.168.1.0/24 80 to any 80fwd | forward ipaddr | tablearg [, port ]
надо адрес,порт
у вас адрес:портhttp://www.opennet.me/man.shtml?topic=ipfw&category=8&russian=1
>> 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что мы и наблюдаем у топикстартера.
>[оверквотинг удален]
> Другое дело, что ipfw и divert могут быть включены как в конфигурационном
> файле ядра
> options IPFIREWALL
> options IPDIVERT
> так и подгружены через loader.conf
> ipfw_load="YES"
> ipdivert_load="YES"
> а fwd включается только через ядро
> options IPFIREWALL_FORWARD
> что мы и наблюдаем у топикстартера.У вас точно работает через двоеточие?
Можно узнать версию ОС?)
>[оверквотинг удален]
>> options IPFIREWALL
>> options IPDIVERT
>> так и подгружены через loader.conf
>> ipfw_load="YES"
>> ipdivert_load="YES"
>> а fwd включается только через ядро
>> options IPFIREWALL_FORWARD
>> что мы и наблюдаем у топикстартера.
> У вас точно работает через двоеточие?
> Можно узнать версию ОС?)=)) Я сам был крайне удивлен, когда проверил на 7.4 - работает!
Мало того, специально проверил на 8.2 - аналогично!
НАВЕРНОЕ У МЕНЯ ФРЯ НЕПРАВИЛЬНАЯ?!