เจฒเฉ€เจจเจ•เจธ เจตเจฟเฉฑเจš เจคเฉ‡เจœเจผ เจฐเจพเจŠเจŸเจฟเฉฐเจ— เจ…เจคเฉ‡ NAT

เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ IPv4 เจเจกเจฐเฉˆเฉฑเจธ เจ–เจคเจฎ เจนเฉ‹ เจœเจพเจ‚เจฆเฉ‡ เจนเจจ, เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ เจŸเฉˆเจฒเฉ€เจ•เจพเจฎ เจ“เจชเจฐเฉ‡เจŸเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจเจกเจฐเฉˆเฉฑเจธ เจ…เจจเฉเจตเจพเจฆ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจ†เจชเจฃเฉ‡ เจ—เจพเจนเจ•เจพเจ‚ เจจเฉ‚เฉฐ เจจเฉˆเฉฑเจŸเจตเจฐเจ• เจชเจนเฉเฉฐเจš เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจฆเจพ เจธเจพเจนเจฎเจฃเจพ เจ•เจฐเจจเจพ เจชเฉˆเจ‚เจฆเจพ เจนเฉˆเฅค เจ‡เจธ เจฒเฉ‡เจ– เจตเจฟเฉฑเจš เจฎเฉˆเจ‚ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจฆเฉฑเจธเจพเจ‚เจ—เจพ เจ•เจฟ เจคเฉเจธเฉ€เจ‚ เจ•เจฎเฉ‹เจกเจฟเจŸเฉ€ เจธเจฐเจตเจฐเจพเจ‚ 'เจคเฉ‡ เจ•เฉˆเจฐเฉ€เจ…เจฐ เจ—เฉเจฐเฉ‡เจก NAT เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจ•เจฟเจตเฉ‡เจ‚ เจชเฉเจฐเจพเจชเจค เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค

เจ‡เจคเจฟเจนเจพเจธ เจฆเจพ เจ‡เฉฑเจ• เจฌเจฟเฉฑเจŸ

IPv4 เจเจกเจฐเฉˆเฉฑเจธ เจธเจชเฉ‡เจธ เจฅเจ•เจพเจตเจŸ เจฆเจพ เจตเจฟเจธเจผเจพ เจนเฉเจฃ เจจเจตเจพเจ‚ เจจเจนเฉ€เจ‚ เจนเฉˆเฅค เจ•เจฟเจธเฉ‡ เจธเจฎเฉ‡เจ‚, RIPE เจตเจฟเฉฑเจš เจ‰เจกเฉ€เจ• เจธเฉ‚เจšเฉ€เจ†เจ‚ เจฆเจฟเจ–เจพเจˆ เจฆเจฟเฉฐเจฆเฉ€เจ†เจ‚ เจธเจจ, เจซเจฟเจฐ เจเจ•เจธเจšเฉ‡เจ‚เจœ เจ‰เจญเจฐ เจ•เฉ‡ เจธเจพเจนเจฎเจฃเฉ‡ เจ†เจ‰เจ‚เจฆเฉ‡ เจธเจจ เจœเจฟเจจเฉเจนเจพเจ‚ 'เจคเฉ‡ เจชเจคเจฟเจ†เจ‚ เจฆเฉ‡ เจฌเจฒเจพเจ•เจพเจ‚ เจฆเจพ เจตเจชเจพเจฐ เจนเฉเฉฐเจฆเจพ เจธเฉ€ เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจฒเฉ€เจœเจผ 'เจคเฉ‡ เจฆเฉ‡เจฃ เจฒเจˆ เจธเฉŒเจฆเฉ‡ เจ•เฉ€เจคเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจธเจจเฅค เจนเฉŒเจฒเฉ€-เจนเฉŒเจฒเฉ€, เจŸเฉˆเจฒเฉ€เจ•เจพเจฎ เจ†เจชเจฐเฉ‡เจŸเจฐเจพเจ‚ เจจเฉ‡ เจชเจคเฉ‡ เจ…เจคเฉ‡ เจชเฉ‹เจฐเจŸ เจ…เจจเฉเจตเจพเจฆ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจ‡เฉฐเจŸเจฐเจจเฉˆเจŸ เจชเจนเฉเฉฐเจš เจธเฉ‡เจตเจพเจตเจพเจ‚ เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจจเฉ€เจ†เจ‚ เจธเจผเฉเจฐเฉ‚ เจ•เจฐ เจฆเจฟเฉฑเจคเฉ€เจ†เจ‚เฅค เจ•เฉเจ เจจเฉ‡ เจนเจฐเฉ‡เจ• เจ—เจพเจนเจ• เจจเฉ‚เฉฐ "เจšเจฟเฉฑเจŸเจพ" เจชเจคเจพ เจœเจพเจฐเฉ€ เจ•เจฐเจจ เจฒเจˆ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ‡ เจชเจคเฉ‡ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจ เจฆเจพ เจชเฉเจฐเจฌเฉฐเจง เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเจพ, เจœเจฆเฉ‹เจ‚ เจ•เจฟ เจฆเฉ‚เจธเจฐเฉ‡ เจธเฉˆเจ•เฉฐเจกเจฐเฉ€ เจฎเจพเจฐเจ•เฉ€เจŸ 'เจคเฉ‡ เจชเจคเฉ‡ เจ–เจฐเฉ€เจฆเจฃ เจคเฉ‹เจ‚ เจ‡เจจเจ•เจพเจฐ เจ•เจฐเจ•เฉ‡ เจชเฉˆเจธเฉ‡ เจฌเจšเจพเจ‰เจฃเฉ‡ เจธเจผเฉเจฐเฉ‚ เจ•เจฐ เจฆเจฟเฉฑเจคเฉ‡เฅค เจจเฉˆเจŸเจตเจฐเจ• เจ‰เจชเจ•เจฐเจฃเจพเจ‚ เจฆเฉ‡ เจจเจฟเจฐเจฎเจพเจคเจพเจตเจพเจ‚ เจจเฉ‡ เจ‡เจธ เจตเจฟเจšเจพเจฐ เจฆเจพ เจธเจฎเจฐเจฅเจจ เจ•เฉ€เจคเจพ, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ‡เจธ เจ•เจพเจฐเจœเจ•เฉเจธเจผเจฒเจคเจพ เจฒเจˆ เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡ เจตเจพเจงเฉ‚ เจเจ•เจธเจŸเฉˆเจ‚เจธเจผเจจ เจฎเฉ‹เจกเฉ€เจŠเจฒ เจœเจพเจ‚ เจฒเจพเจ‡เจธเฉฐเจธ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆเฅค เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, MX เจฐเจพเจŠเจŸเจฐเจพเจ‚ เจฆเฉ€ เจœเฉ‚เจจเฉ€เจชเจฐ เจฒเจพเจˆเจจ เจตเจฟเฉฑเจš (เจจเจตเฉ€เจจเจคเจฎ MX104 เจ…เจคเฉ‡ MX204 เจจเฉ‚เฉฐ เจ›เฉฑเจก เจ•เฉ‡), เจคเฉเจธเฉ€เจ‚ เจ‡เฉฑเจ• เจตเฉฑเจ–เจฐเฉ‡ MS-MIC เจธเฉ‡เจตเจพ เจ•เจพเจฐเจก 'เจคเฉ‡ NAPT เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹, Cisco ASR1k เจจเฉ‚เฉฐ เจ‡เฉฑเจ• CGN เจฒเจพเจ‡เจธเฉˆเจ‚เจธ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ, Cisco ASR9k เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจตเฉฑเจ–เจฐเฉ‡ A9K-ISM-100 เจฎเฉ‹เจกเฉ€เจŠเจฒ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆเฅค เจ…เจคเฉ‡ เจ‰เจธเจจเฉ‚เฉฐ เจ‡เฉฑเจ• A9K-CGN เจฒเจพเจ‡เจธเฉˆเจ‚เจธ -LICเฅค เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡, เจ…เจจเฉฐเจฆ เจฒเจˆ เจฌเจนเฉเจค เจธเจพเจฐเจพ เจชเฉˆเจธเจพ เจ–เจฐเจš เจนเฉเฉฐเจฆเจพ เจนเฉˆ.

