FreeBSD+mpd+ospfd pptp over pppoe куда делся мультикаст?

Настройка сетевых служб, маршрутизации, фаерволлов. Проблемы с сетевым оборудованием.
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
sudosu
мл. сержант
Сообщения: 81
Зарегистрирован: 2008-05-27 12:17:32
Откуда: Что такое петровско-разумовская?

FreeBSD+mpd+ospfd pptp over pppoe куда делся мультикаст?

Непрочитанное сообщение sudosu » 2009-01-14 14:21:26

Всем доброго времени суток, набрел на очень интересный факт.

Есть сервер pptp на FreeBSD поднят на интерфейсе IEEE 802.1Q. На клиенте (FreeBSD) pptp поднят с pppoe-шного интерфейса, другого способа кроме как через pppoe клиенту в интернет попасть не светит. Выглядит это на сервере:

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

grape# ifconfig ng0
ng0: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> mtu 1430
	inet 10.255.100.1 --> 10.255.100.53 netmask 0xffffffff 
grape#
на клиенте:

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

tim# ifconfig ng1
ng1: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> metric 0 mtu 1430
	inet 10.255.100.53 --> 10.255.100.1 netmask 0xffffffff 
tim #
про МТУ - взят экспериментальным образом, оверхеды не считал, но больше не получается.
между этими машинами в этом тоннеле я пытаюсь поднять ospf в итоге имею на сервере mpd:

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

ospfd.grape.tech# sh ip ospf neighbor ng0 de
ospfd.grape.tech# sh ip ospf neighbor ng0 detail 
 Neighbor 192.168.0.1, interface address 10.255.100.53
    In the area 0.0.0.0 via interface ng0
    Neighbor priority is 1, State is Init, 1 state changes
    Most recent state change statistics:
      Progressive change 19.173s ago
    DR is 0.0.0.0, BDR is 0.0.0.0
    Options 0 *|-|-|-|-|-|-|*
    Dead timer due in 30.826s
    Database Summary List 0
    Link State Request List 0
    Link State Retransmission List 0
    Thread Inactivity Timer on
    Thread Database Description Retransmision off
    Thread Link State Request Retransmission off
    Thread Link State Update Retransmission off
ospfd.grape.tech#
на клиенте:

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

tim.ospfd# sh ip ospf neighbor ng0 detail 
tim.ospfd#
Ага, что-то не встает у нас оспф, путем просмотра дебагов было осознано, что от сервера (grape) к клиенту (tim) не прилетают оспф-ные hello, что тут же подтвердилось - на грейпе:

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

grape# tcpdump -l -n -i vlan17 proto 47 > ~sudosu/dump.txt & tail -f ~sudosu/dump.txt | grep "OSPF"
[6] 18406
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on vlan17, link-type EN10MB (Ethernet), capture size 96 bytes
14:00:28.517382 IP 111.222.131.170.111 > 333.444.224.107: GREv1, call 41089, seq 1164, length 77: IP 10.255.100.53 > 224.0.0.5: OSPFv2, Hello, length: 44
14:00:28.554804 IP 333.444.224.107 > 111.222.170.111: GREv1, call 52839, seq 1168, length 81: IP 10.255.100.1 > 224.0.0.5: OSPFv2, Hello, length: 48
14:00:28.517382 IP 111.222.170.111 > 333.444.224.107: GREv1, call 41089, seq 1164, length 77: IP 10.255.100.53 > 224.0.0.5: OSPFv2, Hello, length: 44
14:00:28.554804 IP 333.444.224.107 > 111.222.170.111: GREv1, call 52839, seq 1168, length 81: IP 10.255.100.1 > 224.0.0.5: OSPFv2, Hello, length: 48
14:00:28.517382 IP 111.222.170.111 > 333.444.224.107: GREv1, call 41089, seq 1164, length 77: IP 10.255.100.53 > 224.0.0.5: OSPFv2, Hello, length: 44
14:00:28.554804 IP 333.444.224.107 > 111.222.170.111: GREv1, call 52839, seq 1168, length 81: IP 10.255.100.1 > 224.0.0.5: OSPFv2, Hello, length: 48
^C
grape#
Видно прохождение оспф-ных хело пакетов в обе стороны.
на клиенте:

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

