แƒกแƒฌแƒ แƒแƒคแƒ˜ แƒ›แƒแƒ แƒจแƒ แƒฃแƒขแƒ˜แƒ–แƒแƒชแƒ˜แƒ แƒ“แƒ NAT Linux-แƒจแƒ˜

แƒ แƒแƒ“แƒ’แƒแƒœ IPv4 แƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ”แƒ‘แƒ˜ แƒแƒ›แƒแƒ˜แƒฌแƒฃแƒ แƒ”แƒ‘แƒ, แƒ‘แƒ”แƒ•แƒ แƒ˜ แƒกแƒแƒขแƒ”แƒšแƒ”แƒ™แƒแƒ›แƒฃแƒœแƒ˜แƒ™แƒแƒชแƒ˜แƒ แƒแƒžแƒ”แƒ แƒแƒขแƒแƒ แƒ˜ แƒ“แƒ’แƒ”แƒ‘แƒ แƒกแƒแƒญแƒ˜แƒ แƒแƒ”แƒ‘แƒ˜แƒก แƒฌแƒ˜แƒœแƒแƒจแƒ”, แƒ›แƒ˜แƒแƒฌแƒแƒ“แƒแƒก แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ”แƒ‘แƒก แƒฅแƒกแƒ”แƒšแƒจแƒ˜ แƒฌแƒ•แƒ“แƒแƒ›แƒ แƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ”แƒ‘แƒ˜แƒก แƒ—แƒแƒ แƒ’แƒ›แƒœแƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—. แƒแƒ› แƒกแƒขแƒแƒขแƒ˜แƒแƒจแƒ˜ แƒ›แƒ” แƒ’แƒ”แƒขแƒงแƒ•แƒ˜แƒ—, แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ›แƒ˜แƒ˜แƒฆแƒแƒ— Carrier Grade NAT แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ แƒกแƒแƒกแƒแƒฅแƒแƒœแƒšแƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ”แƒ‘แƒ–แƒ”.

แƒžแƒแƒขแƒแƒ แƒ แƒ˜แƒกแƒขแƒแƒ แƒ˜แƒ˜แƒก

