āĻ˛āĻŋāĻ¨āĻžāĻ•ā§āĻ¸ā§‡ āĻĻā§āĻ°ā§āĻ¤ āĻ°āĻžāĻ‰āĻŸāĻŋāĻ‚ āĻāĻŦāĻ‚ NAT

IPv4 āĻ…ā§āĻ¯āĻžāĻĄā§āĻ°ā§‡āĻ¸āĻ—ā§āĻ˛āĻŋ āĻŦāĻ¨ā§āĻ§ āĻšāĻ¯āĻŧā§‡ āĻ¯āĻžāĻ“āĻ¯āĻŧāĻžāĻ¯āĻŧ, āĻ…āĻ¨ā§‡āĻ• āĻŸā§‡āĻ˛āĻŋāĻ•āĻŽ āĻ…āĻĒāĻžāĻ°ā§‡āĻŸāĻ° āĻ¤āĻžāĻĻā§‡āĻ° āĻ•ā§āĻ˛āĻžāĻ¯āĻŧā§‡āĻ¨ā§āĻŸāĻĻā§‡āĻ° āĻ āĻŋāĻ•āĻžāĻ¨āĻž āĻ…āĻ¨ā§āĻŦāĻžāĻĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ• āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻ•āĻ°āĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§‡āĻ° āĻ¸āĻŽā§āĻŽā§āĻ–ā§€āĻ¨ āĻšāĻ¯āĻŧāĨ¤ āĻāĻ‡ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§‡ āĻ†āĻŽāĻŋ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻŦāĻ˛āĻŦ āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻ†āĻĒāĻ¨āĻŋ āĻĒāĻŖā§āĻ¯ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°ā§‡ āĻ•ā§āĻ¯āĻžāĻ°āĻŋāĻ¯āĻŧāĻžāĻ° āĻ—ā§āĻ°ā§‡āĻĄ NAT āĻ•āĻ°ā§āĻŽāĻ•ā§āĻˇāĻŽāĻ¤āĻž āĻĒā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨āĨ¤

āĻ‡āĻ¤āĻŋāĻšāĻžāĻ¸ āĻāĻ•āĻŸāĻŋ āĻŦāĻŋāĻŸ

