เจเจฐเจจเจฒ เจชเฉฑเจงเจฐ เจธเจฟเจฐเจซเจผ เจเฉฑเจ เจเจฎ เจชเฉเจฐเฉเจเฉเจเฉเจฒ-เจธเฉเจคเฉฐเจคเจฐ เจเฉฐเจเจฐเจซเฉเจธ เจชเฉเจฐเจฆเจพเจจ เจเจฐเจฆเจพ เจนเฉ เจเฉ เจชเฉเจเฉเจเจพเจ เจคเฉเจ เจกเฉเจเจพ เจเฉฑเจขเจฃ, เจกเฉเจเจพ เจเจชเจฐเฉเจธเจผเจจ เจเจฐเจจ, เจ เจคเฉ เจชเฉเจฐเจตเจพเจน เจจเจฟเจฏเฉฐเจคเจฐเจฃ เจฒเจ เจฌเฉเจจเจฟเจเจฆเฉ เจซเฉฐเจเจธเจผเจจ เจชเฉเจฐเจฆเจพเจจ เจเจฐเจฆเจพ เจนเฉเฅค เจซเจฟเจฒเจเจฐเจฟเฉฐเจ เจจเจฟเจฏเจฎ เจ เจคเฉ เจชเฉเจฐเฉเจเฉเจเฉเจฒ-เจตเจฟเจธเจผเฉเจธเจผ เจนเฉเจเจกเจฒเจฐ เจฏเฉเจเจผเจฐ เจธเจชเฉเจธ เจตเจฟเฉฑเจ เจฌเจพเจเจเจเฉเจก เจตเจฟเฉฑเจ เจเฉฐเจชเจพเจเจฒ เจเฉเจคเฉ เจเจพเจเจฆเฉ เจนเจจ, เจเจฟเจธ เจคเฉเจ เจฌเจพเจ เจฆ เจเจธ เจฌเจพเจเจเจเฉเจก เจจเฉเฉฐ เจจเฉเฉฑเจเจฒเจฟเฉฐเจ เจเฉฐเจเจฐเจซเฉเจธ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจเจฐเจจเจฒ เจตเจฟเฉฑเจ เจฒเฉเจก เจเฉเจคเจพ เจเจพเจเจฆเจพ เจนเฉ เจ เจคเฉ BPF (เจฌเจฐเจเจฒเฉ เจชเฉเจเฉเจ เจซเจฟเจฒเจเจฐ) เจฆเฉ เจฏเจพเจฆ เจฆเจฟเจตเจพเจเจเจฆเฉ เจเฉฑเจ เจตเจฟเจธเจผเฉเจธเจผ เจตเจฐเจเฉเจ เจฒ เจฎเจธเจผเฉเจจ เจตเจฟเฉฑเจ เจเจฐเจจเจฒ เจตเจฟเฉฑเจ เจเจฒเจพเจเจ เจเจพเจเจฆเจพ เจนเฉเฅค เจเจน เจชเจนเฉเฉฐเจ เจคเฉเจนเจพเจจเฉเฉฐ เจเจฐเจจเจฒ เจชเฉฑเจงเจฐ 'เจคเฉ เจเฉฑเจฒ เจฐเจนเฉ เจซเจฟเจฒเจเจฐเจฟเฉฐเจ เจเฉเจก เจฆเฉ เจเจเจพเจฐ เจจเฉเฉฐ เจฎเจนเฉฑเจคเจตเจชเฉเจฐเจจ เจคเฉเจฐ 'เจคเฉ เจเจเจพเจเจฃ เจ เจคเฉ เจชเฉเจฐเฉเจเฉเจเฉเจฒ เจจเจพเจฒ เจเฉฐเจฎ เจเจฐเจจ เจฒเจ เจชเจพเจฐเจธเจฟเฉฐเจ เจจเจฟเจฏเจฎเจพเจ เจ เจคเฉ เจคเจฐเจ เจฆเฉ เจธเจพเจฐเฉ เจซเฉฐเจเจธเจผเจจเจพเจ เจจเฉเฉฐ เจเจชเจญเฉเจเจคเจพ เจธเจชเฉเจธ เจตเจฟเฉฑเจ เจฒเจฟเจเจพเจฃ เจฆเฉ เจเจเจฟเจ เจฆเจฟเฉฐเจฆเฉ เจนเฉเฅค
เจฎเฉเฉฑเจ เจจเจตเฉเจจเจคเจพเจตเจพเจ:
- ะ ะฝะฐะฑะพัั ะดะพะฑะฐะฒะปะตะฝะฐ ะฟะพะดะดะตัะถะบะฐ ัััััะธะบะพะฒ ะฟะฐะบะตัะพะฒ ะธ ััะฐัะธะบะฐ, ะฟัะธะฒัะทะฐะฝะฝัั
ะบ ัะปะตะผะตะฝัะฐะผ ะฝะฐะฑะพัะฐ. ะกััััะธะบะธ ะฒะบะปััะฐัััั ะฟัะธ ะฟะพะผะพัะธ ะบะปััะตะฒะพะณะพ ัะปะพะฒะฐ ยซcounterยป:
เจธเจพเจฐเจฃเฉ ip x {
set y {
เจเจเจชเฉ เจธเจฆเจฐ เจฆเฉ เจเจฟเจธเจฎ
เจตเจฟเจฐเฉเจงเฉ
เจคเฉฑเจค = {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 {
เจเจเจชเฉ เจธเจฆเจฐ เจฆเฉ เจเจฟเจธเจฎ
เจตเจฟเจฐเฉเจงเฉ
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 {
เจเจเจชเฉ เจธเจฆเจฐ เจฆเฉ เจเจฟเจธเจฎ
เจตเจฟเจฐเฉเจงเฉ
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 }
}เจเฉเจจ เจฌเจพเจฐ {
เจเจพเจเจช เจซเจฟเจฒเจเจฐ เจนเฉเฉฑเจ เจชเฉเจฐเฉเจฐเฉเจเจฟเฉฐเจ เจคเจฐเจเฉเจน เจซเจฟเจฒเจเจฐ; เจจเฉเจคเฉ เจเจเจฃเจพ;
ip daddr . tcp dport @whitelist accept
}
} - ะะธัะตะบัะธะฒะฐ typeof ัะตะฟะตัั ัะฐะบะถะต ะฟัะธะผะตะฝะธะผะฐ ะดะปั ะฟัะธัะพะตะดะธะฝะตะฝะธะน ะฒ map-ัะฟะธัะบะฐั
:
เจธเจพเจฐเจฃเฉ ip foo {
เจจเจเจธเจผเจพ addr2mark {
typeof ip saddr . tcp dport : meta mark
elements = { 192.168.10.35 . 80 : 0x00000001,
192.168.10.135 . 80 : 0x00000002 }
}เจเฉเจจ เจฌเจพเจฐ {
เจเจพเจเจช เจซเจฟเจฒเจเจฐ เจนเฉเฉฑเจ เจชเฉเจฐเฉเจฐเฉเจเจฟเฉฐเจ เจคเจฐเจเฉเจน เจซเจฟเจฒเจเจฐ; เจจเฉเจคเฉ เจเจเจฃเจพ;
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