tim# tcpdump -l -n -i ng0 proto 47 > ~tim/dump.txt & tail -f ~tim/dump.txt | grep "OSPF"
[1] 20028
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ng0, link-type NULL (BSD loopback), capture size 96 bytes
14:05:12.928601 IP 111.222.170.111 > 333.444.224.107: GREv1, call 41089, seq 1171, length 77: IP 10.255.100.53 > 224.0.0.5: OSPFv2, Hello, length: 44
14:05:12.928601 IP 111.222.170.111 > 333.444.224.107: GREv1, call 41089, seq 1171, length 77: IP 10.255.100.53 > 224.0.0.5: OSPFv2, Hello, length: 44
14:05:22.930528 IP 111.222.170.111 > 333.444.224.107: GREv1, call 41089, seq 1173, length 77: IP 10.255.100.53 > 224.0.0.5: OSPFv2, Hello, length: 44
14:05:32.932452 IP 111.222.170.111 > 333.444.224.107: GREv1, call 41089, seq 1174, length 77: IP 10.255.100.53 > 224.0.0.5: OSPFv2, Hello, length: 44
^C
tim #
Куда делись мультикастные пакеты (?!!!)

с учетом того, что:

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

grape# pfctl -s rules | egrep -i "ng0|gre|224\.0\."
pass quick on ng0 all
pass quick proto gre all
grape#
------------------------
tim# pfctl -s rules | egrep -i "ng1|gre|224\.0\."
pass quick on ng1 all flags S/SA keep state
pass quick proto gre all keep state
tim#
Предупреждая вопросы, с какой-то версии фря стала сама ставить S/SA keep state, я тут не при чем.

Что это, магия?

ЗЫ: Любителям аля "покажи ВСЮ конфигу ВСЕГО" обязательно покажу, конфигу чего угодно, но сразу замечу, что popint-to-point у меня на интерфесах в ospfd есть, арии одинаковые, все нулевые, сети в network добавлены, ну и прочеее-прочее. Спрашивайте если что-то непонятно и в этом есть смысл, а то конфигов оооооочень много.

Хостинговая компания 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: FreeBSD+mpd+ospfd pptp over pppoe куда делся мультикаст?

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

я бы добавил в конфиг mpd
mtu 1462
tcpmssfix
если серверы в одной сети физически то proxy-arp

ps
по теме
http://www.opennet.ru/openforum/vsluhfo ... 60601.html

Аватара пользователя
sudosu
мл. сержант
Сообщения: 81
Зарегистрирован: 2008-05-27 12:17:32
Откуда: Что такое петровско-разумовская?

Re: FreeBSD+mpd+ospfd pptp over pppoe куда делся мультикаст?

Непрочитанное сообщение sudosu » 2009-01-14 15:04:46

2paradox:
там 1430 стоит, больше не поднимается, не знаю по какой причине.

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

Re: FreeBSD+mpd+ospfd pptp over pppoe куда делся мультикаст?

Непрочитанное сообщение paradox » 2009-01-14 15:08:49

хм
а как это проявлястья?(неподнимание) оно что то говорит?

Аватара пользователя
sudosu
мл. сержант
Сообщения: 81
Зарегистрирован: 2008-05-27 12:17:32
Откуда: Что такое петровско-разумовская?

Re: FreeBSD+mpd+ospfd pptp over pppoe куда делся мультикаст?

Непрочитанное сообщение sudosu » 2009-01-14 15:12:34

Ну, она забавно поступает, поднимает тонель, пишет на обоих концах на интерфейсах что MTU у него 1462 (например), но в реальной жизни, пакеты больше 1430 байт с выставленным df bit через этот тонель не проходят.

Аватара пользователя
sudosu
мл. сержант
Сообщения: 81
Зарегистрирован: 2008-05-27 12:17:32
Откуда: Что такое петровско-разумовская?