IPTables

NAT เจ•เจฐเจจ เจฆเฉ‡ เจ•เฉฐเจฎ เจฒเจˆ เจตเจฟเจธเจผเฉ‡เจธเจผ เจ•เฉฐเจชเจฟเจŠเจŸเจฟเฉฐเจ— เจธเจฐเฉ‹เจคเจพเจ‚ เจฆเฉ€ เจฒเฉ‹เฉœ เจจเจนเฉ€เจ‚ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ; เจ‡เจธเจจเฉ‚เฉฐ เจ†เจฎ-เจ‰เจฆเฉ‡เจธเจผ เจตเจพเจฒเฉ‡ เจชเฉเจฐเฉ‹เจธเฉˆเจธเจฐเจพเจ‚ เจฆเฉเจ†เจฐเจพ เจนเฉฑเจฒ เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ, เจœเฉ‹ เจ•เจฟ เจธเจฅเจพเจชเจฟเจค เจ•เฉ€เจคเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจจ, เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจ•เจฟเจธเฉ‡ เจตเฉ€ เจ˜เจฐเฉ‡เจฒเฉ‚ เจฐเจพเจŠเจŸเจฐ เจตเจฟเฉฑเจšเฅค เจŸเฉˆเจฒเฉ€เจ•เจพเจฎ เจ†เจชเจฐเฉ‡เจŸเจฐ เจฆเฉ‡ เจชเฉˆเจฎเจพเจจเฉ‡ 'เจคเฉ‡, เจ‡เจธ เจธเจฎเฉฑเจธเจฟเจ† เจจเฉ‚เฉฐ FreeBSD (ipfw/pf) เจœเจพเจ‚ GNU/Linux (iptables) เจšเจฒเจพเจ‰เจฃ เจตเจพเจฒเฉ‡ เจ•เจฎเฉ‹เจกเจฟเจŸเฉ€ เจธเจฐเจตเจฐเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจนเฉฑเจฒ เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจ…เจธเฉ€เจ‚ FreeBSD 'เจคเฉ‡ เจตเจฟเจšเจพเจฐ เจจเจนเฉ€เจ‚ เจ•เจฐเจพเจ‚เจ—เฉ‡, เจ•เจฟเจ‰เจ‚เจ•เจฟ... เจฎเฉˆเจ‚ เจ•เจพเจซเจผเฉ€ เจธเจฎเจพเจ‚ เจชเจนเจฟเจฒเจพเจ‚ เจ‡เจธ OS เจจเฉ‚เฉฐ เจตเจฐเจคเจฃเจพ เจฌเฉฐเจฆ เจ•เจฐ เจฆเจฟเฉฑเจคเจพ เจธเฉ€, เจ‡เจธ เจฒเจˆ เจ…เจธเฉ€เจ‚ GNU/Linux เจจเจพเจฒ เจœเฉเฉœเฉ‡ เจฐเจนเจพเจ‚เจ—เฉ‡เฅค

เจชเจคเฉ‡ เจฆเฉ‡ เจ…เจจเฉเจตเจพเจฆ เจจเฉ‚เฉฐ เจธเจฎเจฐเฉฑเจฅ เจ•เจฐเจจเจพ เจฌเจฟเจฒเจ•เฉเจฒ เจตเฉ€ เจฎเฉเจธเจผเจ•เจฒ เจจเจนเฉ€เจ‚ เจนเฉˆเฅค เจชเจนเจฟเจฒเจพเจ‚ เจคเฉเจนเจพเจจเฉ‚เฉฐ nat เจŸเฉ‡เจฌเจฒ เจตเจฟเฉฑเจš iptables เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจจเจฟเจฏเจฎ เจฐเจœเจฟเจธเจŸเจฐ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ:

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