IPv4 แƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ˜แƒก แƒกแƒ˜แƒ•แƒ แƒชแƒ˜แƒก แƒแƒ›แƒแƒฌแƒฃแƒ แƒ•แƒ˜แƒก แƒ—แƒ”แƒ›แƒ แƒแƒฎแƒแƒšแƒ˜ แƒแƒฆแƒแƒ  แƒแƒ แƒ˜แƒก. แƒ แƒแƒฆแƒแƒช แƒ›แƒแƒ›แƒ”แƒœแƒขแƒจแƒ˜ RIPE-แƒจแƒ˜ แƒ’แƒแƒฉแƒœแƒ“แƒ แƒ›แƒแƒšแƒแƒ“แƒ˜แƒœแƒ˜แƒก แƒกแƒ˜แƒ”แƒ‘แƒ˜, แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ’แƒแƒฉแƒœแƒ“แƒ แƒ‘แƒ˜แƒ แƒŸแƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ–แƒ”แƒช แƒ˜แƒ•แƒแƒญแƒ แƒ”แƒ‘แƒแƒ“แƒ แƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ”แƒ‘แƒ˜แƒก แƒ‘แƒšแƒแƒ™แƒ”แƒ‘แƒ˜ แƒ“แƒ แƒ’แƒแƒคแƒแƒ แƒ›แƒ“แƒ แƒ’แƒแƒ แƒ˜แƒ’แƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒ›แƒแƒ— แƒ˜แƒฏแƒแƒ แƒแƒ–แƒ”. แƒ—แƒแƒœแƒ“แƒแƒ—แƒแƒœ แƒขแƒ”แƒšแƒ”แƒ™แƒแƒ›แƒ˜แƒก แƒแƒžแƒ”แƒ แƒแƒขแƒแƒ แƒ”แƒ‘แƒ›แƒ แƒ“แƒแƒ˜แƒฌแƒงแƒ”แƒก แƒ˜แƒœแƒขแƒ”แƒ แƒœแƒ”แƒขแƒ—แƒแƒœ แƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒก แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒฌแƒแƒ“แƒ”แƒ‘แƒ แƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ˜แƒกแƒ แƒ“แƒ แƒžแƒแƒ แƒขแƒ˜แƒก แƒ—แƒแƒ แƒ’แƒ›แƒแƒœแƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—. แƒ–แƒแƒ’แƒ˜แƒ”แƒ แƒ—แƒ›แƒ แƒ•แƒ”แƒ  แƒ›แƒแƒแƒฎแƒ”แƒ แƒฎแƒ แƒกแƒแƒ™แƒ›แƒแƒ แƒ˜แƒกแƒ˜ แƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒžแƒแƒ•แƒ”แƒ‘แƒ แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒแƒ‘แƒแƒœแƒ”แƒœแƒขแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก โ€žแƒ—แƒ”แƒ—แƒ แƒ˜โ€œ แƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ˜แƒก แƒ’แƒแƒกแƒแƒชแƒ”แƒ›แƒแƒ“, แƒ–แƒแƒ’แƒ›แƒ แƒ™แƒ˜ แƒคแƒฃแƒšแƒ˜แƒก แƒ“แƒแƒ–แƒแƒ’แƒ•แƒ แƒ“แƒแƒ˜แƒฌแƒงแƒ แƒ›แƒ”แƒแƒ แƒแƒ“ แƒ‘แƒแƒ–แƒแƒ แƒ–แƒ” แƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒซแƒ”แƒœแƒแƒ–แƒ” แƒฃแƒแƒ แƒ˜แƒก แƒ—แƒฅแƒ›แƒ˜แƒ—. แƒฅแƒกแƒ”แƒšแƒฃแƒ แƒ˜ แƒแƒฆแƒญแƒฃแƒ แƒ•แƒ˜แƒšแƒแƒ‘แƒ˜แƒก แƒ›แƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒšแƒ”แƒ‘แƒ›แƒ แƒ›แƒฎแƒแƒ แƒ˜ แƒ“แƒแƒฃแƒญแƒ˜แƒ แƒ”แƒก แƒแƒ› แƒ˜แƒ“แƒ”แƒแƒก, แƒ แƒแƒ“แƒ’แƒแƒœ แƒ”แƒก แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ• แƒ›แƒแƒ˜แƒ—แƒฎแƒแƒ•แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ— แƒ’แƒแƒคแƒแƒ แƒ—แƒแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒ“แƒฃแƒšแƒ”แƒ‘แƒก แƒแƒœ แƒšแƒ˜แƒชแƒ”แƒœแƒ–แƒ˜แƒ”แƒ‘แƒก. แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, Juniper-แƒ˜แƒก MX แƒ›แƒแƒ แƒจแƒ แƒฃแƒขแƒ˜แƒ–แƒแƒขแƒแƒ แƒ”แƒ‘แƒ˜แƒก แƒฎแƒแƒ–แƒจแƒ˜ (แƒฃแƒแƒฎแƒšแƒ”แƒกแƒ˜ MX104 แƒ“แƒ MX204-แƒ˜แƒก แƒ’แƒแƒ แƒ“แƒ), แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒจแƒ”แƒแƒกแƒ แƒฃแƒšแƒแƒ— NAPT แƒชแƒแƒšแƒ™แƒ” MS-MIC แƒกแƒ”แƒ แƒ•แƒ˜แƒก แƒ‘แƒแƒ แƒแƒ—แƒ–แƒ”, Cisco ASR1k แƒ›แƒแƒ˜แƒ—แƒฎแƒแƒ•แƒก CGN แƒšแƒ˜แƒชแƒ”แƒœแƒ–แƒ˜แƒแƒก, Cisco ASR9k แƒ›แƒแƒ˜แƒ—แƒฎแƒแƒ•แƒก แƒชแƒแƒšแƒ™แƒ” A9K-ISM-100 แƒ›แƒแƒ“แƒฃแƒšแƒก. แƒ“แƒ A9K-CGN แƒšแƒ˜แƒชแƒ”แƒœแƒ–แƒ˜แƒ -LIC แƒ›แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒ–แƒแƒ’แƒแƒ“แƒแƒ“, แƒกแƒ˜แƒแƒ›แƒแƒ•แƒœแƒ”แƒ‘แƒ แƒซแƒ•แƒ˜แƒ แƒ˜ แƒฏแƒ“แƒ”แƒ‘แƒ.

IPTables

