BRIDGE+IPFW+NASSI

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

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
GRooVE
ст. сержант
Сообщения: 309
Зарегистрирован: 2009-01-04 10:33:43
Откуда: Odessa, UA
Контактная информация:

BRIDGE+IPFW+NASSI

Непрочитанное сообщение GRooVE » 2009-01-04 12:25:04

Доброе время суток!

Имеются 3 интерфейса, объединенные в bridge.
Необходимо реализовать нормальную работу чата Network Assistant между клиентами всех трех интерфейсов.
Клиенты на всех интерфейсах находятся в одной подсети (172.16.х.х/17).
Чат работает по multicast (234.0.0.1) + tcp/udp (порты 50138, 50139).

На просторах инета нашел вот такой вот вариант реализации этой беды в ipfw:

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

add allow udp from 192.168.0.0/16 50139 to me 50138 via eth0
add allow udp from me 50139 to 192.168.0.0/16 50138 via eth0
add allow udp from 192.168.0.0/16 50139 to 234.0.0.1 50138 via eth0
add allow udp from 234.0.0.1 50138 to 192.168.0.0/16 50139 via eth0
add allow tcp from 192.168.0.0/16 1024-65535 to me 50139 via eth0
add allow tcp from me 1024-65535 to 192.168.0.0/16 50139 via eth0
По-идее здесь ничего сложного нет, однако, у меня данный вариант работать отказывается.
Из-за безысходности пробовал добавить:
add allow all from any to any

Однако в любом из случаев добиваюсь только того, что первая сеть видит сообщения второй, а вот вторая не видит первую вообще никак :(
Посещают мысли в отношении того, что виноват не ipfw...
Есть варианты по поводу того куда копать?

При необходимости вылажу все необходимые конфиги!

Заранее благодарен за предоставленную помощь!

Хостинговая компания 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: BRIDGE+IPFW+NASSI

Непрочитанное сообщение paradox » 2009-01-04 12:34:39

Имеются 3 интерфейса, объединенные в bridge.
так все таки бридж или мультикаст
как то несовсем понятно

ну давайте
ifconfig -a
для начала

Аватара пользователя
GRooVE
ст. сержант
Сообщения: 309
Зарегистрирован: 2009-01-04 10:33:43
Откуда: Odessa, UA
Контактная информация:

Re: BRIDGE+IPFW+NASSI

Непрочитанное сообщение GRooVE » 2009-01-04 12:46:24

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

cs# ifconfig -a
re0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=98<VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM>
        ether 00:1e:58:fe:eb:6f
        media: Ethernet autoselect (1000baseTX <full-duplex>)
        status: active
sk0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=8<VLAN_MTU>
        ether 00:1e:58:a0:0e:24
        media: Ethernet autoselect (1000baseTX <full-duplex,flag0,flag1>)
        status: active
vr0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=8<VLAN_MTU>
        ether 00:11:d8:ec:c6:cc
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
        inet 127.0.0.1 netmask 0xff000000
bridge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        ether 22:86:13:b8:73:a3
        inet 172.16.1.100 netmask 0xffffff00 broadcast 172.16.1.255
        inet 10.10.1.1 netmask 0xfffffff0 broadcast 10.10.1.15
        id 00:00:00:00:00:00 priority 32768 hellotime 2 fwddelay 15
        maxage 20 holdcnt 6 proto rstp maxaddr 100 timeout 1200
        root id 00:00:00:00:00:00 priority 32768 ifcost 0 port 0
        member: vr0 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
        member: re0 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
        member: sk0 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
ng0: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> metric 0 mtu 1496
        inet 91.ХХХ.ХХХ.ХХХ --> 192.168.255.1 netmask 0xffffffff
в rc.conf выглядет так:

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

cloned_interfaces="bridge0"
ifconfig_bridge0="inet 172.16.1.100/24 addm sk0 addm re0 addm vr0"
ifconfig_bridge0_alias0="inet 10.10.1.1/28"
ifconfig_sk0="up"
ifconfig_re0="up"
ifconfig_vr0="up"
Последний раз редактировалось GRooVE 2009-01-04 13:07:57, всего редактировалось 1 раз.

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

Re: BRIDGE+IPFW+NASSI

Непрочитанное сообщение paradox » 2009-01-04 13:02:27

я бы для начала послушал tcpdump на каждом интерфейсе
при активности чата
дабы убедиться что есть запросы
и смотреть куда они дальше проходят или нет
а фаер можно и вообще отключить в ядре
должно поидеи все работать

Аватара пользователя
GRooVE
ст. сержант
Сообщения: 309
Зарегистрирован: 2009-01-04 10:33:43
Откуда: Odessa, UA
Контактная информация:

Re: BRIDGE+IPFW+NASSI

Непрочитанное сообщение GRooVE » 2009-01-04 13:30:50

paradox писал(а):я бы для начала послушал tcpdump на каждом интерфейсе
при активности чата
дабы убедиться что есть запросы
и смотреть куда они дальше проходят или нет
а фаер можно и вообще отключить в ядре
должно поидеи все работать
ipfw отключать нельзя...
по скольку для сети 10.10.х.х/28 - натим интернет, а для 172.16.х.х/17 - работаем как мост!

В общем вот ipfw.sh

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

fwcmd="/sbin/ipfw"

${fwcmd} -f flush
${fwcmd} -f pipe flush
${fwcmd} -f queue flush

    oif="ng0" # Внешний интерфейс
    iif="brigde0" # Внутренний интерфейс (sk0, re0, vr0). sk0 - смотрит в сеть провайдера.
    iip="172.16.1.100" # Внутренний IP сети провайдера
    int="10.10.1.0/28,10.10.10.2,10.10.10.3" # Диапазон адресов, кому раздаем интернет
    ilr="172.16.0.0/17,91.202.244.2,91.202.244.4,91.202.244.1" # Диапазон локальных адресов, которые раздаем
    dns="91.202.244.1,172.16.0.1,195.66.200.100" # днс'ы
    prv="172.16.0.0/17" # Локальная сеть прова
    wns="91.202.244.5"# WINS прова

# Правила для чата
${fwcmd} add allow udp from ${prv} 50139 to 234.0.0.1 50138
${fwcmd} add allow udp from 234.0.0.1 50138 to ${prv} 50139
${fwcmd} add allow all from ${prv} to ${prv}

# Режим скорость
${fwcmd} add pipe 1 all from not ${int},${ilr},${wns} to ${int}
${fwcmd} pipe 1 config bw 577Kbytes

# Тут все ясно....
${fwcmd} add allow ip from any to any via lo0
${fwcmd} add deny ip from any to 127.0.0.0/8
${fwcmd} add deny ip from 127.0.0.0/8 to any
${fwcmd} add deny ip from ${int} to any in via ${oif}
${fwcmd} add deny ip from any to 172.16.0.0/12 in via ${oif}
${fwcmd} add deny ip from any to 192.168.0.0/16 in via ${oif}
${fwcmd} add deny ip from any to 169.254.0.0/16 in via ${oif}
${fwcmd} add deny ip from any to 224.0.0.0/4 in via ${oif}
${fwcmd} add deny ip from any to 240.0.0.0/4 in via ${oif}
${fwcmd} add deny all from any to any frag  
${fwcmd} add deny icmp from any to 255.255.255.255 via ${oif}
${fwcmd} add deny ip from 172.16.0.0/12 to any out via ${oif}
${fwcmd} add deny ip from 192.168.0.0/16 to any out via ${oif}
${fwcmd} add deny ip from 0.0.0.0/8 to any out via ${oif}
${fwcmd} add deny ip from 169.254.0.0/16 to any out via ${oif}
${fwcmd} add deny ip from 224.0.0.0/4 to any out via ${oif}
${fwcmd} add deny ip from 240.0.0.0/4 to any out via ${oif}

#Bruteblockd
${fwcmd} add deny ip from 'table(1)' to me

#anti-spuffing
${fwcmd} add deny ip from any to any not verrevpath in

#тут тоже ясно....
${fwcmd} add deny icmp from any to any icmptypes 1,2,4,5,6,7,9,10,13,12,14,15,16,17

#Разрешаем все между клиентами
${fwcmd} add allow all from ${int} to ${int}

#Раздаем внешку
${fwcmd} add divert natd all from ${int} to not ${int},${ilr} out via ${oif}
${fwcmd} add allow all from ${int} to not ${int},${ilr} in not via ${oif}
${fwcmd} add divert natd all from not ${int},${ilr} to me in via ${oif}
${fwcmd} add allow all from not ${int},${ilr} to ${int}

#Раздаем локалку
${fwcmd} add divert 8669 all from ${int} to ${ilr} out
${fwcmd} add allow all from ${int} to ${ilr} in not via ${oif}
${fwcmd} add divert 8669 all from ${ilr} to me in
${fwcmd} add allow all from ${ilr} to ${int}

#Тут и далее - все ясно
${fwcmd} add allow tcp from any to any established
${fwcmd} add allow ip from me to any keep-state
${fwcmd} add allow icmp from any to me

#VPN
${fwcmd} add allow tcp from any to me 1723
${fwcmd} add allow gre from any to me keep-state

#FTP
${fwcmd} add allow ip from any to me 21

#SSH
${fwcmd} add allow tcp from any to me 22

${fwcmd} add deny all from any to any

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

Re: BRIDGE+IPFW+NASSI

Непрочитанное сообщение paradox » 2009-01-04 13:41:55

еще опция про муликаст была в ядре
попробуй с ней пересобрать

Аватара пользователя
GRooVE
ст. сержант
Сообщения: 309
Зарегистрирован: 2009-01-04 10:33:43
Откуда: Odessa, UA
Контактная информация:

Re: BRIDGE+IPFW+NASSI

Непрочитанное сообщение GRooVE » 2009-01-04 13:43:29

paradox писал(а):еще опция про муликаст была в ядре
попробуй с ней пересобрать
на счет опции можно по подробнее?

в ядро добавлял device if_bridge... что с ним, что без него - одинаково :)

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: BRIDGE+IPFW+NASSI

