IPv4 ááááşá
áŹááťáŹá¸ ááŻááşááŻáśá¸ááŹáááşáážááˇáşáĄááťáž áááşááŽáá˝ááşá¸áĄáąáŹáşáááąááŹááťáŹá¸á
á˝áŹáááş ááááşá
áŹááŹááŹááźááşááźááşá¸ááᯠáĄááŻáśá¸ááźáŻá áááşá¸áááŻáˇáááąáŹááşáááşááťáŹá¸áĄáŹá¸ áá˝ááşáááşáááşááąáŹááşáá˝ááˇáşááᯠááąá¸ááąáŹááşáááş áááŻáĄááşáážáŻáážááˇáş áááşáááŻááşááąááááşá á¤ááąáŹááşá¸ááŤá¸áá˝ááş ááŻááşá
ááşááŹááŹááťáŹá¸áá˝ááş Carrier Grade NAT á
á˝ááşá¸ááąáŹááşáááşááᯠáááşáááşáááŻáˇááááŻááşáááşááᯠááťá˝ááşáŻááşááźáąáŹááźááŤáááşá
áĄáááşá¸áááşááąáŹááááŻááşá¸
IPv4 ááááşá áŹááąááŹááŻááşáááşá¸ááźááşá¸á ááąáŤááşá¸á ááşáááş áĄáá áşáááŻááşááąáŹáˇááŤá áá áşááťáááşááťáááşáá˝ááşá á áąáŹááˇáşáááŻááşá¸á áŹáááşá¸ááťáŹá¸áááş RIPE áá˝ááşááąáŤáşááŹááźáŽá¸ áááşáááˇáşááááşá áŹááŻáśá¸ááťáŹá¸ááᯠááąáŹááşá¸áááşááąáŹááşááŹá¸ááźáŽá¸ áááşá¸áááŻáˇááᯠáážáŹá¸áááşá¸áááş áááąáŹáá°ááŽááťááşááťáŹá¸ ááąáŹááşááťááşááťáᏠááážááşáážáŻááťáŹá¸ áá˝ááşááąáŤáşááŹáááşá áááźááşá¸ááźááşá¸á áááşááŽáá˝ááşá¸áĄáąáŹáşáááąááŹááťáŹá¸áááş ááááşá áŹáážááˇáş ááááşáááşá¸ááŹááŹááźááşááźááşá¸ááᯠáĄááŻáśá¸ááźáŻá áĄááşááŹáááşáĄááŻáśá¸ááźáŻáá˝ááˇáşáááşááąáŹááşáážáŻááťáŹá¸ááᯠá áááşááąá¸ááźáááşá áĄááťááŻáˇá á áŹáááşá¸áá˝ááşá¸áá°áááŻááşá¸áĄáá˝ááş âáĄááźá°â ááááşá áŹááŻááşááąá¸áááş ááŻáśááąáŹááşááąáŹááááşá áŹááťáŹá¸ áááážáááźááąáŹáşáááşá¸ áĄááťááŻáˇáážáŹ ááŻáááá áťáąá¸áá˝ááşáá˝ááş ááááşá áŹááťáŹá¸áááşáá°áááş ááźááşá¸áááşááźááşá¸ááźááˇáş áá˝áąá áŻááźáááşá áĄáááşááźáąáŹááˇáşáááŻááąáŹáş á¤áĄáá°áĄáááᯠáá˝ááşáááşá ááşáá ášá ááşá¸ááŻááşááŻááşáá°ááťáŹá¸ááž ááąáŹááşááśáá˛áˇááźáááşá á¤ááŻááşááąáŹááşááťááşáááş áĄááťáŹá¸áĄáŹá¸ááźááˇáş áĄáááŻáááşááąáŹááşá¸ modules áááŻáˇáááŻááş áááŻááşá ááşááťáŹá¸ áááŻáĄááşááŤáááşá áĽáááŹáĄáŹá¸ááźááˇáşá Juniper á MX routers áááŻááşá¸áá˝ááş (ááąáŹááşááŻáśá¸áá˝ááş MX104 áážááˇáş MX204 áážáá˝á˛á) áááşáááş ááŽá¸ááźáŹá¸ MS-MIC áááşááąáŹááşáážáŻáááşáá˝ááş NAPT ááŻááşááąáŹááşáááŻááşáááşá Cisco ASR1k áááş CGN áááŻááşá ááşáááŻáĄááşáááşá Cisco ASR9k áááş ááŽá¸ááźáŹá¸ A9K-ISM-100 module áá áşáᯠáááŻáĄááşáááş áážááˇáş A9K-CGN áááŻááşá ááş -LIC ááᯠáá°áˇáĄáŹá¸á ááąáá°ááťáĄáŹá¸ááźááˇáş ááťáąáŹáşáá˝ážááşáážáŻáᏠáááŻááşááśáĄááťáŹá¸ááźáŽá¸ááŻááşááŤáááşá
iptables
NAT áĄááąáŹááşáĄáááşááąáŹáşáážáŻáááş áĄáá°á¸ááźáŻáá˝ááşááťá°ááŹáĄáááşá¸áĄááźá áşááťáŹá¸ ááááŻáĄááşááŤá áááşá¸ááᯠáááşáááˇáşáĄáááşááŻáśá¸ router áá˝ááşááááŻáá˝áąáˇáážáááááˇáş áĄáá˝áąáá˝áąáááşáá˝ááşááťááşááááŻáááşááŹááťáŹá¸ááźááˇáş áááŻááşáá˝ááşáááŻááşáááşá áááşááŽáá˝ááşá¸áĄáąáŹáşáááąááŹá ááąá¸áá˝ááşá á¤áĄááŻááşááᯠFreeBSD (ipfw/pf) áááŻáˇáááŻááş GNU/ ááᯠáĄááŻáśá¸ááźáŻááąáŹ commodity server ááťáŹá¸ááᯠáĄááŻáśá¸ááźáŻá ááźáŽá¸ááźáąáŹááşáááŻááşáááşáLinux (iptables)á FreeBSD ááᯠááťá˝ááşááąáŹáşáááŻáˇ áááźááˇáşááąáŹáˇááŤáá°á¸á ááŹáááŻáˇáá˛áááŻááąáŹáˇ áĄá˛áᎠOS ááᯠááťá˝ááşááąáŹáş áĄááąáŹáşááźáŹ áááŻáśá¸ááąáŹáˇáááŻáˇááŤá ááŤááźáąáŹááˇáş GNU/ áá˛áˇáᲠáááşáá˝áŹá¸ááźááĄáąáŹááşáLinux.
ááááşá ᏠááŹááŹááźááşááźááşá¸ááᯠáá˝ááˇáşáááş ááŻáśá¸á ááááşáá˛ááŤá áŚá¸á á˝áŹ nat table áážá 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
ááŻááşáá˝ážááˇáşáážáŻáĄáŹá¸ááŻáśá¸ááᯠááááşá¸áááşá¸áááˇáş hash table áĄáá˝ááş ááŻáśá¸áĄááąáĄáá˝ááşááᯠáááŻá¸ááźážááˇáşáááşáááşá¸ áááŻáĄááşáááş (áááşá¸áááş nf_conntrack module áá˝ááş áá˝áąá¸ááťááşáážáŻáá áşááŻááźá áşáááş)á
options nf_conntrack hashsize=1572864
á¤áááŻá¸áážááşá¸ááąáŹ áááŻááşáá˝ááşáážáŻááťáŹá¸áĄááźáŽá¸áá˝ááşá client address áĄááťáŹá¸áĄááźáŹá¸ááᯠexternal address áĄá áŻáĄááąá¸áááŻáˇ broadcast ááŻááşáááŻááşáááˇáş áĄááźááˇáşáĄáááŻááşááąáŹááşáááŻááşááąáŹ ááŽáááŻááşá¸áá áşááŻááᯠááážááááşá áááŻáˇááąáŹáşá á¤ááźáąáážááşá¸ááťááşá á á˝ááşá¸ááąáŹááşáááşáážáŹ ááťážáąáŹáşáááˇáşááŹá¸áááˇáşáĄáááŻááşá¸ ááážáááŤá GNU/ ááᯠáĄááŻáśá¸ááźáŻáááş ááťá˝ááşáŻááşá áááááŻáśá¸ááźááŻá¸áááşá¸áážáŻááťáŹá¸áá˝ááşLinux NAT áĄáá˝ááş (áááá ááŻáážá áşáááşá¸ááťááş)á single server (Xeon E5-1650v2) áážáŹ 7Gbit/s áááşá¸ááťááş 0.8Mpps á á˝ááşá¸ááąáŹááşáááşááᯠááážááá˛áˇááŤáááşá áĄá˛ááŽááąáŹááşáááŻááşá¸ GNU kernel network stack/Linux áĄááąáŹááşá¸ááŻáśá¸ááźá áşáĄáąáŹááş áĄááťáŹá¸áĄááźáŹá¸ ááźáŻááŻááşáá˛áˇááźáŽá¸ áá°ááŽááąáŹ hardware ááąáŤáşáážá server áá áşááŻáááşá¸á á á˝ááşá¸ááąáŹááşáááşáááş 18-19 Mpps (áááşá¸áááŻáˇáááş áĄááźááˇáşááŻáśá¸áááşáááŻá¸ááťáŹá¸ááźá áşáááş) áá˝ááş 1.8-1.9 Gbit/s ááŽá¸ááŤá¸áĄáá ááźááˇáşáááşááŹáá˛áˇááąáŹáşáááşá¸ server áá áşááŻáááşá¸ááž áááŻááşáá˝ááşááąáŹ traffic áĄáá˝ááş ŕŚŕŚžŕŚšŕŚżŕŚŚáŹáážáŹ áááŻáááŻááźááşáááşá á˝áŹ ááźááˇáşáááşááŹáá˛áˇáááşá ááąáŹááşááŻáśá¸áá˝ááşá ááá°ááŽááąáŹ server ááťáŹá¸áĄáá˝ááş load balancing á áá áşááťáŹá¸ááᯠááŽáá˝ááşáá˛áˇááąáŹáşáááşá¸ á¤áĄááŹáĄáŹá¸ááŻáśá¸áááş setupá ááźáŻááźááşááááşá¸ááááşá¸áážáŻáážááˇáş ááąá¸áĄááşááąáŹ áááşááąáŹááşáážáŻááťáŹá¸á áĄáááşáĄáá˝áąá¸ááᯠááááşá¸ááááşá¸ááźááşá¸á áážáŻááşáá˝áąá¸áážáŻááᯠáááŻá¸ááźážááˇáşááąá¸áá˛áˇáááşá
NFTables ááťáŹá¸
áááąáˇááąááşáá˝ááşá ááąáŹáˇááşáá˛ááş âáá˝ážáąáˇááźáąáŹááşá¸áĄáááşááťáŹá¸â áá˝ááş ááąááşá áŹá¸ááŹááąáŹ ááąááşááąá áŽá¸ááźáąáŹááşá¸áážáŹ DPDK áážááˇáş XDP áááŻáˇááᯠáĄááŻáśá¸ááźáŻááźááşá¸ááźá áşáááşá á¤áĄááźáąáŹááşá¸áĄááŹáĄáá˝ááş ááąáŹááşá¸ááŤá¸ááťáŹá¸á á˝áŹááᯠááąá¸ááŹá¸áá˛áˇááźáŽá¸á ááá°ááŽááąáŹ ááááˇáşáá˝ááşá¸ááťáŹá¸á á˝áŹááᯠááźáŻááŻááşáá˛áˇááźáŽá¸ á áŽá¸áá˝áŹá¸ááźá áşááŻááşááŻááşááťáŹá¸ ááąáŤáşááŹáááş (áĽáááŹá VasExperts ááž SKAT)á áááŻáˇááąáŹáş áááşááŽáá˝ááşá¸áĄáąáŹáşáááąááŹááťáŹá¸á áĄáááˇáşáĄáááşááźááˇáş ááááŻááááşááąá¸áá˝á˛ááźááşá¸áááŻááşáᏠáĄáááşá¸áĄááźá áşááťáŹá¸ ááźáąáŹááˇáş á¤ááąáŹááşááťáŹá¸ááᯠáááˇáşáááŻááşáááŻááşáĄááąáŤáşáĄááźáąááśá áááşáááˇáş "ááŻááşááŻááş" áááŻáááᯠáááşááŽá¸áááşáážáŹ ááźáżááŹáá áşáááşááźá áşáááşá áĄááŹáááşáá˝ááş áááŻáááŻáˇááąáŹáĄááźáąáááŻááŻááşááąáŹááşáááşáážáŹ áááŻáááŻáááşáá˛ááááˇáşáááşá áĄáá°á¸áááźááˇáşá ááąáŹááŤáážáŹáá˝áąááąá¸ááááááŹááťáŹá¸ááᯠááŽáá˝ááşááááşááźá áşááŤáááşá áĽáááŹáĄáŹá¸ááźááˇáşá DPDK áážááˇáş á áś tcpdump áááş áááŻáá˛áˇáááŻáˇ áĄááŻááşáááŻááşááŤá áážááˇáş XDP ááᯠââáĄááŻáśá¸ááźáŻá ááŤááŹááťáŹá¸ááŽáááŻáˇ ááźááşáááŻáˇáááˇáş áááşááąáˇááşáťááťáŹá¸ááᯠ"ááźááşáááááˇáşáááş áááŻááşááŤá áĄááŻáśá¸ááźáŻáá°ááąááŹáááŻáˇ packet forwarding ááŻááşááąá¸ááźááşá¸áĄáá˝ááş áááşá¸áááŹáĄáá áşááťáŹá¸áĄááźáąáŹááşá¸ áá˝áąá¸áá˝áąá¸ááźáąáŹáááŻáážáŻááťáŹá¸ááźáŹá¸áá˝ááş áááşá¸áááŻáˇáááş ááááááźáŻáááá˛áˇááźááąá и Pablo Neira Ayuso á iptables ááááşá¸ááááşá¸áá° á nftables áá˝ááş flow offloading áá˝áśáˇááźááŻá¸áááŻá¸áááşáážáŻáĄááźáąáŹááşá¸á ááŽááášáááŹá¸ááᯠáĄááŽá¸áááşááąáˇááŹááźááˇáşááĄáąáŹááşá
áĄááá áĄáá°áĄááážáŹ Router áááş flow á áŚá¸áááşááŹáážá áşááŻááŻáśá¸áá˝ááş session áá áşááŻááž packet ááťáŹá¸ááᯠááťáąáŹáşáá˝áŹá¸ááŤá (TCP session áááş ESTABLISHED state áááŻáˇááąáŹááşáážááá˝áŹá¸áááş) áááŻááťážááş firewall á ááşá¸ááťááşá¸ááťáŹá¸áĄáŹá¸ááŻáśá¸ááᯠááťáąáŹáşááźááşáááş ááááŻáĄááşááąáŹááźáąáŹááˇáşá á¤á á áşááąá¸áážáŻááťáŹá¸áĄáŹá¸ááŻáśá¸áááş packet ááᯠrouting áááŻáˇ áááşááśáá˝ážá˛ááźáąáŹááşá¸ááąá¸ááźááşá¸ááźááˇáş áĄááŻáśá¸áááşááŤáááşá ááťá˝ááşáŻááşáááŻáˇáááş áĄáážááşááááşáá˝ááş áááşá¸ááźáąáŹááşá¸áá áşááŻááᯠáá˝áąá¸ááťááşáááşááááŻáĄááşá፠- ááťá˝ááşáŻááşáááŻáˇáááş áááşáááˇáş interface áážááˇáş áááşáááˇáş host ááᯠá¤á ááşáážááşáĄáá˝ááşá¸ packet ááťáŹá¸ááąá¸áááŻáˇáááş áááŻáĄááşáááşááᯠááťá˝ááşáŻááşáááŻáˇ ááááŹá¸ááźáŽá¸ááźá áşáááşá ááťááşááŹáĄáŹá¸ááŻáśá¸á ááŽáĄááťááşáĄáááşáá˝áąááᯠááááşá¸áááşá¸ááźáŽá¸ packet processing áá˛áˇ áĄá áąáŹáááŻááşá¸áĄáááˇáşáážáŹ áááşá¸ááźáąáŹááşá¸ááźáąáŹááşá¸áááŻáˇáĄáá˝ááş áĄááŻáśá¸ááźáŻááŤáááşá NAT áááŻááŻááşááąáŹááşááąáŹáĄááŤá nf_conntrack module áážááźááşáááŻááŹá¸ááąáŹááááşá áŹááťáŹá¸áážááˇáş port ááťáŹá¸áááŻááşááŹááźáąáŹááşá¸áá˛áážáŻááťáŹá¸áážááˇáşáááşáááşááąáŹáĄááťááşáĄáááşááťáŹá¸áááŻáááşááśááááşá¸áááşá¸áááşáááŻáĄááşáááşá ááŻááşááŤáááşá á¤ááá ášá áá˝ááşá iptables áážá áá˛áááşáá˝á˛áˇáááşááťáŹá¸áážááˇáş áĄááźáŹá¸áĄááťááşáĄáááşáážááˇáş ááááşá¸ááááşá¸á ááşá¸ááťááşá¸ááťáŹá¸áááş áĄááŻááşáááŻááşááąáŹáˇáᲠááŽá¸ááźáŹá¸áááşáááşááąááąáŹ NAT áááŻáˇáááŻááş áĽáááŹáĄáŹá¸ááźááˇáş áááşááźáŹá¸áá áşááŻá ááŻááşáááşá¸ááŹáááşáááąáŹááşáĄáá˝ááşá¸áá˝ááş á¤ááťážáĄááąá¸ááźáŽá¸ááąáŹ áááşááąáŹááşáážáŻááťáŹá¸ááźá áşááąáŹááźáąáŹááˇáşá á ááşáá ášá ááşá¸ááťáŹá¸áĄáážáśáˇ ááźááˇáşááąááźáááşá
configuration ááťáŹá¸
á¤ááŻááşááąáŹááşááťááşáááŻáĄááŻáśá¸ááźáŻáááş ááťá˝ááşáŻááşáááŻáˇ áááŻáĄááşáááş-
- áááşáááşááąáŹ kernel áááŻááŻáśá¸ááŤá ááŻááşááąáŹááşááťááşáááş kernel 4.16 áá˝ááş áá°áˇáááŻááşáá° ááąáŤáşááŹáá˛áˇááąáŹáşáááşá¸á áááşá¸áááş áĄááťáááşáĄááąáŹáşááźáŹ "ááŻááşááźááşá¸" ááźá áşááźáŽá¸ ááŻáśáážááş kernel áĄááááşááááˇáş ááźá áşá áąáááşá LTS kernels 2019 áážááˇáş 4.19.90 ááᯠááŻááşááźááşáááŻááşááąáŹáĄá፠5.4.5 ááŻáážá áş ááŽáááşááŹááááşá¸ááťááşáá˝ááş áĄááŹáĄáŹá¸ááŻáśá¸áááşááźáááşáá˝áŹá¸áááşá
- nftables á áááşáááąáŹááŹá¸áážááşá¸ááᯠáĄááŻáśá¸ááźáŻá iptables á ááşá¸ááťááşá¸ááťáŹá¸ááᯠnftables ááąáŹáşáááşáá˝ááş ááźááşáááşááąá¸ááŹá¸ááŤá ááŹá¸áážááşá¸ 0.9.0 áá˝ááş áĄáááĄááťáĄááŻááşááŻááşáááşá
áá°áĄááĄááŹáĄáŹá¸ááŻáśá¸áááş ááááĄááťááşááźááˇáş áážááşá¸áááşá¸ááŤáá áĄááááĄááťááşáážáŹ áááşáááşáážáŻáĄáá˝ááşá¸ áááşáááşáážáŻáĄáá˝ááşá¸ module ááᯠáááˇáşáá˝ááşá¸áááş áááąáˇááŤáážááˇáş (CONFIG_NFT_FLOW_OFFLOAD=m)á áááŻáˇááąáŹááş ááŻááááĄááťááşáážáŹ áážááşá¸áááşá¸ááťááş áááŻáĄááşááŤáááşá nftables á ááşá¸ááťááşá¸ááťáŹá¸ááᯠiptables áážááˇáş ááŻáśá¸ááá˝á˛ááźáŹá¸á á˝áŹ ááąáŹáşááźááŹá¸ááŤáááşá áĄááťááşáĄáŹá¸ááŻáśá¸ááŽá¸ááŤá¸ááᯠááŻááşááźááąá¸ááŹááťááŻá¸áááşá¸ áážáááŤáááşá iptables ááž nftables áĄáá á ááşá¸ááťááşá¸ááťáŹá¸á áááŻáˇááźáąáŹááˇáşá ááťá˝ááşáŻááşáááş NAT á áá áşáááˇáşáá˝ááşá¸ááźááşá¸áážááˇáş á áŽá¸áááşá¸áážáŻ 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
}
}
flow 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 áááŹá¸áá˛áááŻáˇááťááŹááźáŽá¸ áááŻáááŻááźááşáááşá á˝áŹ ááŻááşááąáŹááşáááŻááşáááşááźá áşáááşá
ááááşááťáŹá¸áááŻ
ááŤáááşááąáŹááşááźááşáá˛áááŻáᏠáážááşá¸áážááşá¸áááşá¸áááşá¸ááá áąáááŻáˇáĄáá˝ááşá áá°ááŽáá˛áˇ hardware (Xeon E5-1650v2) ááᯠáá°ááŽáá˛áˇ core áááŻáĄááŻáśá¸ááźáŻááźáŽá¸ configure ááŻááşááŹá¸áá˛áˇ ááááˇáş server áážá áşááŻáážáŹ load ááŻááşááąáá˛áˇ screenshot ááᯠáá°á¸áá˝á˛ááąá¸ááŤáááşá LinuxááŤááąáááˇáş iptables (NAT4) áá˛áˇ nftables (NAT5) áážáŹ NAT ááᯠááŻááşááąáŹááşááąááŤáááşá