Re: FreeBSD+mpd+ospfd pptp over pppoe куда делся мультикаст?

Непрочитанное сообщение sudosu » 2009-01-14 15:26:28

по поводу http://www.opennet.ru/openforum/vsluhfo ... 60601.html - читал, там рекомендуют заюзать юникаст вместо мультикаста. Я выставил ip ospf network point-to-point на ptp-шных интерфейсах, при иэтом обмен hello пытается все= происходить посредством мультикаст. Как сказать ospfd "юзай юникаст мне в голову не приходит" :(

Аватара пользователя
sudosu
мл. сержант
Сообщения: 81
Зарегистрирован: 2008-05-27 12:17:32
Откуда: Что такое петровско-разумовская?

Re: FreeBSD+mpd+ospfd pptp over pppoe куда делся мультикаст?

Непрочитанное сообщение sudosu » 2009-01-15 10:09:12

кажется я понимаю куда подевался мультикаст. Если слушать tcpdump на физическом интерфейсе grape, то получаем вот такой фрейм:

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

Frame 302 (119 bytes on wire, 119 bytes captured)
    Arrival Time: Jan 14, 2009 16:39:55.565871000
    [Time delta from previous captured frame: 0.036779000 seconds]
    [Time delta from previous displayed frame: 0.036779000 seconds]
    [Time since reference or first frame: 6.944396000 seconds]
    Frame Number: 302
    Frame Length: 119 bytes
    Capture Length: 119 bytes
    [Frame is marked: False]
    [Protocols in frame: eth:vlan:ip:gre:ppp:ip:ospf]
Ethernet II, Src: 3com_2a:11:96 (00:01:03:2a:11:96), Dst: IPv4mcast_10:e0:69 (01:00:5e:10:e0:69)
    Destination: IPv4mcast_10:e0:69 (01:00:5e:10:e0:69)
        Address: IPv4mcast_10:e0:69 (01:00:5e:10:e0:69)
        .... ...1 .... .... .... .... = IG bit: Group address (multicast/broadcast)
        .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
    Source: 3com_2a:11:96 (00:01:03:2a:11:96)
        Address: 3com_2a:11:96 (00:01:03:2a:11:96)
        .... ...0 .... .... .... .... = IG bit: Individual address (unicast)
        .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
    Type: 802.1Q Virtual LAN (0x8100)
802.1Q Virtual LAN, PRI: 0, CFI: 0, ID: 17
    000. .... .... .... = Priority: 0
    ...0 .... .... .... = CFI: 0
    .... 0000 0001 0001 = ID: 17
    Type: IP (0x0800)
Internet Protocol, Src: 333.444.224.107 (333.444.224.107), Dst: 111.222.170.111 (111.222.170.111)
    Version: 4
    Header length: 20 bytes
    Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00)
        0000 00.. = Differentiated Services Codepoint: Default (0x00)
        .... ..0. = ECN-Capable Transport (ECT): 0
        .... ...0 = ECN-CE: 0
    Total Length: 101
    Identification: 0xe63f (58943)
    Flags: 0x00
        0... = Reserved bit: Not set
        .0.. = Don't fragment: Not set
        ..0. = More fragments: Not set
    Fragment offset: 0
    Time to live: 64
    Protocol: GRE (0x2f)
    Header checksum: 0x823b [correct]
        [Good: True]
        [Bad : False]
    Source: 333.444.224.107 (333.444.224.107)
    Destination: 111.222.170.111 (111.222.170.111)
Generic Routing Encapsulation (PPP)
    Flags and version: 0x3001
        0... .... .... .... = No checksum
        .0.. .... .... .... = No routing
        ..1. .... .... .... = Key
        ...1 .... .... .... = Sequence number
        .... 0... .... .... = No strict source route
        .... .000 .... .... = Recursion control: 0
        .... .... 0... .... = No acknowledgment number
        .... .... .000 0... = Flags: 0
        .... .... .... .001 = Version: 1
    Protocol Type: PPP (0x880b)
    Payload length: 69
    Call ID: 52839
    Sequence number: 3010
