Jump to content
Калькуляторы

FreeBSD 11.2/12.0 в режиме bridge - пропадают пакеты в pipe

Всем доброго дня.

Столкнулся с проблемой, плз подскажите, кто знает возможное решение.

 

Есть мост на FreeBSD версии 8.4 - с ним никаких проблем, кроме того, что для замены диска в зеркале надо выключать машину.

Решили проверить новые версии 11.2/12.0 в режиме фильтрующего моста. Вроде сдеали по инструкциям из интернет, но видим что пакет попадает в pipe и там уже дропается :(

 

правило в такой форме:

создание интерфейса моста:

 

ifconfig_ix0="up  -tso4 -tso6 -lro -vlanhwtso"
ifconfig_ix1="up  -tso4 -tso6 -lro -vlanhwtso"

cloned_interfaces="bridge0"
ifconfig_bridge0="addm ix0 addm ix1 up"
 

создание трубы:

ipfw pipe 100 config bw 15Mbit/s queue 465

 

заворот в pipe:

ipfw add 100 pipe 100 ip from any to 10.10.10.0/24 out via ix0

 

В таком виде имеем статистику: (net.inet.ip.fw.one_pass: 0)

 

00100   4946    378727 pipe 100 ip from any to 10.10.10.0/24 out via ix0
00110      0       0 allow ip from any to 10.10.10.0/24 out via ix0
 

На мосту FB 8.4 оба правила растут синхронно, сначала пакеты попадают в pipe, потом возвращаются в след. правила и выпадают из файра по allow.  В 11.2/12.0 никак не могу добиться, чтобы пакет возвращался из pipe к след. правилу.

Если правило 100 с pipe убрать совсем - тогда все работает, пакеты ходят нормально. Т.е. что то с dummynet настройками ?

 

Если какая-то инфа нужна для дальнейшей диагностики - плз скажите что именно - сразу опубликую.

 

Заранее спасибо и все такое.

Share this post


Link to post
Share on other sites

12.0 снесли, думали может сырая и тд. Откатились типа на проверенный релиз 11.2

 

FreeBSD 11.2-RELEASE
 

net.inet.ip.fw.enable: 1
net.inet.ip.fw.dyn_keep_states: 0
net.inet.ip.fw.dyn_keepalive: 1
net.inet.ip.fw.dyn_short_lifetime: 5
net.inet.ip.fw.dyn_udp_lifetime: 10
net.inet.ip.fw.dyn_rst_lifetime: 1
net.inet.ip.fw.dyn_fin_lifetime: 1
net.inet.ip.fw.dyn_syn_lifetime: 20
net.inet.ip.fw.dyn_ack_lifetime: 300
net.inet.ip.fw.dyn_parent_max: 4096
net.inet.ip.fw.dyn_max: 65536
net.inet.ip.fw.dyn_buckets: 8192
net.inet.ip.fw.curr_max_length: 0
net.inet.ip.fw.curr_dyn_buckets: 256
net.inet.ip.fw.dyn_parent_count: 0
net.inet.ip.fw.dyn_count: 0
net.inet.ip.fw.static_count: 5
net.inet.ip.fw.default_to_accept: 1
net.inet.ip.fw.tables_sets: 0
net.inet.ip.fw.tables_max: 256
net.inet.ip.fw.default_rule: 65535
net.inet.ip.fw.verbose_limit: 100
net.inet.ip.fw.verbose: 1
net.inet.ip.fw.autoinc_step: 10
net.inet.ip.fw.one_pass: 0
 

Edited by Azamat

Share this post


Link to post
Share on other sites

Поведение было одно и то же. Пакет пропадал в "трубе" :(

 

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

 

Кстати, на 11.2 и 12.0 одинаковый файл sysctl.conf, поэтому было бы точно также.

 

Вернуть версию 12 тоже нет проблем, мы ставили 12.0-stable от середины апреля

Edited by Azamat

Share this post


Link to post
Share on other sites

 12.0-STABLE

 

net.inet.ip.fw.enable: 1
net.inet.ip.fw.dyn_keep_states: 0
net.inet.ip.fw.dyn_keepalive: 1
net.inet.ip.fw.dyn_short_lifetime: 5
net.inet.ip.fw.dyn_udp_lifetime: 10
net.inet.ip.fw.dyn_rst_lifetime: 1
net.inet.ip.fw.dyn_fin_lifetime: 1
net.inet.ip.fw.dyn_syn_lifetime: 20
net.inet.ip.fw.dyn_ack_lifetime: 300
net.inet.ip.fw.dyn_parent_max: 4096
net.inet.ip.fw.dyn_max: 65536
net.inet.ip.fw.dyn_buckets: 8192
net.inet.ip.fw.curr_max_length: 0
net.inet.ip.fw.curr_dyn_buckets: 256
net.inet.ip.fw.dyn_parent_count: 0
net.inet.ip.fw.dyn_count: 0
net.inet.ip.fw.static_count: 1
net.inet.ip.fw.default_to_accept: 1
net.inet.ip.fw.tables_sets: 0
net.inet.ip.fw.tables_max: 256
net.inet.ip.fw.default_rule: 65535
net.inet.ip.fw.verbose_limit: 100
net.inet.ip.fw.verbose: 1
net.inet.ip.fw.autoinc_step: 10
net.inet.ip.fw.one_pass: 0

 

net.link.bridge.ipfw: 1

net.link.bridge.pfil_member: 1

 

00100    0      0 pipe 100 ip from any to 10.10.10.0/24 out via ix0
00110    0      0 allow ip from any to 10.10.10.0/24 out via ix0
 

Edited by Azamat

Share this post


Link to post
Share on other sites

Пингую с одной стороны моста на другую:

Трафик залетает в трубу и дропается, пинг не идет.

 

00100  120  10080 pipe 100 ip from any to 10.10.10.0/24 out via ix0
00110    0      0 allow ip from any to 10.10.10.0/24 out via ix0
 

Если сделать первым правилом allow from any to any - все пингуется.

Share this post


Link to post
Share on other sites

12.0-STABLE FreeBSD 12.0-STABLE BRIDGE  amd64

ifconfig -l
ix0 ix1 re0 lo0 bridge0

ix0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500
    options=e138bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,WOL_UCAST,WOL_MCAST,WOL_MAGIC,VLAN_HWFILTER,RXCSUM_IPV6,TXCSUM_IPV6>
    ether a0:36:9f:1d:c3:98
    media: Ethernet autoselect (Unknown)
    status: active
ix1: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500
    options=e138bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,WOL_UCAST,WOL_MCAST,WOL_MAGIC,VLAN_HWFILTER,RXCSUM_IPV6,TXCSUM_IPV6>
    ether a0:36:9f:1d:c3:9a
    media: Ethernet autoselect (Unknown)
    status: active
re0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500   !!! управляющий интерфейс
    options=8209b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,WOL_MAGIC,LINKSTATE>
    ether 0c:9d:92:1b:f6:e1
    inet 192.168.1.79 netmask 0xfffffe00 broadcast 192.168.1.255
    media: Ethernet autoselect (1000baseT <full-duplex>)
    status: active
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
    options=680003<RXCSUM,TXCSUM,LINKSTATE,RXCSUM_IPV6,TXCSUM_IPV6>
    inet 127.0.0.1 netmask 0xff000000
    groups: lo
bridge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
    ether 02:bf:e0:67:1b:00
    id 00:00:00:00:00:00 priority 32768 hellotime 2 fwddelay 15
    maxage 20 holdcnt 6 proto rstp maxaddr 2000 timeout 1200
    root id 00:00:00:00:00:00 priority 32768 ifcost 0 port 0
    member: ix1 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
            ifmaxaddr 0 port 2 priority 128 path cost 2000
    member: ix0 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
            ifmaxaddr 0 port 1 priority 128 path cost 2000
    groups: bridge
 

Share this post


Link to post
Share on other sites

со стороны ix1 (трафик приходит) 

tcpdump -i ix1 -n
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ix1, link-type EN10MB (Ethernet), capture size 262144 bytes
18:46:19.763109 IP 10.10.10.1 > 10.10.10.10: ICMP echo request, id 30347, seq 312, length 64
18:46:20.826687 IP 10.10.10.1 > 10.10.10.10: ICMP echo request, id 30347, seq 313, length 64
 

со стороны ix0 (трафик уходить должен) - тишина

tcpdump -i ix0 -n
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ix0, link-type EN10MB (Ethernet), capture size 262144 bytes
^C
0 packets captured
0 packets received by filter
0 packets dropped by kernel
 

счетчик пакетов, попадающих в pipe растет, но все пакеты дропнуты
00100  430   36120 pipe 100 ip from any to 10.10.10.0/24 out via ix0
00110    0       0 allow ip from any to 10.10.10.0/24 out via ix0
 

 

 

 

Здесь все по докам:

 

net.link.bridge.ipfw: 1
net.link.bridge.ipfw: 1
net.link.bridge.allow_llz_overlap: 0
net.link.bridge.inherit_mac: 0
net.link.bridge.log_stp: 0
net.link.bridge.pfil_local_phys: 0
net.link.bridge.pfil_member: 1
net.link.bridge.ipfw_arp: 0
net.link.bridge.pfil_bridge: 0
net.link.bridge.pfil_onlyip: 0
 

Share this post


Link to post
Share on other sites

from any to 10.10.10.0/24 out via ix0 - это как раз произвольный трафик со стороны ix1 в сторону ix0 и наружу через ix0

 

все эти конструкции прекрасно работают на FB 8.4

 

Edited by Azamat

Share this post


Link to post
Share on other sites

Понятно.

Вдумчиво, до просветления изучайте pipe и, если надо,  queue.
 

 

1 минуту назад, jffulcrum сказал:

@Azamat 

Из разряда проверки на идиотизм ситуации:

 

sysctl -a | grep net.inet.ip.forwarding

Ну, и еще
 

sysrc -a

 

Share this post


Link to post
Share on other sites

1 минуту назад, Azamat сказал:

net.inet.ip.forwarding: 0 - вроде само собой ?

 

Блджад, с чего у вас вообще что-то будет работать? gateway_enable="YES"  в rc.conf и ребут

Share this post


Link to post
Share on other sites

то же самое будет если сделать просто ipfw pipe 100 config bw 15Mbit/s без доп. параметров. 

По любому, пакет уходит в pipe и оттуда уже не возвращается - почему так ? :(

 

На 8.4 у меня штук 8 мостов шейпят народ, просто захотел проверить что изменилось за лет 6

 

 

Вот с моста на 8.4, через который шейпятся порядка 7 гиг трафика

sysctl net.inet.ip.forwarding
net.inet.ip.forwarding: 0

Share this post


Link to post
Share on other sites

2 минуты назад, jffulcrum сказал:

Блджад, с чего у вас вообще что-то будет работать? gateway_enable="YES"  в rc.conf и ребут

Не мешайте ему жить в древнем мире.

Share this post


Link to post
Share on other sites

сделал 
sysctl net.inet.ip.forwarding=1
net.inet.ip.forwarding: 0 -> 1

 

все также, трафик бесследно пропадает в dummynet :(

 

00100  1637  137508 pipe 100 ip from any to 10.10.10.0/24 out via ix0
00110     0       0 allow ip from any to 10.10.10.0/24 out via ix0
 

 

 

древний - не древний, а работает. Получить бы и здесь рабочий результат.  

Я готов дать удаленный доступ умельцам - ради бога, покажите класс 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.