áááşááŹá¸ááźááşááŹááşááŻáśáá˝ááş áá
áşá
áášáááˇáşááťážááş áááşáááşááááşááážáááąáŹáşáááşá¸ á¤ááŹááŹááťáŹá¸á áááşááááŻáááŻááşáá˝ááş ááťááşá¸ááťážáááşáááşáĄáá˝ááşáĄá
áŹá¸áááş 800 bytes áááşá¸ááťááşááźá
áşááąáŹááźáąáŹááˇáş áááşáááŻá¸ááťáŹá¸áááş 1.5Mpps áĄáá ááąáŹááşáážááááşá áááşáá˝áąáˇááźááşááááˇáşáĄáááŻááşá¸á nftables ááŤááąáŹááŹááŹáá˝ááşááźáŽá¸ááŹá¸ááąáŹá
á˝ááşá¸ááąáŹááşáááşáĄááśáážááááşá ááąáŹááąáŹáááşáá˝ááşá á¤ááŹááŹáááş 30Gbit/s áĄáá 3Mpps ááźááˇáş ááŻááşááąáŹááşáááŻááşááźáŽá¸ áĄááá˛áˇ CPU áĄáááşá¸áĄááźá
áşááťáŹá¸ááŤáážáá
ááşáá˝ááş ááŻááşáááŻááşá¸áááŻááşáᏠáá˝ááşáááşáááˇáşáááşááťááş 40Gbps ááᯠááźááˇáşááŽáááŻááşáááşááźá
áşáááşá
á¤áĄááźáąáŹááşá¸áĄááŹáááş áááşá¸áááŻáˇáááŹááŹááťáŹá¸á á
á˝ááşá¸ááąáŹááşáááşááᯠááźážááˇáşáááşáááş ááźááŻá¸á
áŹá¸ááąááąáŹ áá˝ááşáááşáĄááşááťááşááŽááŹááťáŹá¸áĄáá˝ááş áĄááŻáśá¸áááşááááˇáşáááşáᯠááťážáąáŹáşáááˇáşááŤáááşá
source: www.habr.com