NAT-แƒ˜แƒก แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒแƒ›แƒแƒชแƒแƒœแƒ แƒแƒ  แƒกแƒแƒญแƒ˜แƒ แƒแƒ”แƒ‘แƒก แƒกแƒžแƒ”แƒชแƒ˜แƒแƒšแƒ˜แƒ–แƒ”แƒ‘แƒฃแƒš แƒ’แƒแƒ›แƒแƒ—แƒ•แƒšแƒ˜แƒ— แƒ แƒ”แƒกแƒฃแƒ แƒกแƒ”แƒ‘แƒก, แƒ›แƒ˜แƒกแƒ˜ แƒ’แƒแƒ“แƒแƒญแƒ แƒ แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ แƒ–แƒแƒ’แƒแƒ“แƒ˜ แƒ“แƒแƒœแƒ˜แƒจแƒœแƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒแƒ แƒ”แƒ‘แƒ˜แƒ—, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒ“แƒแƒ›แƒแƒœแƒขแƒแƒŸแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ, แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒœแƒ”แƒ‘แƒ˜แƒกแƒ›แƒ˜แƒ”แƒ  แƒกแƒแƒฎแƒšแƒ˜แƒก แƒ แƒแƒฃแƒขแƒ”แƒ แƒจแƒ˜. แƒขแƒ”แƒšแƒ”แƒ™แƒแƒ›แƒ˜แƒก แƒแƒžแƒ”แƒ แƒแƒขแƒแƒ แƒ˜แƒก แƒ›แƒแƒกแƒจแƒขแƒแƒ‘แƒ˜แƒ—, แƒแƒ› แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ˜แƒก แƒ›แƒแƒ’แƒ•แƒแƒ แƒ”แƒ‘แƒ แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ FreeBSD (ipfw/pf) แƒแƒœ GNU/Linux (iptables) แƒกแƒแƒกแƒแƒฅแƒแƒœแƒšแƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—. แƒฉแƒ•แƒ”แƒœ แƒแƒ  แƒ’แƒแƒœแƒ•แƒ˜แƒฎแƒ˜แƒšแƒแƒ•แƒ— FreeBSD-แƒก, แƒ แƒแƒ“แƒ’แƒแƒœ... แƒ›แƒ” แƒจแƒ”แƒ•แƒฌแƒงแƒ•แƒ˜แƒขแƒ” แƒแƒ› แƒแƒžแƒ”แƒ แƒแƒชแƒ˜แƒฃแƒšแƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒ“แƒ˜แƒ“แƒ˜ แƒฎแƒœแƒ˜แƒก แƒฌแƒ˜แƒœ, แƒแƒกแƒ” แƒ แƒแƒ›, แƒฉแƒ•แƒ”แƒœ แƒ“แƒแƒ•แƒ แƒฉแƒ”แƒ‘แƒ˜แƒ— 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 แƒ›แƒแƒ“แƒฃแƒšแƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ›แƒแƒœแƒ˜แƒขแƒแƒ แƒ˜แƒœแƒ’แƒก แƒ’แƒแƒฃแƒฌแƒ”แƒ•แƒก แƒงแƒ•แƒ”แƒšแƒ แƒแƒฅแƒขแƒ˜แƒฃแƒ  แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒก แƒ“แƒ แƒจแƒ”แƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒก แƒกแƒแƒญแƒ˜แƒ แƒ แƒ™แƒแƒœแƒ•แƒ”แƒ แƒขแƒแƒชแƒ˜แƒ”แƒ‘แƒก. แƒแƒฅ แƒแƒ แƒ˜แƒก แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒ“แƒแƒฎแƒ•แƒ”แƒฌแƒ˜แƒšแƒแƒ‘แƒ. แƒžแƒ˜แƒ แƒ•แƒ”แƒš แƒ แƒ˜แƒ’แƒจแƒ˜, แƒ แƒแƒ“แƒ’แƒแƒœ แƒฉแƒ•แƒ”แƒœ แƒ•แƒกแƒแƒฃแƒ‘แƒ แƒแƒ‘แƒ— 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

แƒแƒ› แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ แƒ›แƒแƒœแƒ˜แƒžแƒฃแƒšแƒแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ›แƒ˜แƒ˜แƒฆแƒ”แƒ‘แƒ แƒกแƒ แƒฃแƒšแƒ˜แƒแƒ“ แƒ›แƒแƒฅแƒ›แƒ”แƒ“แƒ˜ แƒ“แƒ˜แƒ–แƒแƒ˜แƒœแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒกแƒแƒช แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒก แƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ”แƒ‘แƒ˜แƒก แƒ“แƒ˜แƒ“แƒ˜ แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ แƒ’แƒแƒ แƒ”แƒ“แƒแƒœ แƒแƒฃแƒ–แƒจแƒ˜ แƒ’แƒแƒ“แƒแƒแƒฅแƒชแƒ˜แƒแƒก. แƒ—แƒฃแƒ›แƒชแƒ, แƒแƒ› แƒ’แƒแƒ“แƒแƒฌแƒงแƒ•แƒ”แƒขแƒ˜แƒก แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ แƒกแƒแƒกแƒฃแƒ แƒ•แƒ”แƒšแƒก แƒขแƒแƒ•แƒ”แƒ‘แƒก. GNU/Linux-แƒ˜แƒก NAT-แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒก แƒฉแƒ”แƒ›แƒก แƒžแƒ˜แƒ แƒ•แƒ”แƒš แƒ›แƒชแƒ“แƒ”แƒšแƒแƒ‘แƒ”แƒ‘แƒจแƒ˜ (แƒ“แƒแƒแƒฎแƒšแƒแƒ”แƒ‘แƒ˜แƒ— 2013 แƒฌแƒ”แƒšแƒก), แƒ›แƒ” แƒจแƒ”แƒ•แƒซแƒ”แƒšแƒ˜ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒก แƒ“แƒแƒแƒฎแƒšแƒแƒ”แƒ‘แƒ˜แƒ— 7 แƒ’แƒ‘แƒ˜แƒขแƒ˜/แƒฌแƒ› แƒ—แƒ˜แƒ—แƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ–แƒ” 0.8 แƒ›แƒ”แƒ’แƒแƒžแƒ˜แƒฅแƒกแƒ”แƒšแƒ˜ แƒฌแƒ› (Xeon E5-1650v2). แƒ›แƒแƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ›แƒ แƒแƒ•แƒแƒšแƒ˜ แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒแƒžแƒขแƒ˜แƒ›แƒ˜แƒ–แƒแƒชแƒ˜แƒ แƒ’แƒแƒ™แƒ”แƒ—แƒ“แƒ GNU/Linux-แƒ˜แƒก แƒ‘แƒ˜แƒ แƒ—แƒ•แƒ˜แƒก แƒฅแƒกแƒ”แƒšแƒ˜แƒก แƒกแƒขแƒ”แƒ™แƒจแƒ˜, แƒ”แƒ แƒ—แƒ˜ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ แƒ˜แƒ›แƒแƒ•แƒ” แƒแƒžแƒแƒ แƒแƒขแƒฃแƒ แƒแƒ–แƒ” แƒ’แƒแƒ˜แƒ–แƒแƒ แƒ“แƒ แƒ—แƒ˜แƒ—แƒฅแƒ›แƒ˜แƒก 18-19 แƒ’แƒ‘แƒ˜แƒข/แƒฌแƒ›-แƒ›แƒ“แƒ” 1.8-1.9 Mpps (แƒ”แƒก แƒ˜แƒงแƒ แƒ›แƒแƒฅแƒกแƒ˜แƒ›แƒแƒšแƒฃแƒ แƒ˜ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ”แƒ‘แƒ˜) , แƒ›แƒแƒ’แƒ แƒแƒ› แƒ”แƒ แƒ—แƒ˜ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒ›แƒ˜แƒ”แƒ  แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒขแƒ แƒแƒคแƒ˜แƒ™แƒ˜แƒก แƒ›แƒแƒชแƒฃแƒšแƒแƒ‘แƒแƒ–แƒ” แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ แƒ‘แƒ”แƒ•แƒ แƒแƒ“ แƒฃแƒคแƒ แƒ แƒกแƒฌแƒ แƒแƒคแƒแƒ“ แƒ’แƒแƒ˜แƒ–แƒแƒ แƒ“แƒ. แƒจแƒ”แƒ“แƒ”แƒ’แƒแƒ“, แƒจแƒ”แƒ›แƒฃแƒจแƒแƒ•แƒ“แƒ แƒกแƒฅแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ”แƒ‘แƒ–แƒ” แƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ˜แƒก แƒ“แƒแƒกแƒแƒ‘แƒแƒšแƒแƒœแƒกแƒ”แƒ‘แƒšแƒแƒ“, แƒ›แƒแƒ’แƒ แƒแƒ› แƒแƒ› แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ›แƒ แƒ’แƒแƒ–แƒแƒ แƒ“แƒ แƒ›แƒแƒฌแƒแƒ“แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒก, แƒจแƒ”แƒœแƒแƒ แƒฉแƒฃแƒœแƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒฎแƒแƒ แƒ˜แƒกแƒฎแƒ˜แƒก แƒจแƒ”แƒœแƒแƒ แƒฉแƒฃแƒœแƒ”แƒ‘แƒ˜แƒก แƒกแƒ˜แƒ แƒ—แƒฃแƒšแƒ”.

NF แƒ›แƒแƒ’แƒ˜แƒ“แƒ”แƒ‘แƒ˜

แƒ“แƒฆแƒ”แƒกแƒ“แƒฆแƒ”แƒแƒ‘แƒ˜แƒ—, แƒ›แƒแƒ“แƒฃแƒ แƒ˜ แƒขแƒ”แƒœแƒ“แƒ”แƒœแƒชแƒ˜แƒ แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒฃแƒšแƒ˜ แƒฃแƒ–แƒ แƒฃแƒœแƒ•แƒ”แƒšแƒงแƒแƒคแƒ˜แƒก "แƒ’แƒแƒชแƒ•แƒšแƒ˜แƒก แƒฉแƒแƒœแƒ—แƒ”แƒ‘แƒจแƒ˜" แƒแƒ แƒ˜แƒก DPDK แƒ“แƒ XDP แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ. แƒแƒ› แƒ—แƒ”แƒ›แƒแƒ–แƒ” แƒ‘แƒ”แƒ•แƒ แƒ˜ แƒกแƒขแƒแƒขแƒ˜แƒ แƒ“แƒแƒ˜แƒฌแƒ”แƒ แƒ, แƒ‘แƒ”แƒ•แƒ แƒ˜ แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒ’แƒแƒ›แƒแƒกแƒ•แƒšแƒ แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒ“แƒ แƒ“แƒ แƒฉแƒœแƒ“แƒ”แƒ‘แƒ แƒ™แƒแƒ›แƒ”แƒ แƒชแƒ˜แƒฃแƒšแƒ˜ แƒžแƒ แƒแƒ“แƒฃแƒฅแƒขแƒ”แƒ‘แƒ˜ (แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, SKAT VasExperts-แƒ˜แƒกแƒ’แƒแƒœ). แƒ›แƒแƒ’แƒ แƒแƒ› แƒกแƒแƒขแƒ”แƒšแƒ”แƒ™แƒแƒ›แƒฃแƒœแƒ˜แƒ™แƒแƒชแƒ˜แƒ แƒแƒžแƒ”แƒ แƒแƒขแƒแƒ แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ–แƒฆแƒฃแƒ“แƒฃแƒšแƒ˜ แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒ แƒ”แƒกแƒฃแƒ แƒกแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ—แƒ•แƒแƒšแƒ˜แƒกแƒฌแƒ˜แƒœแƒ”แƒ‘แƒ˜แƒ—, แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒฃแƒ แƒ˜แƒ แƒแƒ› แƒฉแƒแƒ แƒฉแƒแƒ”แƒ‘แƒ–แƒ” แƒ“แƒแƒคแƒฃแƒซแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ แƒแƒ˜แƒ›แƒ” โ€žแƒžแƒ แƒแƒ“แƒฃแƒฅแƒขแƒ˜แƒกโ€œ แƒจแƒ”แƒฅแƒ›แƒœแƒ แƒกแƒแƒ™แƒฃแƒ—แƒแƒ  แƒ—แƒแƒ•แƒ–แƒ”. แƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒจแƒ˜ แƒแƒกแƒ”แƒ—แƒ˜ แƒ’แƒแƒ“แƒแƒฌแƒงแƒ•แƒ”แƒขแƒ˜แƒก แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒแƒœแƒ˜แƒ แƒ”แƒ‘แƒ แƒ’แƒแƒชแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒ— แƒ แƒ—แƒฃแƒšแƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ, แƒ™แƒ”แƒ แƒซแƒแƒ“, แƒ“แƒ˜แƒแƒ’แƒœแƒแƒกแƒขแƒ˜แƒ™แƒฃแƒ แƒ˜ แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒกแƒแƒญแƒ˜แƒ แƒ. แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒกแƒขแƒแƒœแƒ“แƒแƒ แƒขแƒฃแƒšแƒ˜ tcpdump DPDK-แƒ˜แƒ— แƒแƒ  แƒ˜แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒก แƒแƒกแƒ” แƒ“แƒ แƒ•แƒ”แƒ  โ€žแƒ˜แƒฎแƒ˜แƒšแƒแƒ•แƒกโ€œ แƒกแƒแƒ“แƒ”แƒœแƒ”แƒ‘แƒจแƒ˜ แƒ’แƒแƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒš แƒžแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒก XDP-แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—. แƒงแƒ•แƒ”แƒšแƒ แƒกแƒแƒฃแƒ‘แƒ แƒ˜แƒก แƒคแƒแƒœแƒ–แƒ” แƒแƒฎแƒแƒšแƒ˜ แƒขแƒ”แƒฅแƒœแƒแƒšแƒแƒ’แƒ˜แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘ แƒžแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ“แƒแƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒกแƒ˜แƒ•แƒ แƒชแƒ”แƒจแƒ˜, แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒจแƒ”แƒฃแƒ›แƒฉแƒœแƒ”แƒ•แƒ”แƒšแƒ˜ แƒ“แƒแƒ แƒฉแƒœแƒ”แƒœ แƒ˜แƒฃแƒฌแƒงแƒ”แƒ‘แƒ ะธ แƒ›แƒฃแƒฎแƒšแƒ˜ แƒžแƒแƒ‘แƒšแƒ แƒœแƒ”แƒ˜แƒ แƒ แƒแƒ˜แƒฃแƒกแƒ, iptables-แƒ˜แƒก แƒจแƒ”แƒ›แƒœแƒแƒ แƒฉแƒฃแƒœแƒ”แƒ‘แƒ”แƒšแƒ˜, nftables-แƒจแƒ˜ แƒœแƒแƒ™แƒแƒ“แƒ˜แƒก แƒ’แƒแƒ“แƒ›แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ˜แƒก แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘. แƒ›แƒแƒ“แƒ˜แƒ— แƒฃแƒคแƒ แƒ แƒแƒฎแƒšแƒแƒก แƒ›แƒ˜แƒ•แƒฎแƒ”แƒ“แƒแƒ— แƒแƒ› แƒ›แƒ”แƒฅแƒแƒœแƒ˜แƒ–แƒ›แƒก.