IPv4 āĻ…ā§āĻ¯āĻžāĻĄā§āĻ°ā§‡āĻ¸ āĻ¸ā§āĻĒā§‡āĻ¸ āĻāĻ•ā§āĻ¸āĻžāĻ‰āĻ¸āĻļāĻ¨ā§‡āĻ° āĻŦāĻŋāĻˇāĻ¯āĻŧāĻŸāĻŋ āĻ†āĻ° āĻ¨āĻ¤ā§āĻ¨ āĻ¨āĻ¯āĻŧāĨ¤ āĻ•āĻŋāĻ›ā§ āĻ¸āĻŽāĻ¯āĻŧā§‡, RIPE-āĻ¤ā§‡ āĻ…āĻĒā§‡āĻ•ā§āĻˇāĻŽāĻžāĻŖ āĻ¤āĻžāĻ˛āĻŋāĻ•āĻž āĻ‰āĻĒāĻ¸ā§āĻĨāĻŋāĻ¤ āĻšāĻ¯āĻŧ, āĻ¤āĻžāĻ°āĻĒāĻ° āĻŦāĻŋāĻ¨āĻŋāĻŽāĻ¯āĻŧā§‡āĻ° āĻ†āĻŦāĻŋāĻ°ā§āĻ­āĻžāĻŦ āĻ˜āĻŸā§‡ āĻ¯āĻžāĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋāĻ¤ā§‡ āĻ āĻŋāĻ•āĻžāĻ¨āĻžāĻ—ā§āĻ˛āĻŋāĻ° āĻŦā§āĻ˛āĻ•āĻ—ā§āĻ˛āĻŋ āĻ˛ā§‡āĻ¨āĻĻā§‡āĻ¨ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ āĻāĻŦāĻ‚ āĻ¸ā§‡āĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻ‡āĻœāĻžāĻ°āĻž āĻĻā§‡āĻ“āĻ¯āĻŧāĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻšā§āĻ•ā§āĻ¤āĻŋ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻ§ā§€āĻ°ā§‡ āĻ§ā§€āĻ°ā§‡, āĻŸā§‡āĻ˛āĻŋāĻ•āĻŽ āĻ…āĻĒāĻžāĻ°ā§‡āĻŸāĻ°āĻ°āĻž āĻ āĻŋāĻ•āĻžāĻ¨āĻž āĻāĻŦāĻ‚ āĻĒā§‹āĻ°ā§āĻŸ āĻ…āĻ¨ā§āĻŦāĻžāĻĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ‡āĻ¨ā§āĻŸāĻžāĻ°āĻ¨ā§‡āĻŸ āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ āĻĒāĻ°āĻŋāĻˇā§‡āĻŦāĻž āĻ¸āĻ°āĻŦāĻ°āĻžāĻš āĻ•āĻ°āĻ¤ā§‡ āĻļā§āĻ°ā§ āĻ•āĻ°ā§‡āĨ¤ āĻ•ā§‡āĻ‰ āĻ•ā§‡āĻ‰ āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻ—ā§āĻ°āĻžāĻšāĻ•āĻ•ā§‡ āĻāĻ•āĻŸāĻŋ "āĻ¸āĻžāĻĻāĻž" āĻ āĻŋāĻ•āĻžāĻ¨āĻž āĻ‡āĻ¸ā§āĻ¯ā§ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻĒāĻ°ā§āĻ¯āĻžāĻĒā§āĻ¤ āĻ āĻŋāĻ•āĻžāĻ¨āĻž āĻĒā§‡āĻ¤ā§‡ āĻĒāĻ°āĻŋāĻšāĻžāĻ˛āĻ¨āĻž āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨āĻŋ, āĻ…āĻ¨ā§āĻ¯āĻ°āĻž āĻ¸ā§‡āĻ•ā§‡āĻ¨ā§āĻĄāĻžāĻ°āĻŋ āĻŽāĻžāĻ°ā§āĻ•ā§‡āĻŸā§‡ āĻ āĻŋāĻ•āĻžāĻ¨āĻž āĻ•ā§āĻ°āĻ¯āĻŧ āĻ•āĻ°āĻ¤ā§‡ āĻ…āĻ¸ā§āĻŦā§€āĻ•āĻžāĻ° āĻ•āĻ°ā§‡ āĻ…āĻ°ā§āĻĨ āĻ¸āĻžā§āĻšāĻ¯āĻŧ āĻ•āĻ°āĻ¤ā§‡ āĻļā§āĻ°ā§ āĻ•āĻ°ā§‡āĨ¤ āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ• āĻ¸āĻ°āĻžā§āĻœāĻžāĻŽ āĻ¨āĻŋāĻ°ā§āĻŽāĻžāĻ¤āĻžāĻ°āĻž āĻāĻ‡ āĻ§āĻžāĻ°āĻŖāĻž āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ•āĻ°ā§‡, āĻ•āĻžāĻ°āĻŖ āĻāĻ‡ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻžāĻ°āĻŋāĻ¤āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻ…āĻ¤āĻŋāĻ°āĻŋāĻ•ā§āĻ¤ āĻāĻ•ā§āĻ¸āĻŸā§‡āĻ¨āĻļāĻ¨ āĻŽāĻĄāĻŋāĻ‰āĻ˛ āĻŦāĻž āĻ˛āĻžāĻ‡āĻ¸ā§‡āĻ¨ā§āĻ¸ā§‡āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻšāĻ¯āĻŧāĨ¤ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, MX āĻ°āĻžāĻ‰āĻŸāĻžāĻ°āĻ—ā§āĻ˛āĻŋāĻ° āĻœā§āĻ¨āĻŋāĻĒāĻžāĻ°ā§‡āĻ° āĻ˛āĻžāĻ‡āĻ¨ā§‡ (āĻ¸āĻ°ā§āĻŦāĻļā§‡āĻˇ MX104 āĻāĻŦāĻ‚ MX204 āĻŦā§āĻ¯āĻ¤ā§€āĻ¤), āĻ†āĻĒāĻ¨āĻŋ āĻāĻ•āĻŸāĻŋ āĻĒā§ƒāĻĨāĻ• MS-MIC āĻĒāĻ°āĻŋāĻˇā§‡āĻŦāĻž āĻ•āĻžāĻ°ā§āĻĄā§‡ NAPT āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨, Cisco ASR1k-āĻāĻ° āĻāĻ•āĻŸāĻŋ CGN āĻ˛āĻžāĻ‡āĻ¸ā§‡āĻ¨ā§āĻ¸ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨, Cisco ASR9k-āĻāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻĒā§ƒāĻĨāĻ• A9K-ISM-100 āĻŽāĻĄāĻŋāĻ‰āĻ˛ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻāĻŦāĻ‚ āĻ¤āĻžāĻ° āĻ•āĻžāĻ›ā§‡ āĻāĻ•āĻŸāĻŋ A9K-CGN āĻ˛āĻžāĻ‡āĻ¸ā§‡āĻ¨ā§āĻ¸ -LICāĨ¤ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ­āĻžāĻŦā§‡, āĻ†āĻ¨āĻ¨ā§āĻĻā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ…āĻ¨ā§‡āĻ• āĻŸāĻžāĻ•āĻž āĻ–āĻ°āĻš āĻšāĻ¯āĻŧāĨ¤