เจ“เจชเจฐเฉ‡เจŸเจฟเฉฐเจ— เจธเจฟเจธเจŸเจฎ nf_conntrack เจฎเฉ‹เจกเฉ€เจŠเจฒ เจจเฉ‚เฉฐ เจฒเฉ‹เจก เจ•เจฐเฉ‡เจ—เจพ, เจœเฉ‹ เจธเจพเจฐเฉ‡ เจ•เจฟเจฐเจฟเจ†เจธเจผเฉ€เจฒ เจ•เจจเฉˆเจ•เจธเจผเจจเจพเจ‚ เจฆเฉ€ เจจเจฟเจ—เจฐเจพเจจเฉ€ เจ•เจฐเฉ‡เจ—เจพ เจ…เจคเฉ‡ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ‡ เจฐเฉ‚เจชเจพเจ‚เจคเจฐเจจ เจ•เจฐเฉ‡เจ—เจพเฅค เจ‡เฉฑเจฅเฉ‡ เจ•เจˆ เจธเฉ‚เจ–เจฎเจคเจพ เจนเจจ. เจธเจญ เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจ• เจŸเฉˆเจฒเฉ€เจ•เจพเจฎ เจ†เจชเจฐเฉ‡เจŸเจฐ เจฆเฉ‡ เจชเฉˆเจฎเจพเจจเฉ‡ 'เจคเฉ‡ 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

เจธเจพเจฐเฉ‡ เจชเฉเจฐเจธเจพเจฐเจฃเจพเจ‚ เจจเฉ‚เฉฐ เจธเจŸเฉ‹เจฐ เจ•เจฐเจจ เจตเจพเจฒเฉ€ เจนเฉˆเจธเจผ เจŸเฉ‡เจฌเจฒ เจฒเจˆ เจฌเจพเจฒเจŸเฉ€เจ†เจ‚ เจฆเฉ€ เจ—เจฟเจฃเจคเฉ€ เจตเจงเจพเจ‰เจฃเฉ€ เจตเฉ€ เจœเจผเจฐเฉ‚เจฐเฉ€ เจนเฉˆ (เจ‡เจน nf_conntrack เจฎเฉ‹เจกเฉ€เจŠเจฒ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจตเจฟเจ•เจฒเจช เจนเฉˆ):

options nf_conntrack hashsize=1572864

เจ‡เจนเจจเจพเจ‚ เจธเจงเจพเจฐเจฃ เจนเฉ‡เจฐเจพเจซเฉ‡เจฐเฉ€เจ†เจ‚ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจ‡เฉฑเจ• เจชเฉ‚เจฐเฉ€ เจคเจฐเฉเจนเจพเจ‚ เจ•เฉฐเจฎ เจ•เจฐเจจ เจตเจพเจฒเจพ เจกเจฟเจœเจผเจพเจˆเจจ เจชเฉเจฐเจพเจชเจค เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ เจœเฉ‹ เจตเฉฑเจกเฉ€ เจ—เจฟเจฃเจคเฉ€ เจตเจฟเฉฑเจš เจ•เจฒเจพเจ‡เฉฐเจŸ เจชเจคเจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจฌเจพเจนเจฐเฉ€ เจชเฉ‚เจฒ เจตเจฟเฉฑเจš เจ…เจจเฉเจตเจพเจฆ เจ•เจฐ เจธเจ•เจฆเจพ เจนเฉˆ. เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจ‡เจธ เจนเฉฑเจฒ เจฆเฉ€ เจ•เจพเจฐเจ—เฉเจœเจผเจพเจฐเฉ€ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ‡ เจนเฉ‹เจฃ เจฒเจˆ เจฌเจนเฉเจค เจ•เฉเจ เจ›เฉฑเจกเจฆเฉ€ เจนเฉˆ. NAT (เจฒเจ—เจญเจ— 2013) เจฒเจˆ GNU/Linux เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฆเฉ€เจ†เจ‚ เจฎเฉ‡เจฐเฉ€เจ†เจ‚ เจชเจนเจฟเจฒเฉ€เจ†เจ‚ เจ•เฉ‹เจธเจผเจฟเจธเจผเจพเจ‚ เจตเจฟเฉฑเจš, เจฎเฉˆเจ‚ เจชเฉเจฐเจคเฉ€ เจธเจฐเจตเจฐ (Xeon E7-0.8v5) 1650Mpps 'เจคเฉ‡ เจฒเจ—เจญเจ— 2Gbit/s เจฆเฉ€ เจ•เจพเจฐเจ—เฉเจœเจผเจพเจฐเฉ€ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจ เจฆเฉ‡ เจฏเฉ‹เจ— เจธเฉ€เฅค เจ‰เจธ เจธเจฎเฉ‡เจ‚ เจคเฉ‹เจ‚, GNU/Linux เจ•เจฐเจจเจฒ เจจเฉˆเฉฑเจŸเจตเจฐเจ• เจธเจŸเฉˆเจ• เจตเจฟเฉฑเจš เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ เจตเฉฑเจ–-เจตเฉฑเจ– เจ…เจจเฉเจ•เฉ‚เจฒเจจ เจ•เฉ€เจคเฉ‡ เจ—เจ เจนเจจ, เจ‰เจธเฉ‡ เจนเจพเจฐเจกเจตเฉ‡เจ…เจฐ 'เจคเฉ‡ เจ‡เฉฑเจ• เจธเจฐเจตเจฐ เจฆเฉ€ เจ•เจพเจฐเจ—เฉเจœเจผเจพเจฐเฉ€ 18-19 Mpps 'เจคเฉ‡ เจฒเจ—เจญเจ— 1.8-1.9 Gbit/s เจคเฉฑเจ• เจตเจง เจ—เจˆ เจนเฉˆ (เจ‡เจน เจตเฉฑเจง เจคเฉ‹เจ‚ เจตเฉฑเจง เจฎเฉเฉฑเจฒ เจธเจจ) , เจชเจฐ เจ‡เฉฑเจ• เจธเจฐเจตเจฐ เจฆเฉเจ†เจฐเจพ เจธเฉฐเจธเจพเจงเจฟเจค เจŸเฉเจฐเฉˆเจซเจฟเจ• เจตเจพเจฒเฉ€เจ…เจฎ เจฆเฉ€ เจฎเฉฐเจ— เจฌเจนเฉเจค เจคเฉ‡เจœเจผเฉ€ เจจเจพเจฒ เจตเจงเฉ€ เจนเฉˆเฅค เจจเจคเฉ€เจœเฉ‡ เจตเจœเฉ‹เจ‚, เจตเฉฑเจ–-เจตเฉฑเจ– เจธเจฐเจตเจฐเจพเจ‚ 'เจคเฉ‡ เจฒเฉ‹เจก เจจเฉ‚เฉฐ เจธเฉฐเจคเฉเจฒเจฟเจค เจ•เจฐเจจ เจฒเจˆ เจฏเฉ‹เจœเจจเจพเจตเจพเจ‚ เจตเจฟเจ•เจธเจฟเจค เจ•เฉ€เจคเฉ€เจ†เจ‚ เจ—เจˆเจ†เจ‚ เจธเจจ, เจชเจฐ เจ‡เจธ เจธเจญ เจจเฉ‡ เจชเฉเจฐเจฆเจพเจจ เจ•เฉ€เจคเฉ€เจ†เจ‚ เจธเฉ‡เจตเจพเจตเจพเจ‚ เจฆเฉ€ เจ—เฉเจฃเจตเฉฑเจคเจพ เจจเฉ‚เฉฐ เจธเจฅเจพเจชเจค เจ•เจฐเจจ, เจธเจพเจ‚เจญ-เจธเฉฐเจญเจพเจฒ เจ•เจฐเจจ เจ…เจคเฉ‡ เจฌเจฃเจพเจˆ เจฐเฉฑเจ–เจฃ เจฆเฉ€ เจ—เฉเฉฐเจเจฒเจคเจพ เจจเฉ‚เฉฐ เจตเจงเจพ เจฆเจฟเฉฑเจคเจพเฅค

