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

Покажите вывод во FreeBSD 12:
 

uname -a
sysctl -a net.inet.ip.fw.
ipfw list

 

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 совершенно не интересует. В ней баги никто править не будет.

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 от середины апреля и будем дебажить.
 

Share this post


Link to post
Share on other sites

мин через 20 встанет

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

Еще раз, покажите вывод
 

Цитата

uname -a

А потом
 

ifconfig
ifconfig -l

 

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

что говорит tcpdump ?

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

Где в инициализации pipe или queue присутствует src-ip или dst-ip ?

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

@Azamat 

Из разряда проверки на идиотизм ситуации (было похожее):

 

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

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

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

 

Share this post


Link to post
Share on other sites
2 часа назад, Azamat сказал:

cloned_interfaces="bridge0"

Замените просто на 

 

ifconfig bridge0 create

Share this post


Link to post
Share on other sites
1 минуту назад, Azamat сказал:

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

 

как раз нет.

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now