แƒ›แƒ—แƒแƒ•แƒแƒ แƒ˜ แƒ˜แƒ“แƒ”แƒ แƒ˜แƒกแƒแƒ, แƒ แƒแƒ› แƒ—แƒฃ แƒ แƒแƒฃแƒขแƒ”แƒ แƒ›แƒ แƒ’แƒแƒ“แƒแƒกแƒชแƒ แƒžแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒ˜ แƒ”แƒ แƒ—แƒ˜ แƒกแƒ”แƒกแƒ˜แƒ˜แƒ“แƒแƒœ แƒœแƒแƒ™แƒแƒ“แƒ˜แƒก แƒแƒ แƒ˜แƒ•แƒ” แƒ›แƒ˜แƒ›แƒแƒ แƒ—แƒฃแƒšแƒ”แƒ‘แƒ˜แƒ— (TCP แƒกแƒ”แƒกแƒ˜แƒ แƒ’แƒแƒ“แƒแƒ•แƒ˜แƒ“แƒ ESTABLISHED แƒ›แƒ“แƒ’แƒแƒ›แƒแƒ แƒ”แƒแƒ‘แƒแƒจแƒ˜), แƒ›แƒแƒจแƒ˜แƒœ แƒแƒ  แƒแƒ แƒ˜แƒก แƒกแƒแƒญแƒ˜แƒ แƒ แƒแƒ› แƒกแƒ”แƒกแƒ˜แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ’แƒแƒ›แƒ˜ แƒžแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ“แƒแƒขแƒแƒœแƒ Firewall-แƒ˜แƒก แƒงแƒ•แƒ”แƒšแƒ แƒฌแƒ”แƒกแƒ˜แƒ—, แƒ แƒแƒ“แƒ’แƒแƒœ แƒงแƒ•แƒ”แƒšแƒ แƒ”แƒก แƒจแƒ”แƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒ แƒ›แƒแƒ˜แƒœแƒช แƒ“แƒแƒกแƒ แƒฃแƒšแƒ“แƒ”แƒ‘แƒ แƒžแƒแƒ™แƒ”แƒขแƒ˜แƒก แƒ›แƒแƒ แƒจแƒ แƒฃแƒขแƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ’แƒแƒ› แƒ’แƒแƒ“แƒแƒขแƒแƒœแƒ˜แƒ—. แƒ“แƒ แƒฉแƒ•แƒ”แƒœ แƒœแƒแƒ›แƒ“แƒ•แƒ˜แƒšแƒแƒ“ แƒแƒ  แƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒ›แƒแƒ แƒจแƒ แƒฃแƒขแƒ˜แƒก แƒแƒ แƒฉแƒ”แƒ•แƒ - แƒฉแƒ•แƒ”แƒœ แƒฃแƒ™แƒ•แƒ” แƒ•แƒ˜แƒชแƒ˜แƒ—, แƒ แƒแƒ›แƒ”แƒš แƒ˜แƒœแƒขแƒ”แƒ แƒคแƒ”แƒ˜แƒกแƒก แƒ“แƒ แƒ แƒแƒ›แƒ”แƒš แƒฐแƒแƒกแƒขแƒก แƒฃแƒœแƒ“แƒ แƒ’แƒแƒ•แƒฃแƒ’แƒ–แƒแƒ•แƒœแƒแƒ— แƒžแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒ˜ แƒแƒ› แƒกแƒ”แƒกแƒ˜แƒ˜แƒก แƒคแƒแƒ แƒ’แƒšแƒ”แƒ‘แƒจแƒ˜. แƒ แƒฉแƒ”แƒ‘แƒ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒแƒ› แƒ˜แƒœแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒ˜แƒก แƒจแƒ”แƒœแƒแƒฎแƒ•แƒ แƒ“แƒ แƒ›แƒ˜แƒกแƒ˜ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒ›แƒแƒ แƒจแƒ แƒฃแƒขแƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒžแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ˜แƒก แƒแƒ“แƒ แƒ”แƒฃแƒš แƒ”แƒขแƒแƒžแƒ–แƒ”. NAT-แƒ˜แƒก แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒกแƒแƒก แƒกแƒแƒญแƒ˜แƒ แƒแƒ แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ— แƒจแƒ”แƒ˜แƒœแƒแƒฎแƒแƒ— แƒ˜แƒœแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒ nf_conntrack แƒ›แƒแƒ“แƒฃแƒšแƒ˜แƒก แƒ›แƒ˜แƒ”แƒ  แƒ—แƒแƒ แƒ’แƒ›แƒœแƒ˜แƒšแƒ˜ แƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒžแƒแƒ แƒขแƒ”แƒ‘แƒ˜แƒก แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘. แƒ“แƒ˜แƒแƒฎ, แƒ แƒ แƒ—แƒฅแƒ›แƒ แƒฃแƒœแƒ“แƒ, แƒแƒ› แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜ แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒžแƒแƒšแƒ˜แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒ˜ แƒ“แƒ แƒกแƒฎแƒ•แƒ แƒ˜แƒœแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒ แƒ“แƒ แƒกแƒขแƒแƒขแƒ˜แƒกแƒขแƒ˜แƒ™แƒฃแƒ แƒ˜ แƒฌแƒ”แƒกแƒ”แƒ‘แƒ˜ iptables-แƒจแƒ˜ แƒฌแƒงแƒ•แƒ”แƒขแƒก แƒ›แƒฃแƒจแƒแƒแƒ‘แƒแƒก, แƒ›แƒแƒ’แƒ แƒแƒ› แƒชแƒแƒšแƒ™แƒ” แƒ›แƒ“แƒ’แƒแƒ แƒ˜ NAT-แƒ˜แƒก แƒแƒœ, แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒกแƒแƒ–แƒฆแƒ•แƒ แƒ˜แƒก แƒแƒ›แƒแƒชแƒแƒœแƒ˜แƒก แƒคแƒแƒ แƒ’แƒšแƒ”แƒ‘แƒจแƒ˜, แƒ”แƒก แƒแƒ แƒช แƒ˜แƒกแƒ” แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒแƒœแƒ˜แƒ, แƒ แƒแƒ“แƒ’แƒแƒœ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ˜ แƒœแƒแƒฌแƒ˜แƒšแƒ“แƒ”แƒ‘แƒ แƒ›แƒแƒฌแƒงแƒแƒ‘แƒ˜แƒšแƒแƒ‘แƒ”แƒ‘แƒ–แƒ”.

แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ

แƒแƒ› แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒ›แƒแƒกแƒแƒงแƒ”แƒœแƒ”แƒ‘แƒšแƒแƒ“ แƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ:

  • แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ— แƒแƒฎแƒแƒšแƒ˜ แƒ‘แƒ˜แƒ แƒ—แƒ•แƒ˜. แƒ˜แƒ›แƒ˜แƒกแƒ“แƒ แƒ›แƒ˜แƒฃแƒฎแƒ”แƒ“แƒแƒ•แƒแƒ“, แƒ แƒแƒ› แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒแƒœแƒแƒšแƒแƒ‘แƒ แƒ—แƒแƒ•แƒแƒ“ แƒ’แƒแƒ›แƒแƒฉแƒœแƒ“แƒ แƒ‘แƒ˜แƒ แƒ—แƒ•แƒจแƒ˜ 4.16, แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒ“แƒ˜แƒ“แƒ˜ แƒฎแƒœแƒ˜แƒก แƒ’แƒแƒœแƒ›แƒแƒ•แƒšแƒแƒ‘แƒแƒจแƒ˜ แƒ˜แƒก แƒซแƒแƒšแƒ˜แƒแƒœ "แƒœแƒ”แƒ“แƒšแƒ˜" แƒ˜แƒงแƒ แƒ“แƒ แƒ แƒ”แƒ’แƒฃแƒšแƒแƒ แƒฃแƒšแƒแƒ“ แƒ˜แƒฌแƒ•แƒ”แƒ•แƒ“แƒ แƒ‘แƒ˜แƒ แƒ—แƒ•แƒ˜แƒก แƒžแƒแƒœแƒ˜แƒ™แƒแƒก. แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒ“แƒแƒกแƒขแƒแƒ‘แƒ˜แƒšแƒฃแƒ แƒ“แƒ 2019 แƒฌแƒšแƒ˜แƒก แƒ“แƒ”แƒ™แƒ”แƒ›แƒ‘แƒ”แƒ แƒจแƒ˜, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒ“แƒ LTS แƒ‘แƒ˜แƒ แƒ—แƒ•แƒ”แƒ‘แƒ˜ 4.19.90 แƒ“แƒ 5.4.5.
  • แƒ’แƒแƒ“แƒแƒฌแƒ”แƒ แƒ”แƒ— iptables แƒฌแƒ”แƒกแƒ”แƒ‘แƒ˜ nftables แƒคแƒแƒ แƒ›แƒแƒขแƒจแƒ˜ nftables-แƒ˜แƒก แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒฃแƒแƒฎแƒšแƒ”แƒกแƒ˜ แƒ•แƒ”แƒ แƒกแƒ˜แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—. แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒ–แƒฃแƒกแƒขแƒแƒ“ 0.9.0 แƒ•แƒ”แƒ แƒกแƒ˜แƒแƒจแƒ˜

แƒ—แƒฃ แƒžแƒ˜แƒ แƒ•แƒ”แƒš แƒžแƒฃแƒœแƒฅแƒขแƒ—แƒแƒœ แƒžแƒ แƒ˜แƒœแƒชแƒ˜แƒžแƒจแƒ˜ แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒœแƒแƒ—แƒ”แƒšแƒ˜แƒ, แƒ›แƒ—แƒแƒ•แƒแƒ แƒ˜แƒ แƒแƒ  แƒ“แƒแƒ’แƒแƒ•แƒ˜แƒฌแƒงแƒ“แƒ”แƒก แƒแƒฌแƒงแƒแƒ‘แƒ˜แƒก แƒ“แƒ แƒแƒก แƒ›แƒแƒ“แƒฃแƒšแƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒแƒจแƒ˜ แƒฉแƒแƒ แƒ—แƒ•แƒ (CONFIG_NFT_FLOW_OFFLOAD=m), แƒ›แƒแƒจแƒ˜แƒœ แƒ›แƒ”แƒแƒ แƒ” แƒžแƒฃแƒœแƒฅแƒขแƒ˜ แƒ›แƒแƒ˜แƒ—แƒฎแƒแƒ•แƒก แƒ’แƒแƒœแƒ›แƒแƒ แƒขแƒ”แƒ‘แƒแƒก. nftables แƒฌแƒ”แƒกแƒ”แƒ‘แƒ˜ แƒแƒฆแƒฌแƒ”แƒ แƒ˜แƒšแƒ˜แƒ แƒกแƒ แƒฃแƒšแƒ˜แƒแƒ“ แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ”แƒ‘แƒฃแƒšแƒแƒ“, แƒ•แƒ˜แƒ“แƒ แƒ” iptables-แƒจแƒ˜. แƒ“แƒแƒ™แƒฃแƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒ แƒแƒ•แƒšแƒ”แƒœแƒก แƒ—แƒ˜แƒ—แƒฅแƒ›แƒ˜แƒก แƒงแƒ•แƒ”แƒšแƒ แƒžแƒฃแƒœแƒฅแƒขแƒก, แƒแƒ แƒ˜แƒก แƒแƒกแƒ”แƒ•แƒ” แƒ’แƒแƒœแƒกแƒแƒ™แƒฃแƒ—แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ’แƒแƒ“แƒแƒ›แƒงแƒ•แƒแƒœแƒ”แƒ‘แƒ˜ แƒฌแƒ”แƒกแƒ”แƒ‘แƒ˜ iptable-แƒ“แƒแƒœ nftable-แƒ›แƒ“แƒ”. แƒแƒ›แƒ˜แƒขแƒแƒ›, แƒ›แƒ” แƒ›แƒฎแƒแƒšแƒแƒ“ 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
        }
}