NFT เจŸเฉ‡เจฌเจฒ

เจ…เฉฑเจœเจ•เฉฑเจฒเฉเจน, เจธเฉŒเจซเจŸเจตเฉ‡เจ…เจฐ "เจฌเฉˆเจ— เจฌเจฆเจฒเจฃ" เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจซเฉˆเจธเจผเจจเฉ‡เจฌเจฒ เจฐเฉเจเจพเจจ DPDK เจ…เจคเฉ‡ XDP เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจนเฉˆเฅค เจ‡เจธ เจตเจฟเจธเจผเฉ‡ 'เจคเฉ‡ เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ เจฒเฉ‡เจ– เจฒเจฟเจ–เฉ‡ เจ—เจ เจนเจจ, เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ เจตเฉฑเจ–-เจตเฉฑเจ– เจญเจพเจธเจผเจฃ เจฆเจฟเฉฑเจคเฉ‡ เจ—เจ เจนเจจ, เจ…เจคเฉ‡ เจตเจชเจพเจฐเจ• เจ‰เจคเจชเจพเจฆ เจฆเจฟเจ–เจพเจˆ เจฆเฉ‡ เจฐเจนเฉ‡ เจนเจจ (เจ‰เจฆเจพเจนเจฐเจฃ เจตเจœเฉ‹เจ‚, เจตเฉˆเจธเจเจ•เจธเจชเจฐเจŸเจธ เจคเฉ‹เจ‚ SKAT). เจชเจฐ เจŸเฉˆเจฒเฉ€เจ•เจพเจฎ เจ“เจชเจฐเฉ‡เจŸเจฐเจพเจ‚ เจฆเฉ‡ เจธเฉ€เจฎเจค เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎเจฟเฉฐเจ— เจธเจฐเฉ‹เจคเจพเจ‚ เจฆเฉ‡ เจฎเฉฑเจฆเฉ‡เจจเจœเจผเจฐ, เจ‡เจนเจจเจพเจ‚ เจซเจฐเฉ‡เจฎเจตเจฐเจ• เจฆเฉ‡ เจ…เจงเจพเจฐ เจคเฉ‡ เจ†เจชเจฃเฉ‡ เจ†เจช เจ•เฉ‹เจˆ เจตเฉ€ "เจ‰เจคเจชเจพเจฆ" เจฌเจฃเจพเจ‰เจฃเจพ เจ•เจพเจซเจผเฉ€ เจฎเฉเจธเจผเจ•เจฒ เจนเฉˆเฅค เจญเจตเจฟเฉฑเจ– เจตเจฟเฉฑเจš เจ…เจœเจฟเจนเฉ‡ เจนเฉฑเจฒ เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃเจพ เจฌเจนเฉเจค เจฎเฉเจธเจผเจ•เจฒ เจนเฉ‹เจตเฉ‡เจ—เจพ; เจ–เจพเจธ เจคเฉŒเจฐ 'เจคเฉ‡, เจกเจพเจ‡เจ—เจจเฉŒเจธเจŸเจฟเจ• เจŸเฉ‚เจฒ เจตเจฟเจ•เจธเจค เจ•เจฐเจจเฉ‡ เจชเฉˆเจฃเจ—เฉ‡เฅค เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, DPDK เจฆเฉ‡ เจจเจพเจฒ เจธเจŸเฉˆเจ‚เจกเจฐเจก tcpdump เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจ•เฉฐเจฎ เจจเจนเฉ€เจ‚ เจ•เจฐเฉ‡เจ—เจพ, เจ…เจคเฉ‡ เจ‡เจน XDP เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจตเจพเจ‡เจฐเจพเจ‚ เจจเฉ‚เฉฐ เจตเจพเจชเจธ เจญเฉ‡เจœเฉ‡ เจ—เจ เจชเฉˆเจ•เฉ‡เจŸเจพเจ‚ เจจเฉ‚เฉฐ "เจตเฉ‡เจ–เฉ‹" เจจเจนเฉ€เจ‚ เจ•เจฐเฉ‡เจ—เจพเฅค เจฏเฉ‚เจœเจผเจฐ-เจธเจชเฉ‡เจธ เจตเจฟเฉฑเจš เจชเฉˆเจ•เฉ‡เจŸ เจซเจพเจฐเจตเจฐเจกเจฟเฉฐเจ— เจจเฉ‚เฉฐ เจ†เจ‰เจŸเจชเฉเฉฑเจŸ เจ•เจฐเจจ เจฒเจˆ เจจเจตเฉ€เจ†เจ‚ เจคเจ•เจจเฉ€เจ•เจพเจ‚ เจฌเจพเจฐเฉ‡ เจธเจพเจฐเฉ€เจ†เจ‚ เจ—เฉฑเจฒเจพเจ‚ เจฆเฉ‡ เจตเจฟเจšเจ•เจพเจฐ, เจ‰เจนเจจเจพเจ‚ เจฆเจพ เจงเจฟเจ†เจจ เจจเจนเฉ€เจ‚ เจ—เจฟเจ† เจฐเจฟเจชเฉ‹เจฐเจŸ ะธ เจฒเฉ‡เจ– เจชเจพเจฌเจฒเฉ‹ เจจเฉ€เจฐเจพ เจ†เจฏเฉ‚เจธเฉ‹, iptables เจฎเฉ‡เจจเจŸเฉ‡เจจเจฐ, nftables เจตเจฟเฉฑเจš เจซเจฒเฉ‹ เจ†เจซเจฒเฉ‹เจกเจฟเฉฐเจ— เจฆเฉ‡ เจตเจฟเจ•เจพเจธ เจฌเจพเจฐเฉ‡เฅค เจ†เจ‰ เจ‡เจธ เจตเจฟเจงเฉ€ เจจเฉ‚เฉฐ เจนเฉ‹เจฐ เจตเจฟเจธเจฅเจพเจฐ เจตเจฟเฉฑเจš เจตเฉ‡เจ–เฉ€เจ.