Point-to-Point Protocol
    Protocol: IP (0x0021)
Internet Protocol, Src: 10.255.100.1 (10.255.100.1), Dst: 224.0.0.5 (224.0.0.5)
    Version: 4
    Header length: 20 bytes
    Differentiated Services Field: 0xc0 (DSCP 0x30: Class Selector 6; ECN: 0x00)
        1100 00.. = Differentiated Services Codepoint: Class Selector 6 (0x30)
        .... ..0. = ECN-Capable Transport (ECT): 0
        .... ...0 = ECN-CE: 0
    Total Length: 68
    Identification: 0xe63e (58942)
    Flags: 0x00
        0... = Reserved bit: Not set
        .0.. = Don't fragment: Not set
        ..0. = More fragments: Not set
    Fragment offset: 0
    Time to live: 1
    Protocol: OSPF IGP (0x59)
    Header checksum: 0x835d [correct]
        [Good: True]
        [Bad : False]
    Source: 10.255.100.1 (10.255.100.1)
    Destination: 224.0.0.5 (224.0.0.5)
Open Shortest Path First
    OSPF Header
        OSPF Version: 2
        Message Type: Hello Packet (1)
        Packet Length: 48
        Source OSPF Router: 192.168.4.21 (192.168.4.21)
        Area ID: 0.0.0.0 (Backbone)
        Packet Checksum: 0x7634 [correct]
        Auth Type: Null
        Auth Data (none)
    OSPF Hello Packet
        Network Mask: 0.0.0.0
        Hello Interval: 10 seconds
        Options: 0x02 (E)
            0... .... = DN: DN-bit is NOT set
            .0.. .... = O: O-bit is NOT set
            ..0. .... = DC: Demand circuits are NOT supported
            ...0 .... = L: The packet does NOT contain LLS data block
            .... 0... = NP: Nssa is NOT supported
            .... .0.. = MC: NOT multicast capable
            .... ..1. = E: ExternalRoutingCapability
        Router Priority: 1
        Router Dead Interval: 40 seconds
        Designated Router: 0.0.0.0
        Backup Designated Router: 0.0.0.0
        Active Neighbor: 192.168.0.1
инкапсулируем в след порядке: ospf -> ip (до этого места стандартно, далее особенности среды передачи) -> ppp -> gre -> ip -> vlan -> eth но! почему с физического интерфейса xl0 пакет уходит на мультикастный mac 01:00:5e:10:e0:69, а не на мак маршрутизатора - 00:1c:58:79:17:cf, на котором grape терминируется?

Аватара пользователя
sudosu
мл. сержант
Сообщения: 81
Зарегистрирован: 2008-05-27 12:17:32
Откуда: Что такое петровско-разумовская?

Re: FreeBSD+mpd+ospfd pptp over pppoe куда делся мультикаст?

Непрочитанное сообщение sudosu » 2009-01-15 11:36:45

И все-таки это оверхед, спасибо Ване Бояринову.
заголовки получаются:
4 - vlan
20 - ip
24 - gre
6 - ppp
20 - ip
и того 74 байта
на линки проходит 1430 + 74 = 1504

Всем спасибо, все понятно =)

Аватара пользователя
sudosu
мл. сержант
Сообщения: 81
Зарегистрирован: 2008-05-27 12:17:32
Откуда: Что такое петровско-разумовская?

Re: FreeBSD+mpd+ospfd pptp over pppoe куда делся мультикаст?

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

Счастье мое было не долгим. Бо после первого перезапуска кваги OSPF снова развалился и как я не пытался уговорить фряху - пакеты все= летели на мультикастный броадкаст с физического интерфейса, что вкорне не верно. И впрямь, причем тут оверхед, пакеты hello маленькие совсем. Сжав кулаки проапдейтил 6.2 фрю до 7.0 и все начало летать правильно. После перезапусков кваги оспф поднимается, дисконнекты/реконнекты отрабатываются правильно.

В итоге выяснено что ospf у кваги через pptp интерфейс, поднятый с ppoe интерфейса работает.

Теперь точно все, топик можно закрыть :smile: