เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เป„เบง เปเบฅเบฐ NAT เปƒเบ™ Linux

เบเป‰เบญเบ™เบงเปˆเบฒเบ—เบตเปˆเบขเบนเปˆ IPv4 เบเบฒเบเป€เบ›เบฑเบ™เบเบฒเบ™เป€เบชเบทเปˆเบญเบกเป‚เบŠเบก, เบœเบนเป‰เบ›เบฐเบเบญเบšเบเบฒเบ™เป‚เบ—เบฅเบฐเบ„เบปเบกเบˆเปเบฒเบ™เบงเบ™เบซเบผเบฒเบเบเปเบฒเบฅเบฑเบ‡เบ›เบฐเป€เบŠเบตเบ™เบเบฑเบšเบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเปƒเบซเป‰เบฅเบนเบเบ„เป‰เบฒเบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เป€เบ„เบทเบญเบ‚เปˆเบฒเบเป‚เบ”เบเปƒเบŠเป‰เบเบฒเบ™เปเบ›เบžเบฒเบชเบฒเบ—เบตเปˆเบขเบนเปˆ. เปƒเบ™เบšเบปเบ”เบ„เบงเบฒเบกเบ™เบตเป‰เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบˆเบฐเบšเบญเบเบ—เปˆเบฒเบ™เบงเบดเบ—เบตเบ—เบตเปˆเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป„เบ”เป‰เบฎเบฑเบš Carrier Grade NAT เบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ‚เบญเบ‡เบชเบดเบ™เบ„เป‰เบฒ.

เบšเบฒเบ‡เบ›เบฐเบซเบงเบฑเบ”เบชเบฒเบ”

เบซเบปเบงเบ‚เปเป‰เบ‚เบญเบ‡เบเบฒเบ™เบซเบกเบปเบ”เบžเบทเป‰เบ™เบ—เบตเปˆเบ—เบตเปˆเบขเบนเปˆ IPv4 เปเบกเปˆเบ™เบšเปเปˆเปƒเบซเบกเปˆ. เปƒเบ™เบšเบฒเบ‡เบˆเบธเบ”, เบฅเบฒเบเบŠเบทเปˆเบฅเปเบ–เป‰เบฒเป„เบ”เป‰เบ›เบฒเบเบปเบ”เบขเบนเปˆเปƒเบ™ RIPE, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบเบฒเบ™เปเบฅเบเบ›เปˆเบฝเบ™เป„เบ”เป‰เป€เบเบตเบ”เบ‚เบทเป‰เบ™เปƒเบ™เบšเปˆเบญเบ™เบ—เบตเปˆเบกเบตเบเบฒเบ™เบŠเบทเป‰เบ‚เบฒเบเบ—เบตเปˆเบขเบนเปˆเปเบฅเบฐเบ‚เปเป‰เบ•เบปเบเบฅเบปเบ‡เป„เบ”เป‰เบ–เบทเบเบชเบฐเบซเบผเบธเบšเป€เบžเบทเปˆเบญเป€เบŠเบปเปˆเบฒเบžเบงเบเบกเบฑเบ™. เบ„เปˆเบญเบเป†, เบœเบนเป‰เบ›เบฐเบเบญเบšเบเบฒเบ™เป‚เบ—เบฅเบฐเบ„เบปเบกเป€เบฅเบตเปˆเบกเปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบญเบดเบ™เป€เบ•เบตเป€เบ™เบฑเบ”เป‚เบ”เบเปƒเบŠเป‰เบ—เบตเปˆเบขเบนเปˆเปเบฅเบฐเบเบฒเบ™เปเบ›เบžเบฒเบชเบฒเบžเบญเบ”. เบšเบฒเบ‡เบ„เบปเบ™เบšเปเปˆเป„เบ”เป‰เบˆเบฑเบ”เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบ—เบตเปˆเบขเบนเปˆเบžเบฝเบ‡เบžเปเบ—เบตเปˆเบˆเบฐเบญเบญเบเบ—เบตเปˆเบขเบนเปˆ "เบชเบตเบ‚เบฒเบง" เปƒเบซเป‰เบเบฑเบšเบœเบนเป‰เบˆเบญเบ‡เปเบ•เปˆเบฅเบฐเบ„เบปเบ™, เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบ„เบปเบ™เบญเบทเปˆเบ™เป€เบฅเบตเปˆเบกเบ›เบฐเบซเบเบฑเบ”เป€เบ‡เบดเบ™เป‚เบ”เบเบเบฒเบ™เบ›เบฐเบ•เบดเป€เบชเบ”เบเบฒเบ™เบŠเบทเป‰เบ—เบตเปˆเบขเบนเปˆเปƒเบ™เบ•เบฐเบซเบผเบฒเบ”เบฎเบญเบ‡. เบœเบนเป‰เบœเบฐเบฅเบดเบ”เบญเบธเบ›เบฐเบเบญเบ™เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบ„เบงเบฒเบกเบ„เบดเบ”เบ™เบตเป‰, เป€เบžเบฒเบฐเบงเปˆเบฒ เบเบฒเบ™เบ—เปเบฒเบ‡เบฒเบ™เบ™เบตเป‰เบ›เบปเบเบเบฐเบ•เบดเปเบฅเป‰เบงเบ•เป‰เบญเบ‡เบเบฒเบ™เป‚เบกเบ”เบนเบ™เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบซเบผเบทเปƒเบšเบญเบฐเบ™เบธเบเบฒเบ”. เบ•เบปเบงเบขเปˆเบฒเบ‡, เปƒเบ™เบชเบฒเบเบ‚เบญเบ‡ Juniper เบ‚เบญเบ‡ MX routers (เบเบปเบเป€เบงเบฑเป‰เบ™ MX104 เปเบฅเบฐ MX204 เบซเบผเป‰เบฒเบชเบธเบ”), เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ” NAPT เปƒเบ™เบšเบฑเบ”เบšเปเบฅเบดเบเบฒเบ™ MS-MIC เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ, Cisco ASR1k เบ•เป‰เบญเบ‡เบเบฒเบ™เปƒเบšเบญเบฐเบ™เบธเบเบฒเบ” CGN, Cisco ASR9k เบ•เป‰เบญเบ‡เบเบฒเบ™เป‚เบกเบ”เบนเบ™ A9K-ISM-100 เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ. เปเบฅเบฐเปƒเบšเบญเบฐเบ™เบธเบเบฒเบ” A9K-CGN -LIC เบเบฑเบšเบฅเบฒเบง. เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›, เบ„เบงเบฒเบกเบชเบธเบเบกเบตเบ„เปˆเบฒเปƒเบŠเป‰เบˆเปˆเบฒเบเบซเบผเบฒเบ.

IPTables

เบงเบฝเบเบ‡เบฒเบ™เบ‚เบญเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ” NAT เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบกเบตเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ„เบญเบกเบžเบดเบงเป€เบ•เบตเป‰เบžเบดเป€เบชเบ”; เบกเบฑเบ™เบชเบฒเบกเบฒเบ”เปเบเป‰เป„เบ‚เป„เบ”เป‰เป‚เบ”เบเป‚เบ›เป€เบŠเบ”เป€เบŠเบตเบ—เบตเปˆเบกเบตเบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เบ—เบปเปˆเบงเป„เบ›, เป€เบŠเบดเปˆเบ‡เบ–เบทเบเบ•เบดเบ”เบ•เบฑเป‰เบ‡, เบ•เบปเบงเบขเปˆเบฒเบ‡, เปƒเบ™ router เป€เบฎเบทเบญเบ™เปƒเบ”เบเปเปˆเบ•เบฒเบก. เปƒเบ™เบ‚เบญเบšเป€เบ‚เบ”เบ‚เบญเบ‡เบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เป‚เบ—เบฅเบฐเบ„เบปเบก, เบšเบฑเบ™เบซเบฒเบ™เบตเป‰เบชเบฒเบกเบฒเบ”เปเบเป‰เป„เบ‚เป„เบ”เป‰เป‚เบ”เบเปƒเบŠเป‰เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบชเบดเบ™เบ„เป‰เบฒเบ—เบตเปˆเปƒเบŠเป‰ FreeBSD (ipfw/pf) เบซเบผเบท GNU/Linux (iptables). เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบšเปเปˆเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒ FreeBSD, เป€เบžเบฒเบฐเบงเปˆเบฒ ... เบ‚เป‰เบญเบเป€เบŠเบปเบฒเปƒเบŠเป‰ OS เบ™เบตเป‰เบ”เบปเบ™เปเบฅเป‰เบง, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ•เบดเบ”เบขเบนเปˆเบเบฑเบš GNU/Linux.

เบเบฒเบ™เป€เบ›เบตเบ”เปƒเบŠเป‰เบเบฒเบ™เปเบ›เบ—เบตเปˆเบขเบนเปˆเปเบกเปˆเบ™เบšเปเปˆเบเบฒเบเป€เบฅเบตเบ. เบเปˆเบญเบ™เบญเบทเปˆเบ™ เปเบปเบ” เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบเบปเบ”เบฅเบฐเบšเบฝเบšเปƒเบ™ iptables เปƒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡ nat:

iptables -t nat -A POSTROUTING -s 100.64.0.0/10 -j SNAT --to <pool_start_addr>-<pool_end_addr> --persistent

เบฅเบฐเบšเบปเบšเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบˆเบฐเป‚เบซเบฅเบ”เป‚เบกเบ”เบนเบ™ nf_conntrack, เป€เบŠเบดเปˆเบ‡เบˆเบฐเบ•เบดเบ”เบ•เบฒเบกเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ—เบตเปˆเปƒเบŠเป‰เบงเบฝเบเบ—เบฑเบ‡เบซเบกเบปเบ”เปเบฅเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เปเบ›เบ‡เบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™. เบกเบต subtleties เบซเบผเบฒเบเบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰. เบเปˆเบญเบ™เบญเบทเปˆเบ™ เปเบปเบ”, เบเป‰เบญเบ™เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเป€เบงเบปเป‰เบฒเบเปˆเบฝเบงเบเบฑเบš NAT เปƒเบ™เบ‚เบฐ เปœเบฒเบ” เบ‚เบญเบ‡เบœเบนเป‰เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เป‚เบ—เบฅเบฐเบ„เบปเบก, เบกเบฑเบ™ เบˆเบณ เป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ›เบฑเบšเป€เบงเบฅเบฒ, เป€เบžเบฒเบฐเบงเปˆเบฒเบ”เป‰เบงเบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบเบฒเบ™เปเบ›เบˆเบฐเป€เบ•เบตเบšเปƒเบซเบเปˆเบขเปˆเบฒเบ‡เป„เบงเบงเบฒเบเบฑเบšเบ„เปˆเบฒเบ—เบตเปˆเบฎเป‰เบฒเบเบเบฒเบ”. เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰เปเบกเปˆเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ—เบตเปˆเบ‚เป‰เบญเบเปƒเบŠเป‰เปƒเบ™เป€เบŠเบตเบšเป€เบงเบตเบ‚เบญเบ‡เบ‚เป‰เบญเบ:

net.ipv4.ip_forward = 1
net.ipv4.ip_local_port_range = 8192 65535

net.netfilter.nf_conntrack_generic_timeout = 300
net.netfilter.nf_conntrack_tcp_timeout_syn_sent = 60
net.netfilter.nf_conntrack_tcp_timeout_syn_recv = 60
net.netfilter.nf_conntrack_tcp_timeout_established = 600
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 60
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 45
net.netfilter.nf_conntrack_tcp_timeout_last_ack = 30
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_close = 10
net.netfilter.nf_conntrack_tcp_timeout_max_retrans = 300
net.netfilter.nf_conntrack_tcp_timeout_unacknowledged = 300
net.netfilter.nf_conntrack_udp_timeout = 30
net.netfilter.nf_conntrack_udp_timeout_stream = 60
net.netfilter.nf_conntrack_icmpv6_timeout = 30
net.netfilter.nf_conntrack_icmp_timeout = 30
net.netfilter.nf_conntrack_events_retry_timeout = 15
net.netfilter.nf_conntrack_checksum=0

เปเบฅเบฐเบญเบฑเบ™เบ—เบตเบชเบญเบ‡, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบ‚เบฐเบซเบ™เบฒเบ”เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบเบฒเบ™เปเบ›เบžเบฒเบชเบฒเบšเปเปˆเป„เบ”เป‰เบ–เบทเบเบญเบญเบเปเบšเบšเบกเบฒเป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบงเบฝเบเบžเบฒเบเปƒเบ•เป‰เป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบ‚เบญเบ‡เบœเบนเป‰เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‡เบฒเบ™เป‚เบ—เบฅเบฐเบ„เบปเบก, เบกเบฑเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™:

net.netfilter.nf_conntrack_max = 3145728

เบกเบฑเบ™เบเบฑเบ‡เบกเบตเบ„เบงเบฒเบกเบˆเปเบฒเป€เบ›เบฑเบ™เบ—เบตเปˆเบˆเบฐเป€เบžเบตเปˆเบกเบˆเปเบฒเบ™เบงเบ™เบ–เบฑเบ‡เบชเปเบฒเบฅเบฑเบšเบ•เบฒเบ•เบฐเบฅเบฒเบ‡ hash เบ—เบตเปˆเป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบเบฒเบ™เบญเบญเบเบญเบฒเบเบฒเบ”เบ—เบฑเบ‡เบซเบกเบปเบ” (เบ™เบตเป‰เปเบกเปˆเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เป‚เบกเบ”เบนเบ™ nf_conntrack):

options nf_conntrack hashsize=1572864

เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบซเบกเบนเบ™เปƒเบŠเป‰เบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰, เบเบฒเบ™เบญเบญเบเปเบšเบšเบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™เปเบกเปˆเบ™เป„เบ”เป‰เบฎเบฑเบšเบ—เบตเปˆเบชเบฒเบกเบฒเบ”เปเบ›เบžเบฒเบชเบฒเบˆเปเบฒเบ™เบงเบ™เบซเบฅเบฒเบเบ‚เบญเบ‡เบ—เบตเปˆเบขเบนเปˆเบฅเบนเบเบ„เป‰เบฒเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบชเบฐเบ™เบธเบเป€เบเบตเบžเบฒเบเบ™เบญเบ. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ‚เบญเบ‡เบเบฒเบ™เปเบเป‰เป„เบ‚เบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบซเบผเบฒเบเบ—เบตเปˆเบˆเบฐเบ•เป‰เบญเบ‡เบเบฒเบ™. เปƒเบ™เบ„เบงเบฒเบกเบžเบฐเบเบฒเบเบฒเบกเบ—เปเบฒเบญเบดเบ”เบ‚เบญเบ‡เบ‚เป‰เบญเบเปƒเบ™เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ GNU / Linux เบชเปเบฒเบฅเบฑเบš NAT (เบ›เบฐเบกเบฒเบ™ 2013), เบ‚เป‰เบญเบเบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰เบ›เบฐเบกเบฒเบ™ 7Gbit / s เบ—เบตเปˆ 0.8Mpps เบ•เปเปˆเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ (Xeon E5-1650v2). เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปโ€‹โ€‹เบ•เปˆเป€เบงเบฅเบฒเบ™เบฑเป‰เบ™, เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบซเบผเบฒเบเป„เบ”เป‰เบ–เบทเบเบ”เปเบฒเป€เบ™เบตเบ™เบขเบนเปˆเปƒเบ™ stack เป€เบ„เบทเบญเบ‚เปˆเบฒเบ GNU / Linux kernel, เบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบซเบ™เบถเปˆเบ‡เปƒเบ™เบฎเบฒเบ”เปเบงเบ”เบฝเบงเบเบฑเบ™เป„เบ”เป‰เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เป€เบเบทเบญเบš 18-19 Gbit / s เบ—เบตเปˆ 1.8-1.9 Mpps (เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบ„เปˆเบฒเบชเบนเบ‡เบชเบธเบ”). , เปเบ•เปˆเบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบ›เบฐเบฅเบดเบกเบฒเบ™เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™, เบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เป‚เบ”เบเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบซเบ™เบถเปˆเบ‡เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เป„เบงเบซเบผเบฒเบ. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เป‚เบ„เบ‡เบเบฒเบ™เป„เบ”เป‰เบ–เบทเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเป€เบžเบทเปˆเบญเบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เบเบฒเบ™เป‚เบซเบผเบ”เปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™, เปเบ•เปˆเบ—เบฑเบ‡เบซเบกเบปเบ”เบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบ„เบงเบฒเบกเบชเบฑเบšเบชเบปเบ™เปƒเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ, เบเบฒเบ™เบฎเบฑเบเบชเบฒเปเบฅเบฐเบฎเบฑเบเบชเบฒเบ„เบธเบ™เบ™เบฐเบžเบฒเบšเบ‚เบญเบ‡เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ—เบตเปˆเบชเบฐเบซเบ™เบญเบ‡เปƒเบซเป‰.

NTFables

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™, เปเบ™เบงเป‚เบ™เป‰เบกเบ‚เบญเบ‡เบ„เบปเบ™เบญเบฑเบšเป€เบ”เบ”: เปƒเบ™เบŠเบญเบšเปเบง "shifting bag" เปเบกเปˆเบ™เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ DPDK เปเบฅเบฐ XDP. เบซเบผเบฒเบเป†เบšเบปเบ”เบ„เบงเบฒเบกเป„เบ”เป‰เบ–เบทเบเบ‚เบฝเบ™เป„เบงเป‰เปƒเบ™เบซเบปเบงเบ‚เปเป‰เบ™เบตเป‰, เบ„เปเบฒเป€เบงเบปเป‰เบฒเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบซเบผเบฒเบเป„เบ”เป‰เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™, เปเบฅเบฐเบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เบเบฒเบ™เบ„เป‰เบฒเป„เบ”เป‰เบ›เบฒเบเบปเบ” (เบ•เบปเบงเบขเปˆเบฒเบ‡, SKAT เบˆเบฒเบ VasExperts). เปเบ•เปˆเป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบกเบ—เบตเปˆเบˆเปเบฒเบเบฑเบ”เบ‚เบญเบ‡เบœเบนเป‰เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‡เบฒเบ™เป‚เบ—เบฅเบฐเบ„เบปเบก, เบกเบฑเบ™เป€เบ›เบฑเบ™เบšเบฑเบ™เบซเบฒเบซเบผเบฒเบเบ—เบตเปˆเบˆเบฐเบชเป‰เบฒเบ‡ "เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™" เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบเบญเบšเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เป€เบญเบ‡. เบกเบฑเบ™เบˆเบฐเบกเบตเบ„เบงเบฒเบกเบซเบเบธเป‰เบ‡เบเบฒเบเบซเบผเบฒเบเบ—เบตเปˆเบˆเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เปเบเป‰เป„เบ‚เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ”; เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐ, เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบเบฒเบ™เบงเบดเบ™เบดเบ”เป„เบชเบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ. เบ•เบปเบงเบขเปˆเบฒเบ‡, tcpdump เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบเบฑเบš DPDK เบˆเบฐเบšเปเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบ„เบทเบเบฑเบ™เบเบฑเบšเบ™เบฑเป‰เบ™, เปเบฅเบฐเบกเบฑเบ™เบˆเบฐเบšเปเปˆ "เป€เบšเบดเปˆเบ‡" packets เบ—เบตเปˆเบ–เบทเบเบชเบปเปˆเบ‡เป„เบ›เบซเบฒเบชเบฒเบเป‚เบ”เบเปƒเบŠเป‰ XDP. เบ—เปˆเบฒเบกเบเบฒเบ‡เบเบฒเบ™เบชเบปเบ™เบ—เบฐเบ™เบฒเบ—เบฑเบ‡เบซเบกเบปเบ”เบเปˆเบฝเบงเบเบฑเบšเป€เบ•เบฑเบเป‚เบ™เป‚เบฅเบขเบตเปƒเบซเบกเปˆเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเบปเปˆเบ‡เบ•เปเปˆเปเบžเบฑเบเป€เบเบฑเบ”เป„เบ›เบซเบฒเบžเบทเป‰เบ™เบ—เบตเปˆเบœเบนเป‰เปƒเบŠเป‰, เบžเบงเบเป€เบ‚เบปเบฒเบšเปเปˆเป„เบ”เป‰เบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™. เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™ ะธ เบšเบปเบ”เบ„เบงเบฒเบก Pablo Neira Ayuso, เบœเบนเป‰เบฎเบฑเบเบชเบฒ iptables, เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ‚เบญเบ‡ flow offloading เปƒเบ™ nftables. เบ‚เปเปƒเบซเป‰เบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบขเปˆเบฒเบ‡เปƒเบเป‰เบŠเบดเบ”เบเปˆเบฝเบงเบเบฑเบšเบเบปเบ™เป„เบเบ™เบตเป‰.

เปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบ•เบปเป‰เบ™เบ•เปเปเบกเปˆเบ™เบงเปˆเบฒเบ–เป‰เบฒ router เบœเปˆเบฒเบ™เปเบžเบฑเบเป€เบเบฑเบ”เบˆเบฒเบเบเบญเบ‡เบ›เบฐเบŠเบธเบกเบซเบ™เบถเปˆเบ‡เปƒเบ™เบ—เบฑเบ‡เบชเบญเบ‡เบ—เบดเบ”เบ—เบฒเบ‡เบ‚เบญเบ‡เบเบฒเบ™เป„เบซเบผ (TCP session เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบชเบฐเบ–เบฒเบ™เบฐ ESTABLISHED), เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบœเปˆเบฒเบ™เบŠเบธเบ”เบ•เปเปˆเป„เบ›เบ‚เบญเบ‡เบเบญเบ‡เบ›เบฐเบŠเบธเบกเบ™เบตเป‰เป‚เบ”เบเบœเปˆเบฒเบ™เบเบปเบ”เบฅเบฐเบšเบฝเบšเป„เบŸเบงเปเบ—เบฑเบ‡เบซเบกเบปเบ”, เป€เบžเบฒเบฐเบงเปˆเบฒ. เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ—เบฑเบ‡เปเบปเบ”เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบเบฑเบ‡เบˆเบฐเบชเบดเป‰เบ™เบชเบธเบ”เบ”เป‰เบงเบเปเบžเบฑเบเป€เบเบฑเบ”เบ—เบตเปˆเบ–เบทเบเป‚เบญเบ™เป„เบ›เบซเบฒเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ•เปเปˆเป„เบ›. เปเบฅเบฐเบ•เบปเบงเบˆเบดเบ‡เปเบฅเป‰เบงเบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบฅเบทเบญเบเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ - เบžเบงเบเป€เบฎเบปเบฒเบฎเบนเป‰เปเบฅเป‰เบงเบงเปˆเบฒเบญเบดเบ™เป€เบ•เบตเป€เบŸเบ”เปƒเบ”เปเบฅเบฐเป€เบˆเบปเป‰เบฒเบžเบฒเบšเปƒเบ”เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบชเบปเปˆเบ‡เปเบžเบฑเบเป€เบเบฑเบ”เบžเบฒเบเปƒเบ™เบเบญเบ‡เบ›เบฐเบŠเบธเบกเบ™เบตเป‰. เบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบเบฑเบ‡เป€เบซเบผเบทเบญเปเบกเปˆเบ™เป€เบžเบทเปˆเบญเป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบ‚เปเป‰เบกเบนเบ™เบ™เบตเป‰เปเบฅเบฐเบ™เปเบฒเปƒเบŠเป‰เบกเบฑเบ™เบชเปเบฒเบฅเบฑเบš routing เปƒเบ™เป„เบฅเบเบฐเบ•เบปเป‰เบ™เบ‚เบญเบ‡เบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡ packet. เป€เบกเบทเปˆเบญเบ›เบฐเบ•เบดเบšเบฑเบ” NAT, เบกเบฑเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบ‚เปเป‰เบกเบนเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ—เบตเปˆเบขเบนเปˆเปเบฅเบฐเบžเบญเบ”เบ—เบตเปˆเปเบ›เป‚เบ”เบเป‚เบกเบ”เบนเบ™ nf_conntrack. เปเบกเปˆเบ™เปเบฅเป‰เบง, เปเบ™เปˆเบ™เบญเบ™, เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰, เบ•เปเบฒเบซเบผเบงเบ”เบ•เปˆเบฒเบ‡เป†เปเบฅเบฐเบ‚เปเป‰เบกเบนเบ™เบญเบทเปˆเบ™เป†เปเบฅเบฐเบเบปเบ”เบฅเบฐเบšเบฝเบšเบชเบฐเบ–เบดเบ•เบดเปƒเบ™ iptables เบขเบธเบ”เป€เบŠเบปเบฒเป€เบฎเบฑเบ”เบงเบฝเบ, เปเบ•เปˆเปƒเบ™เบ‚เบญเบšเป€เบ‚เบ”เบ‚เบญเบ‡เบงเบฝเบเบ‡เบฒเบ™เบ‚เบญเบ‡ NAT เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเบซเบผเบท, เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเบขเปˆเบฒเบ‡, เบŠเบฒเบเปเบ”เบ™, เบ™เบตเป‰เบšเปเปˆเปเบกเปˆเบ™เบชเบดเปˆเบ‡เบชเปเบฒเบ„เบฑเบ™, เป€เบžเบฒเบฐเบงเปˆเบฒเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™. เบ–เบทเบเปเบˆเบเบขเบฒเบเปƒเบ™เบ—เบปเปˆเบงเบญเบธเบ›เบฐเบเบญเบ™.

เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ

เป€เบžเบทเปˆเบญเปƒเบŠเป‰เบŸเบฑเบ‡เบŠเบฑเบ™เบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™:

  • เปƒเบŠเป‰เปเบเปˆเบ™เบชเบปเบ”. เป€เบ–เบดเบ‡เบงเปˆเบฒเบˆเบฐเบกเบตเบ„เบงเบฒเบกเบˆเบดเบ‡เบ—เบตเปˆเบงเปˆเบฒเบเบฒเบ™เบ—เปเบฒเบ‡เบฒเบ™เบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡เบ›เบฒเบเบปเบ”เบขเบนเปˆเปƒเบ™เปเบเปˆเบ™ 4.16, เป€เบ›เบฑเบ™เป€เบงเบฅเบฒเบ”เบปเบ™เบซเบผเบฒเบเบกเบฑเบ™ "เบ”เบดเบš" เปเบฅเบฐเป€เบ›เบฑเบ™เบ›เบฐเบˆเปเบฒเป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบ„เบงเบฒเบกเบขเป‰เบฒเบ™เบเบปเบงเบ‚เบญเบ‡เปเบเปˆเบ™. เบ—เบธเบเบขเปˆเบฒเบ‡เบกเบตเบชเบฐเบ–เบฝเบ™เบฅเบฐเบžเบฒเบšเปƒเบ™เบฎเบญเบšเป€เบ”เบทเบญเบ™เบ—เบฑเบ™เบงเบฒ 2019, เป€เบกเบทเปˆเบญ LTS kernels 4.19.90 เปเบฅเบฐ 5.4.5 เบ–เบทเบเบ›เปˆเบญเบเบญเบญเบเบกเบฒ.
  • เบ‚เบฝเบ™เบ„เบทเบ™เบเบปเบ”เบฅเบฐเบšเบฝเบš iptables เปƒเบ™เบฎเบนเบšเปเบšเบš nftables เป‚เบ”เบเปƒเบŠเป‰ nftables เบฎเบธเปˆเบ™เบซเบผเป‰เบฒเบชเบธเบ”. เป€เบฎเบฑเบ”เบงเบฝเบเบขเปˆเบฒเบ‡เปเบ—เป‰เบˆเบดเบ‡เปƒเบ™เบชเบฐเบšเบฑเบš 0.9.0

เบ–เป‰เบฒเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบขเบนเปˆเปƒเบ™เบซเบผเบฑเบเบเบฒเบ™เปเบกเปˆเบ™เบˆเบฐเปเบˆเป‰เบ‡เบเบฑเบšเบˆเบธเบ”เบ—เปเบฒเบญเบดเบ”, เบชเบดเปˆเบ‡เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เปเบกเปˆเบ™เบšเปเปˆเบฅเบทเบกเบ—เบตเปˆเบˆเบฐเบฅเบงเบกเป‚เบกเบ”เบนเบ™เปƒเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบ›เบฐเบเบญเบš (CONFIG_NFT_FLOW_OFFLOAD=m), เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบˆเบธเบ”เบ—เบตเบชเบญเบ‡เบ•เป‰เบญเบ‡เบเบฒเบ™เบ„เปเบฒเบญเบฐเบ—เบดเบšเบฒเบ. เบเบปเบ”เบฅเบฐเบšเบฝเบš nftables เป„เบ”เป‰เบ–เบทเบเบญเบฐเบ—เบดเบšเบฒเบเบขเปˆเบฒเบ‡เบชเบดเป‰เบ™เป€เบŠเบตเบ‡เปเบ•เบเบ•เปˆเบฒเบ‡เบˆเบฒเบ iptables. ะ”ะพะบัƒะผะตะฝั‚ะฐั†ะธั เบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เป€เบเบทเบญเบšเบ—เบธเบเบˆเบธเบ”, เบเบฑเบ‡เบกเบตเบžเบดเป€เบชเบ” เบ•เบปเบงเปเบ›เบ‡เบชเบฑเบ™เบเบฒเบ™ เบเบปเบ”เบฅเบฐเบšเบฝเบšเบˆเบฒเบ iptables เบเบฑเบš nftables. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบˆเบฐเบเบปเบเบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ NAT เปเบฅเบฐ flow offload. เบ™เบดเบ—เบฒเบ™เบ™เป‰เบญเบเป† เบ•เบปเบงเบขเปˆเบฒเบ‡: , - เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ—เบตเปˆเบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบœเปˆเบฒเบ™; เปƒเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบˆเบดเบ‡, เบกเบฑเบ™เบชเบฒเบกเบฒเบ”เบกเบตเบซเบผเบฒเบเบเปˆเบงเบฒเบชเบญเบ‡เบญเบฑเบ™. , โ€” เบ—เบตเปˆโ€‹เบขเบนเปˆโ€‹เบ•เบปเป‰เบ™โ€‹เปเบฅเบฐโ€‹เบชเบดเป‰เบ™โ€‹เบชเบธเบ”โ€‹เบ‚เบญเบ‡โ€‹เบฅเบฐโ€‹เบ”เบฑเบšโ€‹เบ‚เบญเบ‡โ€‹เบ—เบตเปˆโ€‹เบขเบนเปˆ "เบชเบตโ€‹เบ‚เบฒเบงโ€‹"โ€‹.

เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ NAT เปเบกเปˆเบ™เบ‡เปˆเบฒเบเบ”เบฒเบเบซเบผเบฒเบ:

#! /usr/sbin/nft -f

table nat {
        chain postrouting {
                type nat hook postrouting priority 100;
                oif <o_if> snat to <pool_addr_start>-<pool_addr_end> persistent
        }
}

เบ”เป‰เบงเบเบเบฒเบ™เป„เบซเบผ offload เบกเบฑเบ™เบชเบฑเบšเบชเบปเบ™เบซเบผเบฒเบ, เปเบ•เปˆเบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เป€เบ‚เบปเป‰เบฒเปƒเบˆเป„เบ”เป‰:

#! /usr/sbin/nft -f

table inet filter {
        flowtable fastnat {
                hook ingress priority 0
                devices = { <i_if>, <o_if> }
        }

        chain forward {
                type filter hook forward priority 0; policy accept;
                ip protocol { tcp , udp } flow offload @fastnat;
        }
}

เบงเปˆเบฒ, เปƒเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบˆเบดเบ‡, เปเบกเปˆเบ™เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”. เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™ TCP / UDP เบ—เบฑเบ‡เบซเบกเบปเบ”เบˆเบฐเบ•เบปเบเบขเบนเปˆเปƒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡ fastnat เปเบฅเบฐเบ–เบทเบเบ›เบธเบ‡เปเบ•เปˆเบ‡เป„เบงเบ‚เบถเป‰เบ™เบซเบผเบฒเบ.

ะ ะตะทัƒะปัŒั‚ะฐั‚ั‹

เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เบŠเบฑเบ”เป€เบˆเบ™เบงเปˆเบฒ "เป„เบง" เป€เบ—เบปเปˆเบฒเปƒเบ”, เบ‚เป‰เบญเบเบˆเบฐเบ„เบฑเบ”เบ•เบดเบ”เบฎเบนเบšเบซเบ™เป‰เบฒเบˆเปเบ‚เบญเบ‡เบเบฒเบ™เป‚เบซเบผเบ”เบขเบนเปˆเปƒเบ™เบชเบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡, เบ”เป‰เบงเบเบฎเบฒเบ”เปเบงเบ”เบฝเบงเบเบฑเบ™ (Xeon E5-1650v2), เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ”เบฝเบงเบเบฑเบ™, เปƒเบŠเป‰ Linux kernel เบ”เบฝเบงเบเบฑเบ™, เปเบ•เปˆเบ›เบฐเบ•เบดเบšเบฑเบ” NAT เปƒเบ™ iptables. (NAT4) เปเบฅเบฐเปƒเบ™ nftables (NAT5).

เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เป„เบง เปเบฅเบฐ NAT เปƒเบ™ Linux

เบšเปเปˆเบกเบตเบเบฒเบŸเบ‚เบญเบ‡เปเบžเบฑเบเป€เบเบฑเบ”เบ•เปเปˆเบงเบดเบ™เบฒเบ—เบตเปƒเบ™เบžเบฒเบšเบซเบ™เป‰เบฒเบˆเป, เปเบ•เปˆเปƒเบ™เป‚เบ›เป„เบŸเบเบฒเบ™เป‚เบซเบผเบ”เบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบ‚เบฐเบซเบ™เบฒเบ”เปเบžเบฑเบเป€เบเบฑเบ”เป‚เบ”เบเบชเบฐเป€เบฅเปˆเบเปเบกเปˆเบ™เบ›เบฐเบกเบฒเบ™ 800 เป„เบšเบ•เปŒ, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ„เปˆเบฒเป„เบ”เป‰เบชเบนเบ‡เป€เบ–เบดเบ‡ 1.5Mpps. เบ”เบฑเปˆเบ‡เบ—เบตเปˆเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบซเบฑเบ™เป„เบ”เป‰, เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ—เบตเปˆเบกเบต nftables เบกเบตเบชเบฐเบซเบ‡เบงเบ™เบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบญเบฑเบ™เปƒเบซเบเปˆเบซเบผเบงเบ‡. เบ›เบฐเบˆเบธเบšเบฑเบ™, เป€เบŠเบตเบšเป€เบงเบตเบ™เบตเป‰เบ›เบฐเบกเบงเบ™เบœเบปเบ™เป„เบ”เป‰เป€เบ–เบดเบ‡ 30Gbit/s เบ—เบตเปˆ 3Mpps เปเบฅเบฐเบชเบฒเบกเบฒเบ”เบ•เบญเบšเบชเบฐเปœเบญเบ‡เป„เบ”เป‰เบ‚เปเป‰เบˆเบณเบเบฑเบ”เบ‚เบญเบ‡เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ•เบปเบงเบˆเบดเบ‡เบ‚เบญเบ‡ 40Gbps, เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบกเบตเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™ CPU เบŸเบฃเบต.

เบ‚เป‰เบญเบเบซเบงเบฑเบ‡เบงเปˆเบฒเป€เบญเบเบฐเบชเบฒเบ™เบ™เบตเป‰เบˆเบฐเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เบ•เปเปˆเบงเบดเบชเบฐเบงเบฐเบเบญเบ™เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ—เบตเปˆเบžเบฐเบเบฒเบเบฒเบกเบ›เบฑเบšเบ›เบธเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒ.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™