ááá áááá¡ áááá á£áá á£ááááá§áá€á¡ áá®áááá ááááá áá áá¢áááááá¡ááá ááááá£ááááááá ááá¢áá á€ááá¡á¡, á ááááá᪠á£áá á£ááááá§áá€á¡ á«áá áááá á€á£áá¥áªáááá¡ ááááá¢áááááá áááááªáááááá¡ áááá¡ááŠáááá, áááááªáááá áááá ááªááááá¡ ášáá¡áá¡á á£áááááá áá ááááááá¡ áááá¢á áááá¡áááá¡. á€ááá¢á ááªááá¡ á¬áá¡ááá áá áá áá¢áááááá¡ á¡áááªáá€ááá£á á ááááá£ášáááááááá ášááááááááá áááá®ááá ááááá¡ á¡ááá áªáášá áááá¢ááááášá, á áá¡ ášáááááá᪠áá¡ áááá¢á áá¢ááá áááá ááá ááášá Netlink ááá¢áá á€ááá¡áá¡ ááááá§áááááá áá ášáá¡á á£áááá£ááá ááá ááášá á¡áááªáááá£á ááá á¢á£ááá£á áááá¥áááášá, á ááááá᪠ááááááááááá¡ BPF-á¡ (Berkeley Packet Filters). áá¡ ááááááá á¡áášá£áááááá¡ ááá«áááá áááášááááááááá ášááááªáá áá ááá áááá¡ áááááá ááášáááá£áá á€ááá¢á ááªááá¡ ááááá¡ áááá áá áááááá¢áááá áá áá¢ááááááááá áá£ášááááá¡ á¬áá¡áááá¡á áá ááááááá¡ á§áááá á€á£áá¥áªáá áááá®ááá ááááá¡ á¡ááá áªáášá.
á«áá ááááá ááááááªáááá:
- РМабПÑÑ ÐŽÐŸÐ±Ð°Ð²Ð»ÐµÐœÐ° пПЎЎеÑжка ÑÑÑÑÑОкПв пакеÑПв О ÑÑаÑОка, пÑОвÑзаММÑÑ
к ÑлеЌеМÑаЌ МабПÑа. СÑÑÑÑОкО вклÑÑаÑÑÑÑ Ð¿ÑО пПЌПÑО клÑÑевПгП ÑлПва «counter»:
áªá®á ááá ip x {
set y {
IP á¢áááá¡ Saddr
á¬áááááŠááááááá
ááááááá¢ááá = {192.168.10.35, 192.168.10.101, 192.168.10.135 }
}á¯áááá z {
type filter hook output priority filter; policy accept;
ip daddr @y
}
} - ÐÐ»Ñ ÑÑÑаМПвкО МаÑалÑÐœÑÑ
зМаÑеМОй ÑÑÑÑÑОкПв, МапÑОЌеÑ, ÐŽÐ»Ñ Ð²ÐŸÑÑÑÐ°ÐœÐŸÐ²Ð»ÐµÐœÐžÑ Ð¿ÑПÑлÑÑ
ÑÑÑÑÑОкПв пПÑле пеÑезапÑÑка, МабПÑа ЌПжМП ОÑпПлÑзПваÑÑ ÐºÐŸÐŒÐ°ÐœÐŽÑ Â«nft -f»:
# cat ruleset.nft
áªá®á ááá ip x {
set y {
IP á¢áááá¡ Saddr
á¬áááááŠááááááá
elements = { 192.168.10.35 counter packets 1 bytes 84, 192.168.10.101 \
counter p 192.168.10.135 counter packets 0 bytes 0 }
}á¯áááá z {
type filter hook output priority filter; policy accept;
ip daddr @y
}
}
# nft -f ruleset.nft
# nft list ruleset
áªá®á ááá ip x {
set y {
IP á¢áááá¡ Saddr
á¬áááááŠááááááá
elements = { 192.168.10.35 counter packets 1 bytes 84, 192.168.10.101 \
counter p 192.168.10.135 counter packets 0 bytes 0 }
}á¯áááá z {
type filter hook output priority filter; policy accept;
ip daddr @y
}
} - ÐПЎЎеÑжка ÑÑÑÑÑОкПв Ñакже ЎПбавлеМа вП flowtable:
áááááá ip foo {
flowtable bar {
hook ingress priority -100
devices = { eth0, eth1 }
á¬áááááŠááááááá
}á¯áááá á¬áá {
type filter hook forward priority filter;
flow add @bar counter
}
}ÐПÑЌПÑÑеÑÑ ÑпОÑПк ÑÑÑÑÑОкПв ЌПжМП кПЌаМЎМПй «conntrack -L»:
tcp 6 src=192.168.10.2 dst=10.0.1.2 sport=47278 dport=5201 packets=9 bytes=608 \
src=10.0.1.2 dst=10.0.1.1 sport=5201 dport=47278 packets=8 bytes=428 [OFFLOAD] mark=0 \
secctx=null use=2 tcp 6 src=192.168.10.2 dst=10.0.1.2 sport=47280 dport=5201 \
packets=1005763 bytes=44075714753 src=10.0.1.2 dst=10.0.1.1 sport=5201 dport=47280 \
packets=967505 bytes=50310268 [OFFLOAD] mark=0 secctx=null use=2 - РМабПÑаÑ
ÐŽÐ»Ñ Ð¿ÑОÑПеЎОМеМОй (concatenation, ПпÑеЎелÑММÑе ÑвÑзкО аЎÑеÑПв О пПÑÑПв, ÑпÑПÑаÑÑОе ÑПпПÑÑавлеМОе) ПбеÑпеÑеМа вПзЌПжМПÑÑÑ ÐžÑпПлÑÐ·ÐŸÐ²Ð°ÐœÐžÑ ÐŽÐžÑекÑÐžÐ²Ñ Â«typeof», ПпÑеЎелÑÑÑей ÑОп ЎаММÑÑ
ÑлеЌеМÑПв ÐŽÐ»Ñ ÑПÑÑавМÑÑ
ÑаÑÑей ÑлеЌеМÑПв МабПÑа:
áááááá ip foo {
áááá á á¡ááá¡ ááá§ááááá {
typeof ip saddr . tcp dport
elements = { 192.168.10.35 . 80, 192.168.10.101 . 80 }
}á¯ááááá¡ áááá {
á¢áááá¡ filter hook prerouting áá ááá áá¢áá¢á£áá á€ááá¢á á; ááááá¢áááá¡ ááá ááá;
ip daddr . tcp dport @whitelist accept
}
} - ÐОÑекÑОва typeof ÑепеÑÑ Ñакже пÑОЌеМОЌа ÐŽÐ»Ñ Ð¿ÑОÑПеЎОМеМОй в map-ÑпОÑкаÑ
:
áááááá ip foo {
á á£áá adr2mark {
typeof ip saddr . tcp dport : meta mark
elements = { 192.168.10.35 . 80 : 0x00000001,
192.168.10.135 . 80 : 0x00000002 }
}á¯ááááá¡ áááá {
á¢áááá¡ filter hook prerouting áá ááá áá¢áá¢á£áá á€ááá¢á á; ááááá¢áááá¡ ááá ááá;
meta mark set ip daddr . tcp dport map @addr2mark accept
}
} - ÐПбавлеМа пПЎЎеÑжка пÑОÑПеЎОМеМОй Ñ ÐŽÐžÐ°Ð¿Ð°Ð·ÐŸÐœÐ°ÐŒÐž в аМПМОЌМÑÑ
(МеОЌеМПваММÑÑ
) МабПÑаÑ
:
# nft add rule inet filter input ip daddr . tcp dport \
{ 10.0.0.0/8 . 10-23, 192.168.1.1-192.168.3.8 . 80-443 } accept - ÐÑеЎПÑÑавлеМа вПзЌПжМПÑÑÑ ÐŸÑбÑаÑÑÐ²Ð°ÐœÐžÑ Ð¿Ð°ÐºÐµÑПв Ñ ÑлагаЌО 802.1q (VLAN) пÑО ПбÑабПÑке ÑеÑевÑÑ
ЌПÑÑПв:
# nft add rule bridge foo bar ether type vlan reject with tcp reset
- ÐПбавлеМа пПЎЎеÑжка ÑПпПÑÑÐ°Ð²Ð»ÐµÐœÐžÑ Ð¿ÐŸ ОЎеМÑОÑОкаÑПÑÑ TCP-ÑеаМÑа (conntrack ID). ÐÐ»Ñ ÐŸÐ¿ÑÐµÐŽÐµÐ»ÐµÐœÐžÑ conntrack ID ЌПжМП ОÑпПлÑзПваÑÑ ÐŸÐ¿ÑÐžÑ Â«âoutput id»:
# conntrack -L âoutput id
udp 17 18 src=192.168.2.118 dst=192.168.2.1 sport=36424 dport=53 packets=2 \
bytes=122 src=192.168.2.1 dst=192.168.2.118 sport=53 dport=36424 packets=2 bytes=320 \
[ASSURED] mark=0 use=1 id=2779986232# nft add rule foo bar ct id 2779986232 counter
á¬á§áá á: opennet.ru