Непрочитанное сообщение hizel » 2009-01-04 13:44:38

man if_bridge на предмет ынысед переменных
потенциально там можно отрубить фаер вообще ;)
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
GRooVE
ст. сержант
Сообщения: 309
Зарегистрирован: 2009-01-04 10:33:43
Откуда: Odessa, UA
Контактная информация:

Re: BRIDGE+IPFW+NASSI

Непрочитанное сообщение GRooVE » 2009-01-04 13:54:36

hizel писал(а):man if_bridge на предмет ынысед переменных
потенциально там можно отрубить фаер вообще ;)
по поводу "отрубить фаер вообще" - вариант отпадает, т.к. у мну 2 сети на одном интерфейсе (sk0)... у мну несколько клиентов, кому я раздаю инет - висят в сетке прова (172.16.x.x/17), правда под моими IP (10.10.x.x/28). А в моем случае, мост должен работать только для адресов в сети 172.16.х.х, для 10.10.х.х - он должен натить.

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: BRIDGE+IPFW+NASSI

Непрочитанное сообщение hizel » 2009-01-04 13:55:55

ок тогда точно определится, где вы фильтруете на интефейсах, на самом бридже или везде сразу , это важно
смотрим в man if_bridge
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
GRooVE
ст. сержант
Сообщения: 309
Зарегистрирован: 2009-01-04 10:33:43
Откуда: Odessa, UA
Контактная информация:

Re: BRIDGE+IPFW+NASSI

Непрочитанное сообщение GRooVE » 2009-01-04 14:48:07

hizel писал(а):ок тогда точно определится, где вы фильтруете на интефейсах, на самом бридже или везде сразу , это важно
смотрим в man if_bridge
по-моему, в плане гибкости, удобнее фильтровать и там и там:
net.link.bridge.pfil_member=1
net.link.bridge.pfil_bridge=1

P.S. В качестве проверки отключал "net.link.bridge.pfil_bridge" - результат тот же...

Аватара пользователя
GRooVE
ст. сержант
Сообщения: 309
Зарегистрирован: 2009-01-04 10:33:43
Откуда: Odessa, UA
Контактная информация:

Re: BRIDGE+IPFW+NASSI

Непрочитанное сообщение GRooVE » 2009-01-04 15:19:02

Обнаружил, что под нижеуказанные правила фаервола попадают пакеты только с интерфейса sk0, а вот vr0 - нет! По-этому юзеров этой сети не видно в сети sk0!

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

00100 194 30106 allow ip from any to any via bridge0
00200   0     0 allow udp from 172.16.0.0/17 to 234.0.0.1
00300   0     0 allow udp from 234.0.0.1 to 172.16.0.0/17
00400 466 80920 allow ip from 172.16.0.0/17 to 172.16.0.0/17
В общем, мультикаст с vr0 не проходит мост... даже до ipfw, как я понял, не доходит!

P.S. Чтение man if_bridge результатов не дало... :(

maradona
сержант
Сообщения: 188
Зарегистрирован: 2007-12-13 1:06:44
Откуда: г. Ровно
Контактная информация:

Re: BRIDGE+IPFW+NASSI

Непрочитанное сообщение maradona » 2009-01-16 0:05:41

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

ifconfig_bridge0="inet 172.16.1.100/24 addm sk0 addm re0 addm vr0"
ifconfig_bridge0_alias0="inet 10.10.1.1/28"
я бы попробовал это убрать, сеть 10.10.1.1/28 поцепить на отдельную сетевую, адрес присвоить одной из сетевух моста, ато алиасы - ну его...