แƒœแƒแƒ™แƒแƒ“แƒ˜แƒก แƒ’แƒแƒ“แƒ›แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ˜แƒ— แƒ”แƒก แƒชแƒแƒขแƒ แƒฃแƒคแƒ แƒ แƒ แƒ—แƒฃแƒšแƒ˜แƒ, แƒ›แƒแƒ’แƒ แƒแƒ› แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒ’แƒแƒกแƒแƒ’แƒ”แƒ‘แƒ˜:

#! /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 แƒ‘แƒ˜แƒ แƒ—แƒ•แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—, แƒ›แƒแƒ’แƒ แƒแƒ› แƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒก NAT-แƒก iptables-แƒจแƒ˜. (NAT4) แƒ“แƒ nftable-แƒ”แƒ‘แƒจแƒ˜ (NAT5).

แƒกแƒฌแƒ แƒแƒคแƒ˜ แƒ›แƒแƒ แƒจแƒ แƒฃแƒขแƒ˜แƒ–แƒแƒชแƒ˜แƒ แƒ“แƒ NAT Linux-แƒจแƒ˜

แƒกแƒ™แƒ แƒ˜แƒœแƒจแƒแƒขแƒจแƒ˜ แƒแƒ  แƒแƒ แƒ˜แƒก แƒžแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒ˜แƒก แƒ’แƒ แƒแƒคแƒ˜แƒ™แƒ˜ แƒฌแƒแƒ›แƒจแƒ˜, แƒ›แƒแƒ’แƒ แƒแƒ› แƒแƒ› แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ˜แƒก แƒžแƒ แƒแƒคแƒ˜แƒšแƒจแƒ˜ แƒžแƒแƒ™แƒ”แƒขแƒ˜แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ แƒ–แƒแƒ›แƒแƒ แƒ“แƒแƒแƒฎแƒšแƒแƒ”แƒ‘แƒ˜แƒ— 800 แƒ‘แƒแƒ˜แƒขแƒ˜, แƒแƒกแƒ” แƒ แƒแƒ›, แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ”แƒ‘แƒ˜ แƒแƒฆแƒฌแƒ”แƒ•แƒก 1.5 แƒ›แƒ”แƒ’แƒแƒžแƒ˜แƒฅแƒกแƒแƒ›แƒ“แƒ”. แƒ แƒแƒ’แƒแƒ แƒช แƒฎแƒ”แƒ“แƒแƒ•แƒ—, nftables แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒก แƒแƒฅแƒ•แƒก แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒฃแƒ–แƒแƒ แƒ›แƒแƒ–แƒแƒ แƒ˜ แƒ แƒ”แƒ–แƒ”แƒ แƒ•แƒ˜. แƒแƒ›แƒŸแƒแƒ›แƒแƒ“, แƒ”แƒก แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜ แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒก 30 แƒ’แƒ‘แƒ˜แƒข/แƒฌแƒ›-แƒ›แƒ“แƒ” 3 แƒ›แƒ”แƒ’แƒแƒžแƒ˜แƒข/แƒฌแƒ› แƒกแƒ˜แƒฉแƒฅแƒแƒ แƒ˜แƒ— แƒ“แƒ แƒแƒจแƒ™แƒแƒ แƒแƒ“ แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ แƒ“แƒแƒแƒ™แƒ›แƒแƒงแƒแƒคแƒ˜แƒšแƒแƒก แƒฅแƒกแƒ”แƒšแƒ˜แƒก แƒคแƒ˜แƒ–แƒ˜แƒ™แƒฃแƒ แƒ˜ แƒจแƒ”แƒ–แƒฆแƒฃแƒ“แƒ•แƒ 40 แƒ’แƒ‘แƒ˜แƒขแƒ˜/แƒฌแƒ›, แƒฎแƒแƒšแƒ แƒแƒฅแƒ•แƒก CPU แƒ—แƒแƒ•แƒ˜แƒกแƒฃแƒคแƒแƒšแƒ˜ แƒ แƒ”แƒกแƒฃแƒ แƒกแƒ”แƒ‘แƒ˜.

แƒ•แƒ˜แƒ›แƒ”แƒ“แƒแƒ•แƒœแƒ”แƒ‘, แƒ แƒแƒ› แƒ”แƒก แƒ›แƒแƒกแƒแƒšแƒ แƒกแƒแƒกแƒแƒ แƒ’แƒ”แƒ‘แƒšแƒ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒฅแƒกแƒ”แƒšแƒ˜แƒก แƒ˜แƒœแƒŸแƒ˜แƒœแƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒชแƒ“แƒ˜แƒšแƒแƒ‘แƒ”แƒœ แƒ’แƒแƒแƒฃแƒ›แƒฏแƒแƒ‘แƒ”แƒกแƒแƒœ แƒ—แƒแƒ•แƒ˜แƒแƒœแƒ—แƒ˜ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ.

แƒฌแƒงแƒแƒ แƒ: www.habr.com

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