เจฎเฉเฉฑเจ– เจตเจฟเจšเจพเจฐ เจ‡เจน เจนเฉˆ เจ•เจฟ เจœเฉ‡เจ•เจฐ เจฐเจพเจŠเจŸเจฐ เจตเจนเจพเจ… เจฆเฉ‡ เจฆเฉ‹เจตเฉ‡เจ‚ เจฆเจฟเจธเจผเจพเจตเจพเจ‚ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจธเฉˆเจธเจผเจจ เจคเฉ‹เจ‚ เจชเฉˆเจ•เฉ‡เจŸ เจชเจพเจธ เจ•เจฐเจฆเจพ เจนเฉˆ (เจŸเฉ€เจธเฉ€เจชเฉ€ เจธเฉˆเจธเจผเจจ เจธเจฅเจพเจชเจค เจธเจฅเจฟเจคเฉ€ เจตเจฟเฉฑเจš เจšเจฒเจพ เจ—เจฟเจ†), เจคเจพเจ‚ เจ‡เจธ เจธเฉˆเจธเจผเจจ เจฆเฉ‡ เจ…เจ—เจฒเฉ‡ เจชเฉˆเจ•เฉ‡เจŸ เจจเฉ‚เฉฐ เจธเจพเจฐเฉ‡ เจซเจพเจ‡เจฐเจตเจพเจฒ เจจเจฟเจฏเจฎเจพเจ‚ เจฆเฉเจ†เจฐเจพ เจชเจพเจธ เจ•เจฐเจจ เจฆเฉ€ เจ•เฉ‹เจˆ เจฒเฉ‹เฉœ เจจเจนเฉ€เจ‚ เจนเฉˆ, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ‡เจน เจธเจพเจฐเฉ‡ เจšเฉˆเจ• เจ…เจœเฉ‡ เจตเฉ€ เจชเฉˆเจ•เฉ‡เจŸ เจจเฉ‚เฉฐ เจฐเฉ‚เจŸเจฟเฉฐเจ— เจตเจฟเฉฑเจš เจคเจฌเจฆเฉ€เจฒ เจ•เฉ€เจคเฉ‡ เจœเจพเจฃ เจฆเฉ‡ เจจเจพเจฒ เจ–เจคเจฎ เจนเฉ‹ เจœเจพเจฃเจ—เฉ‡เฅค เจ…เจคเฉ‡ เจธเจพเจจเฉ‚เฉฐ เจ…เจธเจฒ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจฐเฉ‚เจŸ เจšเฉเจฃเจจ เจฆเฉ€ เจœเจผเจฐเฉ‚เจฐเจค เจจเจนเฉ€เจ‚ เจนเฉˆ - เจ…เจธเฉ€เจ‚ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจœเจพเจฃเจฆเฉ‡ เจนเจพเจ‚ เจ•เจฟ เจ‡เจธ เจธเฉˆเจธเจผเจจ เจตเจฟเฉฑเจš เจธเจพเจจเฉ‚เฉฐ เจ•เจฟเจนเฉœเฉ‡ เจ‡เฉฐเจŸเจฐเจซเฉ‡เจธ เจ…เจคเฉ‡ เจ•เจฟเจธ เจฎเฉ‡เจœเจผเจฌเจพเจจ เจจเฉ‚เฉฐ เจชเฉˆเจ•เฉ‡เจŸ เจญเฉ‡เจœเจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆเฅค เจ‡เจธ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจจเฉ‚เฉฐ เจธเจŸเฉ‹เจฐ เจ•เจฐเจจเจพ เจ…เจคเฉ‡ เจชเฉˆเจ•เฉ‡เจŸ เจชเฉเจฐเฉ‹เจธเฉˆเจธเจฟเฉฐเจ— เจฆเฉ‡ เจธเจผเฉเจฐเฉ‚เจ†เจคเฉ€ เจชเฉœเจพเจ… 'เจคเฉ‡ เจฐเฉ‚เจŸเจฟเฉฐเจ— เจฒเจˆ เจ‡เจธเจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเจพ เจฌเจพเจ•เฉ€ เจนเฉˆเฅค NAT เจ•เจฐเจจ เจตเฉ‡เจฒเฉ‡, nf_conntrack เจฎเฉ‹เจกเฉ€เจŠเจฒ เจฆเฉเจ†เจฐเจพ เจ…เจจเฉเจตเจพเจฆ เจ•เฉ€เจคเฉ‡ เจชเจคเจฟเจ†เจ‚ เจ…เจคเฉ‡ เจชเฉ‹เจฐเจŸเจพเจ‚ เจตเจฟเฉฑเจš เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจฌเจพเจฐเฉ‡ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจจเฉ‚เฉฐ เจตเจพเจงเฉ‚ เจธเจŸเฉ‹เจฐ เจ•เจฐเจจเจพ เจœเจผเจฐเฉ‚เจฐเฉ€ เจนเฉˆเฅค เจนเจพเจ‚, เจฌเฉ‡เจธเจผเฉฑเจ•, เจ‡เจธ เจ•เฉ‡เจธ เจตเจฟเฉฑเจš เจตเฉฑเจ–-เจตเฉฑเจ– เจชเฉเจฒเจฟเจธ เจ…เจคเฉ‡ iptables เจตเจฟเฉฑเจš เจนเฉ‹เจฐ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจ…เจคเฉ‡ เจ…เฉฐเจ•เฉœเจพ เจจเจฟเจฏเจฎ เจ•เฉฐเจฎ เจ•เจฐเจจเจพ เจฌเฉฐเจฆ เจ•เจฐ เจฆเจฟเฉฐเจฆเฉ‡ เจนเจจ, เจชเจฐ เจ‡เฉฑเจ• เจตเฉฑเจ–เจฐเฉ‡ เจธเจŸเฉˆเจ‚เจกเจฟเฉฐเจ— NAT เจœเจพเจ‚, เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจ‡เฉฑเจ• เจฌเจพเจฐเจกเจฐ เจฆเฉ‡ เจ•เฉฐเจฎ เจฆเฉ‡ เจขเจพเจ‚เจšเฉ‡ เจฆเฉ‡ เจ…เฉฐเจฆเจฐ, เจ‡เจน เจ‡เฉฐเจจเจพ เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจจเจนเฉ€เจ‚ เจนเฉˆ, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจธเฉ‡เจตเจพเจตเจพเจ‚. เจกเจฟเจตเจพเจˆเจธเจพเจ‚ เจตเจฟเฉฑเจš เจตเฉฐเจกเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจจเฅค

เจ•เฉŒเจจเจซเจฟเจ—เจฐเฉ‡เจธเจผเจจ

เจ‡เจธ เจซเฉฐเจ•เจธเจผเจจ เจจเฉ‚เฉฐ เจตเจฐเจคเจฃ เจฒเจˆ เจธเจพเจจเฉ‚เฉฐ เจฒเฉ‹เฉœ เจนเฉˆ:

  • เจ‡เฉฑเจ• เจคเจพเจœเจผเจพ เจ•เจฐเจจเจฒ เจตเจฐเจคเฉ‹. เจ‡เจธ เจคเฉฑเจฅ เจฆเฉ‡ เจฌเจพเจตเจœเฉ‚เจฆ เจ•เจฟ เจ•เจพเจฐเจœเจธเจผเฉ€เจฒเจคเจพ เจ†เจชเจฃเฉ‡ เจ†เจช เจ•เจฐเจจเจฒ 4.16 เจตเจฟเฉฑเจš เจชเฉเจฐเจ—เจŸ เจนเฉ‹เจˆ, เจ•เจพเจซเจผเฉ€ เจฒเฉฐเจฌเฉ‡ เจธเจฎเฉ‡เจ‚ เจคเฉ‹เจ‚ เจ‡เจน เจฌเจนเฉเจค "เจ•เฉฑเจšเจพ" เจธเฉ€ เจ…เจคเฉ‡ เจจเจฟเจฏเจฎเจค เจคเฉŒเจฐ 'เจคเฉ‡ เจ•เจฐเจจเจฒ เจชเฉˆเจจเจฟเจ• เจฆเจพ เจ•เจพเจฐเจจ เจฌเจฃเจฆเจพ เจธเฉ€เฅค เจฆเจธเฉฐเจฌเจฐ 2019 เจฆเฉ‡ เจ†เจธเจชเจพเจธ เจธเจญ เจ•เฉเจ เจธเจฅเจฟเจฐ เจนเฉ‹ เจ—เจฟเจ†, เจœเจฆเฉ‹เจ‚ LTS เจ•เจฐเจจเจฒ 4.19.90 เจ…เจคเฉ‡ 5.4.5 เจœเจพเจฐเฉ€ เจ•เฉ€เจคเฉ‡ เจ—เจ เจธเจจเฅค
  • nftables เจฆเฉ‡ เจฌเจฟเจฒเจ•เฉเจฒ เจคเจพเจœเจผเจพ เจธเฉฐเจธเจ•เจฐเจฃ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ iptables เจฆเฉ‡ เจจเจฟเจฏเจฎเจพเจ‚ เจจเฉ‚เฉฐ nftables เจซเจพเจฐเจฎเฉˆเจŸ เจตเจฟเฉฑเจš เจฆเฉเจฌเจพเจฐเจพ เจฒเจฟเจ–เฉ‹เฅค เจธเฉฐเจธเจ•เจฐเจฃ 0.9.0 เจตเจฟเฉฑเจš เจฌเจฟเจฒเจ•เฉเจฒ เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจนเฉˆ

เจœเฉ‡ เจธเจฟเจงเจพเจ‚เจค เจตเจฟเฉฑเจš เจธเจญ เจ•เฉเจ เจชเจนเจฟเจฒเฉ‡ เจฌเจฟเฉฐเจฆเฉ‚ เจจเจพเจฒ เจธเจชเฉฑเจธเจผเจŸ เจนเฉˆ, เจคเจพเจ‚ เจฎเฉเฉฑเจ– เจ—เฉฑเจฒ เจ‡เจน เจนเฉˆ เจ•เจฟ เจ…เจธเฉˆเจ‚เจฌเจฒเฉ€ (CONFIG_NFT_FLOW_OFFLOAD=m) เจฆเฉ‡ เจฆเฉŒเจฐเจพเจจ เจธเฉฐเจฐเจšเจจเจพ เจตเจฟเฉฑเจš เจฎเฉ‹เจกเฉ€เจŠเจฒ เจจเฉ‚เฉฐ เจธเจผเจพเจฎเจฒ เจ•เจฐเจจเจพ เจจเจพ เจญเฉเฉฑเจฒเฉ‹, เจซเจฟเจฐ เจฆเฉ‚เจœเฉ‡ เจฌเจฟเฉฐเจฆเฉ‚ เจฒเจˆ เจตเจฟเจ†เจ–เจฟเจ† เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆเฅค nftables เจจเจฟเจฏเจฎเจพเจ‚ เจจเฉ‚เฉฐ iptables เจจเจพเจฒเฉ‹เจ‚ เจฌเจฟเจฒเจ•เฉเจฒ เจตเฉฑเจ–เจฐเฉ‡ เจคเจฐเฉ€เจ•เฉ‡ เจจเจพเจฒ เจฆเฉฑเจธเจฟเจ† เจ—เจฟเจ† เจนเฉˆเฅค เจฆเจธเจคเจพเจตเฉ‡เจœเจผ เจฒเจ—เจญเจ— เจธเจพเจฐเฉ‡ เจฌเจฟเฉฐเจฆเฉ‚เจ†เจ‚ เจจเฉ‚เฉฐ เจชเฉเจฐเจ—เจŸ เจ•เจฐเจฆเจพ เจนเฉˆ, เจ–เจพเจธ เจตเฉ€ เจนเจจ เจชเจฐเจฟเจตเจฐเจคเจ• iptables เจคเฉ‹เจ‚ nftables เจคเฉฑเจ• เจจเจฟเจฏเจฎเฅค เจ‡เจธ เจฒเจˆ, เจฎเฉˆเจ‚ เจธเจฟเจฐเจซ NAT เจ…เจคเฉ‡ เจซเจฒเฉ‹ เจ†เจซเจฒเฉ‹เจก เจธเจฅเจพเจชเจค เจ•เจฐเจจ เจฆเฉ€ เจ‡เฉฑเจ• เจ‰เจฆเจพเจนเจฐเจฃ เจฆเฉ‡เจตเจพเจ‚เจ—เจพ. เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ เจ‡เฉฑเจ• เจ›เฉ‹เจŸเฉ€ เจœเจฟเจนเฉ€ เจ•เจฅเจพ: , - เจ‡เจน เจ‰เจน เจจเฉˆเจŸเจตเจฐเจ• เจ‡เฉฐเจŸเจฐเจซเฉ‡เจธ เจนเจจ เจœเจฟเจจเฉเจนเจพเจ‚ เจฐเจพเจนเฉ€เจ‚ เจ†เจตเจพเจœเจพเจˆ เจฒเฉฐเจ˜เจฆเฉ€ เจนเฉˆ; เจ…เจธเจฒ เจตเจฟเฉฑเจš เจ‰เจนเจจเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจฆเฉ‹ เจคเฉ‹เจ‚ เจตเฉฑเจง เจนเฉ‹ เจธเจ•เจฆเฉ‡ เจนเจจเฅค , โ€” โ€œเจšเจฟเฉฑเจŸเฉ‡โ€ เจชเจคเจฟเจ†เจ‚ เจฆเฉ€ เจฐเฉ‡เจ‚เจœ เจฆเจพ เจธเจผเฉเจฐเฉ‚เจ†เจคเฉ€ เจ…เจคเฉ‡ เจ…เฉฐเจค เจฆเจพ เจชเจคเจพเฅค

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
        }
}

เจชเฉเจฐเจตเจพเจน เจ”เจซเจฒเฉ‹เจก เจฆเฉ‡ เจจเจพเจฒ เจ‡เจน เจฅเฉ‹เฉœเจพ เจนเฉ‹เจฐ เจ—เฉเฉฐเจเจฒเจฆเจพเจฐ เจนเฉˆ, เจชเจฐ เจ•เจพเจซเจผเฉ€ เจธเจฎเจเจฃ เจฏเฉ‹เจ— เจนเฉˆ:

#! /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 เจŸเฉเจฐเฉˆเจซเจฟเจ• เจซเจพเจธเจŸเจจเฉˆเจŸ เจŸเฉ‡เจฌเจฒ เจตเจฟเฉฑเจš เจ† เจœเจพเจตเฉ‡เจ—เจพ เจ…เจคเฉ‡ เจฌเจนเฉเจค เจคเฉ‡เจœเจผเฉ€ เจจเจพเจฒ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจ•เฉ€เจคเฉ€ เจœเจพเจตเฉ‡เจ—เฉ€เฅค

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

เจ‡เจน เจธเจชเฉฑเจธเจผเจŸ เจ•เจฐเจจ เจฒเจˆ เจ•เจฟ เจ‡เจน เจ•เจฟเฉฐเจจเจพ "เจฌเจนเฉเจค เจคเฉ‡เจœเจผ" เจนเฉˆ, เจฎเฉˆเจ‚ เจฆเฉ‹ เจ…เจธเจฒ เจธเจฐเจตเจฐเจพเจ‚ 'เจคเฉ‡ เจฒเฉ‹เจก เจฆเจพ เจ‡เฉฑเจ• เจธเจ•เฉเจฐเฉ€เจจเจธเจผเฉŒเจŸ เจจเฉฑเจฅเฉ€ เจ•เจฐเจพเจ‚เจ—เจพ, เจ‰เจธเฉ‡ เจนเจพเจฐเจกเจตเฉ‡เจ…เจฐ (Xeon E5-1650v2) เจฆเฉ‡ เจจเจพเจฒ, เจ‡เฉฑเจ•เฉ‹ เจœเจฟเจนเฉ‡ เจฒเฉ€เจจเจ•เจธ เจ•เจฐเจจเจฒ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ, เจ‡เฉฑเจ•เฉ‹ เจœเจฟเจนเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจธเฉฐเจฐเจšเจฟเจค เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ, เจชเจฐ iptables เจตเจฟเฉฑเจš NAT เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจ•เจฐ เจฐเจฟเจนเจพ เจนเฉˆเฅค (NAT4) เจ…เจคเฉ‡ nftables (NAT5) เจตเจฟเฉฑเจšเฅค

เจฒเฉ€เจจเจ•เจธ เจตเจฟเฉฑเจš เจคเฉ‡เจœเจผ เจฐเจพเจŠเจŸเจฟเฉฐเจ— เจ…เจคเฉ‡ NAT

เจธเจ•เจฐเฉ€เจจเจธเจผเจพเจŸ เจตเจฟเฉฑเจš เจชเฉเจฐเจคเฉ€ เจธเจ•เจฟเฉฐเจŸ เจชเฉˆเจ•เฉ‡เจŸเจพเจ‚ เจฆเจพ เจ•เฉ‹เจˆ เจ—เฉเจฐเจพเจซเจผ เจจเจนเฉ€เจ‚ เจนเฉˆ, เจชเจฐ เจ‡เจนเจจเจพเจ‚ เจธเจฐเจตเจฐเจพเจ‚ เจฆเฉ‡ เจฒเฉ‹เจก เจชเฉเจฐเฉ‹เจซเจพเจˆเจฒ เจตเจฟเฉฑเจš เจ”เจธเจค เจชเฉˆเจ•เฉ‡เจŸ เจฆเจพ เจ†เจ•เจพเจฐ เจฒเจ—เจญเจ— 800 เจฌเจพเจˆเจŸ เจนเฉˆ, เจ‡เจธเจฒเจˆ เจฎเฉเฉฑเจฒ 1.5Mpps เจคเฉฑเจ• เจชเจนเฉเฉฐเจšเจฆเฉ‡ เจนเจจเฅค เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจคเฉเจธเฉ€เจ‚ เจตเฉ‡เจ– เจธเจ•เจฆเฉ‡ เจนเฉ‹, nftables เจตเจพเจฒเฉ‡ เจธเจฐเจตเจฐ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจตเจฟเจธเจผเจพเจฒ เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจฐเจฟเจœเจผเจฐเจต เจนเฉˆ. เจตเจฐเจคเจฎเจพเจจ เจตเจฟเฉฑเจš, เจ‡เจน เจธเจฐเจตเจฐ 30Mpps 'เจคเฉ‡ 3Gbit/s เจคเฉฑเจ• เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจ•เจฐเจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ CPU เจธเจฐเฉ‹เจคเจพเจ‚ เจฆเฉ‡ เจจเจพเจฒ, 40Gbps เจฆเฉ€ เจญเฉŒเจคเจฟเจ• เจจเฉˆเฉฑเจŸเจตเจฐเจ• เจธเฉ€เจฎเจพ เจจเฉ‚เฉฐ เจชเฉ‚เจฐเจพ เจ•เจฐเจจ เจฆเฉ‡ เจธเจชเฉฑเจธเจผเจŸ เจคเฉŒเจฐ 'เจคเฉ‡ เจธเจฎเจฐเฉฑเจฅ เจนเฉˆเฅค

เจฎเฉˆเจจเฉ‚เฉฐ เจ‰เจฎเฉ€เจฆ เจนเฉˆ เจ•เจฟ เจ‡เจน เจธเจฎเฉฑเจ—เจฐเฉ€ เจ‰เจนเจจเจพเจ‚ เจฆเฉ‡ เจธเจฐเจตเจฐเจพเจ‚ เจฆเฉ€ เจ•เจพเจฐเจ—เฉเจœเจผเจพเจฐเฉ€ เจจเฉ‚เฉฐ เจฌเจฟเจนเจคเจฐ เจฌเจฃเจพเจ‰เจฃ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เจฐ เจฐเจนเฉ‡ เจจเฉˆเจŸเจตเจฐเจ• เจ‡เฉฐเจœเฉ€เจจเฉ€เจ…เจฐเจพเจ‚ เจฒเจˆ เจ‰เจชเจฏเฉ‹เจ—เฉ€ เจนเฉ‹เจตเฉ‡เจ—เฉ€เฅค

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