Страница 1 из 1

Ошибка при добавлении правила с fwd в IPFW

Добавлено: 2007-05-27 14:13:48
Vet
Ошибка при добавлении правила с fwd в IPFW

>ipfw add fwd 127.0.0.1,3128 tcp from 192.168.0.0/24 to any 80 via tun0
ipfw: getsockopt(IP_FW_ADD): Invalid argument


Система:

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

>uname -a
FreeBSD server.home.net 6.2-RELEASE-p5 FreeBSD 6.2-RELEASE-p5 #4: Sun May 27 12:34:06 EEST 2007     root@server.home.net:/usr/obj/usr/src/sys/GENERIC  i386
Обновил исходники и скомпилировал (думал решит проблему)

Интерфейсы:

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

>ifconfig
rl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        options=8<VLAN_MTU>
        inet 192.168.1.254 netmask 0xffffff00 broadcast 192.168.1.255
        ether 00:0e:2e:a9:25:37
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
xl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        options=9<RXCSUM,VLAN_MTU>
        inet 192.168.0.100 netmask 0xffffff00 broadcast 192.168.0.255
        ether 00:01:02:eb:55:60
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
plip0: flags=108810<POINTOPOINT,SIMPLEX,MULTICAST,NEEDSGIANT> mtu 1500
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x4
        inet6 ::1 prefixlen 128
        inet 127.0.0.1 netmask 0xff000000
tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1492
        inet xxx.xxx.xxx.xxx --> xxx.xx.xx.xx netmask 0xffffffff
        Opened by PID 394
Ядро скомпилировано с параметрами:

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

options         IPFIREWALL
options         IPFIREWALL_FORWARD

options         IPFIREWALL_VERBOSE
options         IPFIREWALL_VERBOSE_LIMIT=100

options         IPDIVERT

options         DUMMYNET
В rc.conf:

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

firewall_enable="YES"
firewall_script="/etc/rc.firewall"
Файрвол работает:

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

>ipfw show
65535    1      48 deny ip from any to any
При попытке добавить правило с форвадингом следующая ошибка:

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

>ipfw add fwd 127.0.0.1,3128 tcp from 192.168.0.0/24 to any 80 via tun0   
ipfw: getsockopt(IP_FW_ADD): Invalid argument
В чем может быть проблема?

Добавлено: 2007-05-27 15:15:39
Dmitriy.A
ipfw list ? А лучше весь фаервольный файл. А если в скрипт засунуть и запустить? Может патчить надо :D

Добавлено: 2007-05-27 15:46:00
Vet
Dmitriy.A писал(а):ipfw list ? А лучше весь фаервольный файл. А если в скрипт засунуть и запустить? Может патчить надо :D

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


>ipfw list
00100 allow ip from any to any
65535 deny ip from any to any

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

>ipfw show
00100 478 41973 allow ip from any to any
65535  74  3745 deny ip from any to any

rc.firewall

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

>cat /etc/rc.firewall
/sbin/ipfw add 50 fwd 127.0.0.1,3128 tcp from 192.168.0.0/24 to any 80 via tun0
/sbin/ipfw add 100 allow ip from any to any

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

cat /etc/sysctl.conf
net.inet.ip.forwarding=1
net.inet.ip.fw.verbose=1
Проблема не в наборе правил, а в том что оно не добавляется

Добавлено: 2007-05-27 15:55:14
dikens3

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

ipfw add fwd 127.0.0.1,3128 tcp from 192.168.0.0/24 to any 80 via tun0 
Проверил у себя, нормально работает. :-)

Как вариант смотри IPFIREWALL_FORWARD в ядре. Я предположу что поддержка не собралась и поэтому не воспринимает fwd.

Покажи вывод kldstat -v ?

Добавлено: 2007-05-27 16:04:39
Vet
dikens3 писал(а):
Покажи вывод kldstat -v ?

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

>kldstat
Id Refs Address    Size     Name
 1    9 0xc0400000 6f6668   kernel
 2    1 0xc0af7000 59f20    acpi.ko
 3    4 0xc1bab000 a000     netgraph.ko
 4    1 0xc1bb9000 3000     ng_ether.ko
 5    1 0xc1bc4000 5000     ng_pppoe.ko
 6    1 0xc1bc9000 4000     ng_socket.ko
 7    2 0xc1bd3000 d000     ipfw.ko
 8    1 0xc1beb000 4000     ipdivert.ko

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

>kldstat -v
.......

 2    1 0xc0af7000 59f20    acpi.ko
        Contains modules:
                Id Name
                 1 nexus/acpi
                 2 acpi/acpi_button
                 3 acpi/acpi_isab
                 4 pcib/acpi_pci
                 5 acpi/acpi_pcib
                 6 pci/acpi_pcib
                 7 acpi/acpi_sysresource
                 8 acpi/acpi_timer
                 9 acpi/acpi_pci_link
                10 acpi/acpi_tz
                11 acpi/acpi_acad
                12 acpi/acpi_cmbat
                13 acpi/cpu
                14 acpi/acpi_ec
                15 acpi/acpi_lid
                16 cpu/acpi_perf
                17 acpi/acpi_smbat
                18 cpu/acpi_throttle
 3    4 0xc1bab000 a000     netgraph.ko
        Contains modules:
                Id Name
                386 netgraph
 4    1 0xc1bb9000 3000     ng_ether.ko
        Contains modules:
                Id Name
                387 ng_ether
 5    1 0xc1bc4000 5000     ng_pppoe.ko
        Contains modules:
                Id Name
                388 ng_pppoe
 6    1 0xc1bc9000 4000     ng_socket.ko
        Contains modules:
                Id Name
                389 ng_socket
 7    2 0xc1bd3000 d000     ipfw.ko
        Contains modules:
                Id Name
                390 ipfw
 8    1 0xc1beb000 4000     ipdivert.ko
        Contains modules:
                Id Name
                391 ipdivert

Добавлено: 2007-05-27 17:17:00
dikens3
ipfw загружен модулем и ядро ты не пересобирал. Т.е. поддержки fwd в ipfw у тебя нет. Собственно пересобери ядро с теми опциями, которые ты указал выше.

Добавлено: 2007-05-27 17:26:25
Vet
dikens3 писал(а):ipfw загружен модулем и ядро ты не пересобирал. Т.е. поддержки fwd в ipfw у тебя нет. Собственно пересобери ядро с теми опциями, которые ты указал выше.
>uname -a
FreeBSD server.home.net 6.2-RELEASE-p5 FreeBSD 6.2-RELEASE-p5 #4: Sun May 27 12:34:06 EEST 2007 root@server.home.net:/usr/obj/usr/src/sys/ GENERIC i386

ядро осталось GENERIC. :(

Неправильно указал опцию при компиляции ядра:

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

make buildkernel KERNKONF=IPFWKERNEL
KERNKONF !!!

Ну и соответственно при установке ядра та же ошибка.

Если не указан параметр KERNСONF будет компилироватся GENERIC


После перекомпиляции ядра fwd стал добавлятся

http://www.lissyara.su/?id=1127
По файрволлам всё. Да, забыл - это всё описано для статически скомпиленных в ядро файрволлов, если грузите модулем - могут быть некоторые отличия (Хотя, с какого перепугу?).
Очевидно есть различия между подключением ipfw модулем и скомпиленным в ядро - нельзя использовать форвардинг.

Спасибо за помощь. Смотрел везде где только можно, а то что скомпилировалось не то ядро не видел.