ααααα·αααΊααααααααααα ααα»α αααααΆααα―αααΆααααααα·ααΈααΆαααΌαα αααααααααα»αααΆαααΆααΌαααααΆααααααΆααααΆαααΆααααα·ααααααααΈαααα ααααααααΆα ααααα·ααααα·ααΆααα·αααααα αα·αααΆααααααααααααα αΌαα αααααα·ααααΆαααααααα½αααΆααααΆαα αα·αα’ααααααααααΆααα·ααΈααΆαααΆααααΆααααααΌαααΆαα αααααααΆ bytecode αααα»αα αααααα’αααααααΎααααΆαα αααααΆαααα bytecode αααααααΌαααΆααααα»ααα αααα»αααΊααααααααααΎα ααα»α αααααΆαα Netlink αα·αααααα·ααααα·αααα»ααααΆαααΈααα·αααα·ααα·ααααααααΉαααΎαααα BPF (Berkeley Packet Filters)α αα·ααΈααΆααααααααα’αα»ααααΆαα±ααα’αααααΆααααααααααΆαααααΆααααΌαααα αααααΌαααααααααααα»αααααΎαααΆααα ααααα·αααΊααα α αΎαααααΆααααΈαα»αααΆαααΆααα’ααααα αααΆααααα αα·ααααααα·ααααΆαααααΆααααααΎααΆαααΆαα½ααα·ααΈααΆααα αααα»αααα αα’αααααααΎααααΆααα
ααΆαα αααααααα·αααααΆαααα
- ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. ΠΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΊΠ°ΠΊ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈ Π΄Π°Ρ, Π² ΠΊΠΎΡΠΎΡΡΡ
Π±ΡΠ΄Π΅Ρ ΡΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΡΠ°ΠΊ ΠΈ Π½Π°ΡΡΡΠΎΠΈΡΡ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π½ΠΈΠ΅ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ Π΄Π½ΠΈ Π½Π΅Π΄Π΅Π»ΠΈ. Π’Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π½ΠΎΠ²Π°Ρ ΠΎΠΏΡΠΈΡ Β«-TΒ» Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΡΠΏΠΎΡ
Π°Π»ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π² ΡΠ΅ΠΊΡΠ½Π΄Π°Ρ
.
meta time \Β»2019-12-24 16:00\Β» β \Β»2020-01-02 7:00\Β»
meta hour \Β»17:00\Β» β \Β»19:00\Β»
meta day \Β»Fri\Β» - ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΈ ΡΠΎΡ
ΡΠ°Π½Π΅Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠΊ SELinux (secmark).
ct secmark set meta secmark
meta secmark set ct secmark - ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° map-ΡΠΏΠΈΡΠΊΠΎΠ² synproxy, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΡ
ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΠ°Π²ΠΈΠ»Π° Π½Π° Π±ΡΠΊΠ΅Π½Π΄.
ααΆααΆα ip foo {
synproxy https-synproxy {
mss 1460
wscale 7
timestamp sack-perm
}synproxy other-synproxy {
mss 1460
wscale 5
}chain pre {
αααααα ααααα ααααα ααΆαααΆα α’αΆαα·ααΆα αα ; ααααααααΆαααα½ααα;
tcp dport 8888 tcp flags syn notrack
}αααΆααααααααααΆαα {
ααααααααααα αααααα’αΆαα·ααΆα ααααααα αα»α; ααααααααΆαααα½ααα;
ct state invalid,untracked synproxy name ip saddr map { 192.168.1.0/24 : Β«https-synproxyΒ», 192.168.2.0/24 : Β«other-synproxyΒ» }
}
} - ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² set-Π½Π°Π±ΠΎΡΠΎΠ² ΠΈΠ· ΠΏΡΠ°Π²ΠΈΠ» ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ².
nft add rule β¦ delete @set5 { ip6 saddr . ip6 daddr }
- ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ VLAN ΠΏΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ ΠΈ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Ρ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΡ
Π² ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ
ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΡΠ΅ΡΠ΅Π²ΠΎΠ³ΠΎ ΠΌΠΎΡΡΠ°;
meta ibrpvid 100
meta ibrvproto vlan - ΠΠΏΡΠΈΡ Β«-tΒ» (Β«βterseΒ») Π΄Π»Ρ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² set-Π½Π°Π±ΠΎΡΠΎΠ² ΠΏΡΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ ΠΏΡΠ°Π²ΠΈΠ». ΠΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Β«nft -t list rulesetΒ» Π±ΡΠ΄Π΅Ρ Π²ΡΠ²Π΅Π΄Π΅Π½ΠΎ:
ααΆααΆα ip x {
ααααα y {
type ipv4_addr
}
}Π ΠΏΡΠΈ Β«nft list rulesetΒ»
ααΆααΆα ip x {
ααααα y {
type ipv4_addr
elements = { 192.168.10.2, 192.168.20.1,
192.168.4.4, 192.168.2.34 }
}
} - ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΊΠ°Π·Π°Π½ΠΈΡ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²Π° Π² ΡΠ΅ΠΏΠΎΡΠΊΠ°Ρ
netdev (ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΡΠ΄ΡΠΎΠΌ 5.5) Π΄Π»Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΡΠΈΠΏΠΎΠ²ΡΡ
ΠΏΡΠ°Π²ΠΈΠ» ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ.
add table netdev x
add chain netdev x y { \
type filter hook ingress devices = { eth0, eth1 } priority 0;
} - ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΉ ΡΠΈΠΏΠΎΠ² Π΄Π°Π½Π½ΡΡ
.
# nft describe ipv4_addr
datatype ipv4_addr (IPv4 address) (basetype integer), 32 bits - ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ±ΠΎΡΠΊΠΈ CLI-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ linenoise Π²ΠΌΠ΅ΡΡΠΎ libreadline.
./configure βwith-cli=linenoise
ααααα: opennet.ru