L2fw

Материал из OpenWiki
Перейти к: навигация, поиск

l2fw - пакетный файрвол для работы на уровне L2

l2fw - это то, чем я планирую заняться в ближайшее время.

l2fw по своей структуре будет напоминать FreeBSD ipfw, но первоначально планируется реализация фильтрации для L2. Пакетный фильтр будет подключать хуки к pfil(9) с типом AF_LINK. Для этого планируется поменять логику, которая используется сейчас для фильтрации L2.

SYNOPSIS

l2fw chain N create [description]
l2fw chain {list | show}
l2fw [chain N] add rule
l2fw [chain N] [set set_number] {list | show} [rule_number[ :seq_number] | first-last ...]
l2fw [chain N] [set set_number] flush
l2fw [chain N] {delete | zero | enable | disable | log | nolog} [rule_number[ :seq_number] | first-last ...]
l2fw [chain N] set move {rule [rule_number[ :seq_number]] | set_number} to set_number
l2fw set [disable N ...] [enable N ...]

RULE FORMAT

 [rule_number[ :seq_number]] [set set_number] [prob match_probability]
   action [modifier] body

RULE ACTIONS

  • allow | accept | pass | permit
  • count
  • deny | drop
  • skipto
  • ngtee | netgraph
  • call

RULE MODIFIER

  • tag | untag
  • altq ?

RULE BODY

 [from src to dst] [options]

RULE OPTIONS (MATCH PATTERNS)

  • // comment
  • tagged
  • bridged
  • in | out
  • len
  • mac-type
  • recv | xmit | via {ifX | if* | any}

LOOKUP TABLES

  • MAC-lists:
 table N add mac-addr[/{masklen | mask}] [value]
  • MAC-IPv4 pairs:
 table N add mac-addr[/{masklen | mask}] {ip4 | ip | ipv4} IPv4-addr[/{masklen | mask}] [value]
  • MAC-IPv6 pairs:
 table N add mac-addr[/{masklen | mask}] {ip6 | ipv6} IPv6-addr[/{masklen | mask}] [value]