iptables

NAT āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻŦāĻŋāĻļā§‡āĻˇ āĻ•āĻŽā§āĻĒāĻŋāĻ‰āĻŸāĻŋāĻ‚ āĻ¸āĻ‚āĻ¸ā§āĻĨāĻžāĻ¨āĻ—ā§āĻ˛āĻŋāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻšāĻ¯āĻŧ āĻ¨āĻž; āĻāĻŸāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ-āĻ‰āĻĻā§āĻĻā§‡āĻļā§āĻ¯ āĻĒā§āĻ°āĻ¸ā§‡āĻ¸āĻ° āĻĻā§āĻŦāĻžāĻ°āĻž āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡, āĻ¯āĻž āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ āĻ•āĻ°āĻž āĻ†āĻ›ā§‡, āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻ¯ā§‡ āĻ•ā§‹āĻ¨āĻ“ āĻšā§‹āĻŽ āĻ°āĻžāĻ‰āĻŸāĻžāĻ°ā§‡āĨ¤ āĻāĻ•āĻŸāĻŋ āĻŸā§‡āĻ˛āĻŋāĻ•āĻŽ āĻ…āĻĒāĻžāĻ°ā§‡āĻŸāĻ°ā§‡āĻ° āĻ¸ā§āĻ•ā§‡āĻ˛ā§‡, āĻĢā§āĻ°āĻŋāĻŦāĻŋāĻāĻ¸āĻĄāĻŋ (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 āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻ†āĻŽāĻžāĻ° āĻĒā§āĻ°āĻĨāĻŽ āĻĒā§āĻ°āĻšā§‡āĻˇā§āĻŸāĻžāĻ¯āĻŧ, āĻ†āĻŽāĻŋ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° āĻĒā§āĻ°āĻ¤āĻŋ 7Mpps (Xeon E0.8-5v1650) āĻ āĻĒā§āĻ°āĻžāĻ¯āĻŧ 2Gbit/s āĻĒāĻžāĻ°āĻĢāĻ°āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¸ āĻĒā§‡āĻ¤ā§‡ āĻ¸āĻ•ā§āĻˇāĻŽ āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĨ¤ āĻ¸ā§‡āĻ‡ āĻ¸āĻŽāĻ¯āĻŧ āĻĨā§‡āĻ•ā§‡, GNU/Linux āĻ•āĻžāĻ°ā§āĻ¨ā§‡āĻ˛ āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ• āĻ¸ā§āĻŸā§āĻ¯āĻžāĻ•ā§‡ āĻ…āĻ¨ā§‡āĻ•āĻ—ā§āĻ˛āĻŋ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœā§‡āĻļāĻ¨ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡, āĻāĻ•āĻ‡ āĻšāĻžāĻ°ā§āĻĄāĻ“āĻ¯āĻŧā§āĻ¯āĻžāĻ°ā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°ā§‡āĻ° āĻ•āĻžāĻ°ā§āĻ¯āĻ•ā§āĻˇāĻŽāĻ¤āĻž 18-19 Mpps-āĻ āĻĒā§āĻ°āĻžāĻ¯āĻŧ 1.8-1.9 Gbit/s-āĻ āĻŦā§‡āĻĄāĻŧā§‡āĻ›ā§‡ (āĻāĻ—ā§āĻ˛āĻŋ āĻ¸āĻ°ā§āĻŦāĻžāĻ§āĻŋāĻ• āĻŽāĻžāĻ¨ āĻ›āĻŋāĻ˛) , āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻāĻ•āĻŸāĻŋ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° āĻĻā§āĻŦāĻžāĻ°āĻž āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ•ā§ƒāĻ¤ āĻŸā§āĻ°āĻžāĻĢāĻŋāĻ• āĻ­āĻ˛āĻŋāĻ‰āĻŽā§‡āĻ° āĻšāĻžāĻšāĻŋāĻĻāĻž āĻ…āĻ¨ā§‡āĻ• āĻĻā§āĻ°ā§āĻ¤ āĻŦā§ƒāĻĻā§āĻ§āĻŋ āĻĒā§‡āĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ āĻĢāĻ˛āĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°ā§‡ āĻ˛ā§‹āĻĄā§‡āĻ° āĻ­āĻžāĻ°āĻ¸āĻžāĻŽā§āĻ¯ āĻŦāĻœāĻžāĻ¯āĻŧ āĻ°āĻžāĻ–āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸ā§āĻ•āĻŋāĻŽāĻ—ā§āĻ˛āĻŋ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻāĻ‡ āĻ¸āĻŽāĻ¸ā§āĻ¤āĻ—ā§āĻ˛āĻŋ āĻĒā§āĻ°āĻĻāĻ¤ā§āĻ¤ āĻĒāĻ°āĻŋāĻˇā§‡āĻŦāĻžāĻ—ā§āĻ˛āĻŋāĻ° āĻŽāĻžāĻ¨ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨, āĻ°āĻ•ā§āĻˇāĻŖāĻžāĻŦā§‡āĻ•ā§āĻˇāĻŖ āĻāĻŦāĻ‚ āĻ°āĻ•ā§āĻˇāĻŖāĻžāĻŦā§‡āĻ•ā§āĻˇāĻŖā§‡āĻ° āĻœāĻŸāĻŋāĻ˛āĻ¤āĻž āĻŦāĻžāĻĄāĻŧāĻŋāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤

āĻāĻ¨āĻāĻĢāĻŸāĻŋāĻŦā§‡āĻŦāĻ˛āĻ¸

āĻ†āĻœāĻ•āĻžāĻ˛, āĻ¸āĻĢā§āĻŸāĻ“āĻ¯āĻŧā§āĻ¯āĻžāĻ°ā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻĢā§āĻ¯āĻžāĻļāĻ¨ā§‡āĻŦāĻ˛ āĻĒā§āĻ°āĻŦāĻŖāĻ¤āĻž āĻšāĻ˛ DPDK āĻāĻŦāĻ‚ XDP-āĻāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° "āĻŦā§āĻ¯āĻžāĻ— āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻ•āĻ°āĻž"ā§ˇ āĻāĻ‡ āĻŦāĻŋāĻˇāĻ¯āĻŧā§‡ āĻĒā§āĻ°āĻšā§āĻ° āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ āĻ˛ā§‡āĻ–āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡, āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻŦāĻ•ā§āĻ¤ā§ƒāĻ¤āĻž āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡, āĻāĻŦāĻ‚ āĻŦāĻžāĻŖāĻŋāĻœā§āĻ¯āĻŋāĻ• āĻĒāĻŖā§āĻ¯ āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻŋāĻ¤ āĻšāĻšā§āĻ›ā§‡ (āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, VasExperts āĻĨā§‡āĻ•ā§‡ SKAT)āĨ¤ āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻŸā§‡āĻ˛āĻŋāĻ•āĻŽ āĻ…āĻĒāĻžāĻ°ā§‡āĻŸāĻ°āĻĻā§‡āĻ° āĻ¸ā§€āĻŽāĻŋāĻ¤ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽāĻŋāĻ‚ āĻ¸āĻ‚āĻ¸ā§āĻĨāĻžāĻ¨āĻ—ā§āĻ˛āĻŋāĻ° āĻ•āĻžāĻ°āĻŖā§‡, āĻāĻ‡ āĻ•āĻžāĻ āĻžāĻŽā§‹āĻ° āĻ‰āĻĒāĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋ āĻ•āĻ°ā§‡ āĻ¨āĻŋāĻœā§‡āĻ°āĻžāĻ‡ āĻ¯ā§‡ āĻ•ā§‹āĻ¨āĻ“ "āĻĒāĻŖā§āĻ¯" āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻŦā§‡āĻļ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻ¯ā§āĻ•ā§āĻ¤āĨ¤ āĻ­āĻŦāĻŋāĻˇā§āĻ¯āĻ¤ā§‡ āĻāĻ‡ āĻœāĻžāĻ¤ā§€āĻ¯āĻŧ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻĒāĻ°āĻŋāĻšāĻžāĻ˛āĻ¨āĻž āĻ•āĻ°āĻž āĻ†āĻ°āĻ“ āĻ•āĻ āĻŋāĻ¨ āĻšāĻŦā§‡; āĻŦāĻŋāĻļā§‡āĻˇāĻ¤, āĻĄāĻžāĻ¯āĻŧāĻžāĻ—āĻ¨āĻ¸ā§āĻŸāĻŋāĻ• āĻ¸āĻ°āĻžā§āĻœāĻžāĻŽāĻ—ā§āĻ˛āĻŋ āĻŦāĻŋāĻ•āĻžāĻļ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, DPDK-āĻāĻ° āĻ¸āĻžāĻĨā§‡ āĻ¸ā§āĻŸā§āĻ¯āĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ tcpdump āĻ āĻŋāĻ• āĻ¸ā§‡āĻ­āĻžāĻŦā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻŦā§‡ āĻ¨āĻž āĻāĻŦāĻ‚ āĻāĻŸāĻŋ XDP āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ¤āĻžāĻ°ā§‡ āĻĢā§‡āĻ°āĻ¤ āĻĒāĻžāĻ āĻžāĻ¨ā§‹ āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻŸāĻ—ā§āĻ˛āĻŋ "āĻĻā§‡āĻ–āĻŦā§‡ āĻ¨āĻž"āĨ¤ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€-āĻ¸ā§āĻĒā§‡āĻ¸ā§‡ āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻŸ āĻĢāĻ°āĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻĄāĻŋāĻ‚ āĻ†āĻ‰āĻŸāĻĒā§āĻŸ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ¨āĻ¤ā§āĻ¨ āĻĒā§āĻ°āĻ¯ā§āĻ•ā§āĻ¤āĻŋ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ†āĻ˛ā§‹āĻšāĻ¨āĻžāĻ° āĻŽāĻ§ā§āĻ¯ā§‡, āĻ¤āĻžāĻ°āĻž āĻ…āĻ˛āĻ•ā§āĻˇāĻŋāĻ¤ āĻ›āĻŋāĻ˛ āĻ°āĻŋāĻĒā§‹āĻ°ā§āĻŸ и āĻĒā§āĻ°āĻŦāĻ¨ā§āĻ§ āĻĒāĻžāĻŦāĻ˛ā§‹ āĻ¨āĻŋāĻ°āĻž āĻ†āĻ¯āĻŧā§āĻ¸ā§‹, iptables āĻ°āĻ•ā§āĻˇāĻŖāĻžāĻŦā§‡āĻ•ā§āĻˇāĻŖāĻ•āĻžāĻ°ā§€, nftables-āĻ āĻĢā§āĻ˛ā§‹ āĻ…āĻĢāĻ˛ā§‹āĻĄāĻŋāĻ‚āĻ¯āĻŧā§‡āĻ° āĻŦāĻŋāĻ•āĻžāĻļ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡āĨ¤ āĻ†āĻ¸ā§āĻ¨ āĻāĻ‡ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻŸāĻŋ āĻ˜āĻ¨āĻŋāĻˇā§āĻ āĻ­āĻžāĻŦā§‡ āĻĻā§‡āĻ–ā§‡ āĻ¨ā§‡āĻ“āĻ¯āĻŧāĻž āĻ¯āĻžāĻ•āĨ¤

āĻŽā§‚āĻ˛ āĻ§āĻžāĻ°āĻŖāĻž āĻšāĻ˛ āĻ¯ā§‡ āĻ°āĻžāĻ‰āĻŸāĻžāĻ° āĻ¯āĻĻāĻŋ āĻĒā§āĻ°āĻŦāĻžāĻšā§‡āĻ° āĻ‰āĻ­āĻ¯āĻŧ āĻĻāĻŋāĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¸ā§‡āĻļāĻ¨ āĻĨā§‡āĻ•ā§‡ āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻŸ āĻĒāĻžāĻ¸ āĻ•āĻ°ā§‡ (āĻŸāĻŋāĻ¸āĻŋāĻĒāĻŋ āĻ¸ā§‡āĻļāĻ¨āĻŸāĻŋ āĻ¸ā§āĻĨāĻžāĻĒāĻŋāĻ¤ āĻ…āĻŦāĻ¸ā§āĻĨāĻžāĻ¯āĻŧ āĻšāĻ˛ā§‡ āĻ¯āĻžāĻ¯āĻŧ), āĻ¤āĻžāĻšāĻ˛ā§‡ āĻĢāĻžāĻ¯āĻŧāĻžāĻ°āĻ“āĻ¯āĻŧāĻžāĻ˛ā§‡āĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧāĻŽā§‡āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻāĻ‡ āĻ¸ā§‡āĻļāĻ¨ā§‡āĻ° āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§€ āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻŸāĻ—ā§āĻ˛āĻŋ āĻĒāĻžāĻ¸ āĻ•āĻ°āĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻ¨ā§‡āĻ‡, āĻ•āĻžāĻ°āĻŖ āĻāĻ‡ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻšā§‡āĻ• āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻŸāĻŸāĻŋ āĻ†āĻ°āĻ“ āĻ°āĻžāĻ‰āĻŸāĻŋāĻ‚āĻ¯āĻŧā§‡ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ°āĻŋāĻ¤ āĻšāĻ“āĻ¯āĻŧāĻžāĻ° āĻ¸āĻžāĻĨā§‡ āĻ¸āĻžāĻĨā§‡ āĻļā§‡āĻˇ āĻšāĻŦā§‡āĨ¤ āĻāĻŦāĻ‚ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ†āĻ¸āĻ˛ā§‡ āĻāĻ•āĻŸāĻŋ āĻ°ā§āĻŸ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ•āĻ°āĻžāĻ° āĻĻāĻ°āĻ•āĻžāĻ° āĻ¨ā§‡āĻ‡ - āĻ†āĻŽāĻ°āĻž āĻ‡āĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§‡āĻ‡ āĻœāĻžāĻ¨āĻŋ āĻ•ā§‹āĻ¨ āĻ‡āĻ¨ā§āĻŸāĻžāĻ°āĻĢā§‡āĻ¸ā§‡ āĻāĻŦāĻ‚ āĻ•ā§‹āĻ¨ āĻšā§‹āĻ¸ā§āĻŸā§‡ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻāĻ‡ āĻ¸ā§‡āĻļāĻ¨ā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻŸ āĻĒāĻžāĻ āĻžāĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤ āĻ¯āĻž āĻ…āĻŦāĻļāĻŋāĻˇā§āĻŸ āĻĨāĻžāĻ•ā§‡ āĻ¤āĻž āĻšāĻ˛ āĻāĻ‡ āĻ¤āĻĨā§āĻ¯ āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖ āĻ•āĻ°āĻž āĻāĻŦāĻ‚ āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻŸ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ•āĻ°āĻŖā§‡āĻ° āĻĒā§āĻ°āĻžāĻĨāĻŽāĻŋāĻ• āĻĒāĻ°ā§āĻ¯āĻžāĻ¯āĻŧā§‡ āĻ°āĻžāĻ‰āĻŸāĻŋāĻ‚ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻŸāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĨ¤ NAT āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, nf_conntrack āĻŽāĻĄāĻŋāĻ‰āĻ˛ āĻĻā§āĻŦāĻžāĻ°āĻž āĻ…āĻ¨ā§āĻŦāĻžāĻĻ āĻ•āĻ°āĻž āĻ āĻŋāĻ•āĻžāĻ¨āĻž āĻāĻŦāĻ‚ āĻĒā§‹āĻ°ā§āĻŸā§‡āĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ…āĻ¤āĻŋāĻ°āĻŋāĻ•ā§āĻ¤ āĻ¤āĻĨā§āĻ¯ āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖ āĻ•āĻ°āĻž āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨āĨ¤ āĻšā§āĻ¯āĻžāĻ, āĻ…āĻŦāĻļā§āĻ¯āĻ‡, āĻāĻ‡ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡, iptables-āĻ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻĒā§āĻ˛āĻŋāĻļ āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ¤āĻĨā§āĻ¯ āĻāĻŦāĻ‚ āĻĒāĻ°āĻŋāĻ¸āĻ‚āĻ–ā§āĻ¯āĻžāĻ¨ā§‡āĻ° āĻ¨āĻŋāĻ¯āĻŧāĻŽāĻ—ā§āĻ˛āĻŋ āĻ•āĻžāĻœ āĻ•āĻ°āĻž āĻŦāĻ¨ā§āĻ§ āĻ•āĻ°ā§‡ āĻĻā§‡āĻ¯āĻŧ, āĻ¤āĻŦā§‡ āĻāĻ•āĻŸāĻŋ āĻĒā§ƒāĻĨāĻ• āĻ¸ā§āĻĨāĻžāĻ¯āĻŧā§€ NAT āĻŦāĻž, āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻāĻ•āĻŸāĻŋ āĻ¸ā§€āĻŽāĻžāĻ¨ā§āĻ¤ā§‡āĻ° āĻ•āĻžāĻœā§‡āĻ° āĻ•āĻžāĻ āĻžāĻŽā§‹āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻāĻŸāĻŋ āĻāĻ¤ āĻ—ā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āĻ¨āĻ¯āĻŧ, āĻ•āĻžāĻ°āĻŖ āĻĒāĻ°āĻŋāĻˇā§‡āĻŦāĻžāĻ—ā§āĻ˛āĻŋ āĻĄāĻŋāĻ­āĻžāĻ‡āĻ¸ āĻœā§āĻĄāĻŧā§‡ āĻŦāĻŋāĻ¤āĻ°āĻŖ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ.

āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ°ā§‡āĻļāĻ¨

āĻāĻ‡ āĻĢāĻžāĻ‚āĻļāĻ¨āĻŸāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨:

  • āĻāĻ•āĻŸāĻŋ āĻ¤āĻžāĻœāĻž āĻ•āĻžāĻ°ā§āĻ¨ā§‡āĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§āĻ¨āĨ¤ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻžāĻ°āĻŋāĻ¤āĻž āĻ¨āĻŋāĻœā§‡āĻ‡ āĻ•āĻžāĻ°ā§āĻ¨ā§‡āĻ˛ 4.16-āĻ āĻ‰āĻĒāĻ¸ā§āĻĨāĻŋāĻ¤ āĻšāĻ“āĻ¯āĻŧāĻž āĻ¸āĻ¤ā§āĻ¤ā§āĻŦā§‡āĻ“, āĻŦā§‡āĻļ āĻĻā§€āĻ°ā§āĻ˜ āĻ¸āĻŽāĻ¯āĻŧā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻŸāĻŋ āĻ–ā§āĻŦ "āĻ•āĻžāĻāĻšāĻž" āĻ›āĻŋāĻ˛ āĻāĻŦāĻ‚ āĻ¨āĻŋāĻ¯āĻŧāĻŽāĻŋāĻ¤āĻ­āĻžāĻŦā§‡ āĻ•āĻžāĻ°ā§āĻ¨ā§‡āĻ˛ āĻ†āĻ¤āĻ™ā§āĻ• āĻ¸ā§ƒāĻˇā§āĻŸāĻŋ āĻ•āĻ°ā§‡āĻ›āĻŋāĻ˛āĨ¤ āĻĄāĻŋāĻ¸ā§‡āĻŽā§āĻŦāĻ° 2019 āĻāĻ° āĻ•āĻžāĻ›āĻžāĻ•āĻžāĻ›āĻŋ āĻ¸āĻŦāĻ•āĻŋāĻ›ā§ āĻ¸ā§āĻĨāĻŋāĻ° āĻšāĻ¯āĻŧā§‡ āĻ¯āĻžāĻ¯āĻŧ, āĻ¯āĻ–āĻ¨ LTS āĻ•āĻžāĻ°ā§āĻ¨ā§‡āĻ˛ 4.19.90 āĻāĻŦāĻ‚ 5.4.5 āĻĒā§āĻ°āĻ•āĻžāĻļāĻŋāĻ¤ āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛āĨ¤
  • nftables āĻāĻ° āĻŽā§‹āĻŸāĻžāĻŽā§āĻŸāĻŋ āĻ¸āĻžāĻŽā§āĻĒā§āĻ°āĻ¤āĻŋāĻ• āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ nftables āĻŦāĻŋāĻ¨ā§āĻ¯āĻžāĻ¸ā§‡ iptables āĻ¨āĻŋāĻ¯āĻŧāĻŽāĻ—ā§āĻ˛āĻŋ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻ˛āĻŋāĻ–ā§āĻ¨āĨ¤ 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

āĻāĻ•āĻŸāĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻœā§āĻĄāĻŧā§āĻ¨