Site Tools


software:freebsd:igmpproxy_on_netgraph

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
software:freebsd:igmpproxy_on_netgraph [2015/05/15 15:19]
root
software:freebsd:igmpproxy_on_netgraph [2022/02/05 05:30] (current)
root
Line 1: Line 1:
-====== Замена igmpproxy на netgraph ======+====== igmpproxy replacement on netgraph ======
  
 Скрипт собирающий netgraph мост для мультикаст трафика (IGMP, UDP) между двумя сетевыми интерфейсами предназначен для замены igmpproxy/mrouted.\\ Скрипт собирающий netgraph мост для мультикаст трафика (IGMP, UDP) между двумя сетевыми интерфейсами предназначен для замены igmpproxy/mrouted.\\
Line 21: Line 21:
 ===== Принцип работы ===== ===== Принцип работы =====
 ==== netgraph ==== ==== netgraph ====
-Его можно сравнить с LUA: он даёт широкие возможности по манипуляции с сетевыми пакетами, относительно прост в использовании и максимально быстр тк всё происходит в ядре. +Его можно сравнить с LUA: он даёт широкие возможности по манипуляции с сетевыми пакетами, относительно прост в использовании и максимально быстр тк всё происходит в ядре.\\ 
-У меня было много разных вариантов но в конце мне удалось свести количество нод к двум: **ng_ether** и **ng_bpf**. +У меня было много разных вариантов но в конце мне удалось свести количество нод к двум: **ng_ether** и **ng_bpf**.\\ 
-**ng_ether** — имеет несколько хуков: __lower__ — это вход/выход сетевого адаптера, __upper__ — ввод/выход в сетевой стёк OS. +**ng_ether** — имеет несколько хуков: __lower__ — это вход/выход сетевого адаптера, __upper__ — ввод/выход в сетевой стёк OS.\\ 
-**ng_bpf** — программируемая нода, общий смысл программ: один вход и два выхода: пакет соответствует заданному условии и для пакетов которые не соответствуют. В ноде есть собственный ассемблер для матчинга пакетов. Но можно написать условия для tcpdump и получить код для **ng_bpf**. +**ng_bpf** — программируемая нода, общий смысл программ: один вход и два выхода: пакет соответствует заданному условии и для пакетов которые не соответствуют. В ноде есть собственный ассемблер для матчинга пакетов. Но можно написать условия для tcpdump и получить код для **ng_bpf**.\\ 
-Не большая хитрость ноды в том, что программа устанавливается на входную ноду. Но ноды которые указаны как выходные тоже могут принимать пакеты и обрабатывать они их будут по тем программам которые ассоциированы с ними.+Не большая хитрость ноды в том, что программа устанавливается на входную ноду. Но ноды которые указаны как выходные тоже могут принимать пакеты и обрабатывать они их будут по тем программам которые ассоциированы с ними.\\
  
 ==== Передача пакетов ==== ==== Передача пакетов ====
-{{:ru:software:freebsd:ng_bpf_bridge.png|}}\\+{{software:freebsd:ng_bpf_bridge.png|}}\\
 **BPF** настроен таким образом чтобы пропускать все без исключения пакеты с __upper__ хуков **ng_ether** нод на __lower__ хуки (пакеты от системы в сеть). Приходящие из сети пакеты с __lower__ хуков нод проверяются в **BPF**, и\\ **BPF** настроен таким образом чтобы пропускать все без исключения пакеты с __upper__ хуков **ng_ether** нод на __lower__ хуки (пакеты от системы в сеть). Приходящие из сети пакеты с __lower__ хуков нод проверяются в **BPF**, и\\
  - если это мультикаст;  - если это мультикаст;
Line 89: Line 89:
  
 ===== История ===== ===== История =====
-igmpproxy и mrouted у меня работать отказались: PF по умолчанию убивает все пакеты с IP опциями в заголовке (IGMP они нужны для работы) и поэтому добавлять специально правило:+igmpproxy и mrouted у меня работать отказались: PF по умолчанию убивает все пакеты с IP опциями в заголовке (IGMP они нужны для работы) и поэтому нужно добавлять правило:
 <code>pass quick proto igmp from any to 224.0.0.0/4 allow-opts</code> <code>pass quick proto igmp from any to 224.0.0.0/4 allow-opts</code>
 а я этого не сделал.\\ а я этого не сделал.\\
Line 114: Line 114:
 [[http://citrin.ru/freebsd:ng_ipfw_ng_bpf|Использование ng_ipfw + ng_bpf для фильтрации по телу пакета]]\\ [[http://citrin.ru/freebsd:ng_ipfw_ng_bpf|Использование ng_ipfw + ng_bpf для фильтрации по телу пакета]]\\
 [[http://nuclight.livejournal.com/122098.html?nojs=1|Программирование ng_bpf(4) и L7 filtering на FreeBSD]]\\ [[http://nuclight.livejournal.com/122098.html?nojs=1|Программирование ng_bpf(4) и L7 filtering на FreeBSD]]\\
 +
 +
 +
 +{{tag>software howto freebsd net netgraph IGMP mysoft}}
software/freebsd/igmpproxy_on_netgraph.1431703187.txt.gz · Last modified: 2015/05/15 15:19 by root