Hāʻawi ka pae kernel i kahi kikowaena kūʻokoʻa protocol generic e hāʻawi i nā hana maʻamau no ka unuhi ʻana i ka ʻikepili mai nā ʻeke, ka hana ʻana i nā hana ʻikepili, a me ka mana kahe. Hoʻohui ʻia nā lula kānana a me nā mea hoʻohana kikoʻī protocol i ka bytecode ma kahi o ka mea hoʻohana, ma hope o ka hoʻouka ʻia ʻana o kēia bytecode i loko o ka kernel me ka hoʻohana ʻana i ka interface Netlink a hoʻokō ʻia i loko o ka kernel i kahi mīkini virtual kūikawā e hoʻomanaʻo ana i ka BPF (Berkeley Packet Filters). ʻO kēia ala e hiki ai iā ʻoe ke hōʻemi nui i ka nui o ke code kānana e holo ana ma ka pae kernel a hoʻoneʻe i nā hana āpau o nā lula parsing a me nā loiloi no ka hana ʻana me nā protocols i loko o kahi mea hoʻohana.
Nā hana hou nui:
- Ua hoʻohui ʻia ke kākoʻo no ka pūke a me nā helu kalepa e pili ana i nā mea i hoʻonohonoho ʻia i nā pūʻulu. Hoʻohana ʻia nā helu helu me ka huaʻōlelo "counter":
papa ip x {
hoʻonoho y {
typeof ip saddr
loan
ʻeleʻele = {192.168.10.35, 192.168.10.101, 192.168.10.135 }
}kaulahao z {
ʻano kānana hook hoʻopuka kānana manaʻo; ʻae i nā kulekele;
ip papa @y
}
} - No ka hoʻonohonoho ʻana i nā helu helu mua, no ka laʻana, e hoʻihoʻi i nā helu helu mua ma hope o ka hoʻomaka hou ʻana, hiki iā ʻoe ke hoʻohana i ke kauoha "nft -f":
# cat rulesset.nft
papa ip x {
hoʻonoho y {
typeof ip saddr
loan
ʻeleʻele = {192.168.10.35 pūʻolo hoʻohālikelike 1 paita 84, 192.168.10.101 \
counter p 192.168.10.135 mau pakeke 0 byte 0 }
}kaulahao z {
ʻano kānana hook hoʻopuka kānana manaʻo; ʻae i nā kulekele;
ip papa @y
}
}
# nft -f ruleset.nft
#nft papa helu lula
papa ip x {
hoʻonoho y {
typeof ip saddr
loan
ʻeleʻele = {192.168.10.35 pūʻolo hoʻohālikelike 1 paita 84, 192.168.10.101 \
counter p 192.168.10.135 mau pakeke 0 byte 0 }
}kaulahao z {
ʻano kānana hook hoʻopuka kānana manaʻo; ʻae i nā kulekele;
ip papa @y
}
} - Ua hoʻohui pū ʻia ke kākoʻo counter i ka flowtable:
papa ip foo {
pahu kahe {
ka mea nui e komo ai ka makau -100
nā mea hana = { eth0, eth1 }
loan
}kaulahao i mua {
ʻano kānana hook i mua kānana kānana;
kahe e hoʻohui @bar counter
}
}Hiki iā ʻoe ke nānā i ka papa inoa o nā helu helu me ke kauoha "conntrack -L":
tcp 6 src=192.168.10.2 dst=10.0.1.2 sport=47278 dport=5201 packet=9 bytes=608 \
src=10.0.1.2 dst=10.0.1.1 haʻuki=5201 dport=47278 pūke=8 bytes=428 [OFFLOAD] mark=0 \
secctx=null hoʻohana=2 tcp 6 src=192.168.10.2 dst=10.0.1.2 sport=47280 dport=5201 \
pūʻolo=1005763 bytes=44075714753 src=10.0.1.2 dst=10.0.1.1 haʻuki=5201 dport=47280 \
packets=967505 bytes=50310268 [OFFLOAD] mark=0 secctx=null hoʻohana=2 - I nā pūʻulu no ka concatenation (concatenation, kekahi mau pūʻulu o nā helu a me nā awa e hoʻohālikelike i ka hoʻohālikelike), hiki ke hoʻohana i ke kuhikuhi "typeof", e hoʻoholo ana i ke ʻano ʻikepili o nā mea no nā ʻāpana constituent o nā mea o ka set:
papa ip foo {
hoʻonohonoho i ka papa inoa keʻokeʻo {
typeof ip saddr . tcp dport
mau mea = { 192.168.10.35 . 80, 192.168.10.101. 80}
}kaulahao kaula {
ʻano kānana hook prerouting priority kānana; hāʻule kulekele;
ip papa. tcp dport @whitelist e ʻae
}
} - Ua pili pū ke ʻano kuhikuhi i nā hui ʻana i nā papa inoa palapala:
papa ip foo {
palapala 'āina addr2mark {
typeof ip saddr . tcp dport: hōʻailona meta
ʻeleʻele = {192.168.10.35. 80 : 0x00000001,
192.168.10.135. 80 : 0x00000002 }
}kaulahao kaula {
ʻano kānana hook prerouting priority kānana; hāʻule kulekele;
hoʻonohonoho ʻia ka māka meta ip dadr . tcp dport palapala ʻāina @addr2mark e ʻae
}
} - Kākoʻo hoʻohui ʻia no ka hui pū ʻana i nā pūʻulu inoa ʻole (inoa ʻole):
# nft hoʻohui i ka lula inet kānana hoʻokomo ip daddr. tcp dport\
{ 10.0.0.0/8 . 10-23, 192.168.1.1-192.168.3.8. 80-443 } ae aku - ʻO ka hiki ke hoʻolei i nā ʻeke me nā hae 802.1q (VLAN) ke hāʻawi ʻia nā alahaka pūnaewele:
# nft hoʻohui i ka lula alahaka foo bar ether type vlan reject me tcp reset
- Hoʻohui ʻia ke kākoʻo no ka hoʻohālikelike ʻana e ka TCP session identifier (conntrack ID). No ka hoʻoholo ʻana i ka conntrack ID, hiki iā ʻoe ke hoʻohana i ke koho "--output id":
# conntrack -L —output id
udp 17 18 src=192.168.2.118 dst=192.168.2.1 haʻuki=36424 dport=53 pūʻolo=2 \
bytes=122 src=192.168.2.1 dst=192.168.2.118 sport=53 dport=36424 packets=2 bytes=320 \
[ASSURED] kaha=0 hoʻohana=1 id=2779986232# nft hoʻohui i ka lula foo bar ct id 2779986232 counter
Source: opennet.ru