{"id":81265,"date":"2020-05-12T01:42:43","date_gmt":"2020-05-11T23:42:43","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/bystryj-routing-i-nat-v-linux"},"modified":"2020-05-12T01:42:43","modified_gmt":"2020-05-11T23:42:43","slug":"bystryj-routing-i-nat-v-linux","status":"publish","type":"post","link":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/bystryj-routing-i-nat-v-linux","title":{"rendered":"Routage rapide et NAT sous Linux","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Avec l'\u00e9puisement des adresses IPv4, de nombreux op\u00e9rateurs de t\u00e9l\u00e9communications ont d\u00fb organiser l'acc\u00e8s de leurs clients au r\u00e9seau par le biais de la traduction d'adresses. Dans cet article, je vais expliquer comment obtenir des performances de niveau Carrier Grade NAT sur des serveurs classiques.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>Un peu d'histoire<\/h3>\n<p>\nLa question de l'\u00e9puisement de l'espace d'adresses IPv4 n'est plus nouvelle. \u00c0 un certain moment, des listes d'attente sont apparues chez RIPE, puis des \u00e9changes ont vu le jour, o\u00f9 des blocs d'adresses \u00e9taient \u00e9chang\u00e9s et des contrats de location \u00e9taient conclus. Progressivement, les op\u00e9rateurs de t\u00e9l\u00e9communications ont commenc\u00e9 \u00e0 fournir des services d'acc\u00e8s \u00e0 Internet par le biais de la traduction d'adresses et de ports. Certains n'ont pas eu assez d'adresses pour attribuer une adresse \u00ab blanche \u00bb \u00e0 chaque abonn\u00e9, tandis que d'autres ont commenc\u00e9 \u00e0 \u00e9conomiser de l'argent en renon\u00e7ant \u00e0 l'achat d'adresses sur le march\u00e9 secondaire. Les fabricants de mat\u00e9riel r\u00e9seau ont soutenu cette id\u00e9e, car cette fonctionnalit\u00e9 n\u00e9cessite g\u00e9n\u00e9ralement des modules d'extension suppl\u00e9mentaires ou des licences. Par exemple, chez Juniper, dans la gamme de routeurs MX (sauf les derniers MX104 et MX204), la r\u00e9alisation de NAPT peut se faire sur une carte de service d\u00e9di\u00e9e MS-MIC, sur le Cisco ASR1k, une licence CGN est requise, et sur le Cisco ASR9k \u2014 un module s\u00e9par\u00e9 A9K-ISM-100 avec la licence A9K-CGN-LIC. En somme, cette option a un co\u00fbt non n\u00e9gligeable.<\/p>\n<h3>IPTables<\/h3>\n<p>\nLa t\u00e2che d'ex\u00e9cuter le NAT ne n\u00e9cessite pas de ressources de calcul sp\u00e9cialis\u00e9es, elle peut \u00eatre r\u00e9alis\u00e9e par des processeurs g\u00e9n\u00e9ralistes, comme ceux qui sont install\u00e9s par exemple dans n'importe quel routeur domestique. \u00c0 l'\u00e9chelle d'un op\u00e9rateur de t\u00e9l\u00e9communications, ce probl\u00e8me peut \u00eatre r\u00e9solu en utilisant des serveurs classiques sous FreeBSD (ipfw\/pf) ou GNU\/Linux (iptables). Nous ne consid\u00e9rerons pas FreeBSD, car j'ai abandonn\u00e9 l'utilisation de ce syst\u00e8me d'exploitation depuis assez longtemps, nous allons donc nous concentrer sur GNU\/Linux.<\/p>\n<p>Activer la traduction d'adresses n'est pas tr\u00e8s compliqu\u00e9. Il suffit d'\u00e9crire une r\u00e8gle dans iptables dans la table nat :<\/p>\n<pre><code class=\"bash\">iptables -t nat -A POSTROUTING -s 100.64.0.0\/10 -j SNAT --to - --persistent\n<\/code><\/pre>\n<p>\nLe syst\u00e8me d'exploitation chargera le module nf_conntrack, qui surveillera toutes les connexions actives et effectuera les transformations n\u00e9cessaires. Il y a quelques subtilit\u00e9s \u00e0 prendre en compte. Tout d'abord, \u00e9tant donn\u00e9 qu'il s'agit de NAT \u00e0 l'\u00e9chelle d'un op\u00e9rateur de t\u00e9l\u00e9communications, il est n\u00e9cessaire d'ajuster les d\u00e9lais d'expiration, car avec les valeurs par d\u00e9faut, la taille de la table de traductions augmentera rapidement jusqu'\u00e0 des niveaux catastrophiques. Voici un exemple de configurations que j'ai utilis\u00e9es sur mes serveurs :<\/p>\n<pre><code class=\"bash\">net.ipv4.ip_forward = 1\nnet.ipv4.ip_local_port_range = 8192 65535\n\nnet.netfilter.nf_conntrack_generic_timeout = 300\nnet.netfilter.nf_conntrack_tcp_timeout_syn_sent = 60\nnet.netfilter.nf_conntrack_tcp_timeout_syn_recv = 60\nnet.netfilter.nf_conntrack_tcp_timeout_established = 600\nnet.netfilter.nf_conntrack_tcp_timeout_fin_wait = 60\nnet.netfilter.nf_conntrack_tcp_timeout_close_wait = 45\nnet.netfilter.nf_conntrack_tcp_timeout_last_ack = 30\nnet.netfilter.nf_conntrack_tcp_timeout_time_wait = 120\nnet.netfilter.nf_conntrack_tcp_timeout_close = 10\nnet.netfilter.nf_conntrack_tcp_timeout_max_retrans = 300\nnet.netfilter.nf_conntrack_tcp_timeout_unacknowledged = 300\nnet.netfilter.nf_conntrack_udp_timeout = 30\nnet.netfilter.nf_conntrack_udp_timeout_stream = 60\nnet.netfilter.nf_conntrack_icmpv6_timeout = 30\nnet.netfilter.nf_conntrack_icmp_timeout = 30\nnet.netfilter.nf_conntrack_events_retry_timeout = 15\nnet.netfilter.nf_conntrack_checksum=0\n<\/code><\/pre>\n<p>\nEt deuxi\u00e8mement, puisque par d\u00e9faut la taille de la table de traductions n'est pas con\u00e7ue pour fonctionner dans un environnement d'op\u00e9rateur de t\u00e9l\u00e9communications, elle doit \u00eatre augment\u00e9e :<\/p>\n<pre><code class=\"plaintext\">net.netfilter.nf_conntrack_max = 3145728\n<\/code><\/pre>\n<p>\n Il est \u00e9galement n\u00e9cessaire d'augmenter le nombre de buckets pour la table de hachage, qui stocke toutes les traductions (c'est une option du module nf_conntrack) : <\/p>\n<pre><code class=\"plaintext\">options nf_conntrack hashsize=1572864\n<\/code><\/pre>\n<p>\nApr\u00e8s ces manipulations simples, on obtient une construction fonctionnelle qui peut traduire un grand nombre d'adresses clients en un pool d'adresses externes. Cependant, la performance de cette solution laisse \u00e0 d\u00e9sirer. Dans mes premi\u00e8res tentatives d'utilisation de GNU\/Linux pour NAT (environ en 2013), j'ai pu atteindre une performance d'environ 7 Gbit\/s avec 0,8 Mpps sur un serveur (Xeon E5-1650v2). Depuis, de nombreuses optimisations ont \u00e9t\u00e9 apport\u00e9es \u00e0 la pile r\u00e9seau du noyau GNU\/Linux, et la performance d'un serveur sur le m\u00eame mat\u00e9riel a pratiquement augment\u00e9 \u00e0 18-19 Gbit\/s avec 1,8-1,9 Mpps (ce furent des valeurs limites), mais le besoin de volume de trafic trait\u00e9 par un seul serveur a augment\u00e9 beaucoup plus rapidement. En fin de compte, des sch\u00e9mas de r\u00e9partition de la charge entre diff\u00e9rents serveurs ont \u00e9t\u00e9 \u00e9labor\u00e9s, mais tout cela a augment\u00e9 la complexit\u00e9 de la configuration, de la maintenance et du maintien de la qualit\u00e9 des services fournis.<\/p>\n<h3>NFTables<\/h3>\n<p>\nActuellement, une tendance populaire dans l'\u00ab empilement de paquets \u00bb est l'utilisation de DPDK et XDP. Ce sujet a suscit\u00e9 de nombreux articles, plusieurs pr\u00e9sentations ont \u00e9t\u00e9 r\u00e9alis\u00e9es, et des produits commerciaux sont apparus (par exemple, SKAT de VasExperts). Cependant, dans un contexte de ressources limit\u00e9es pour les d\u00e9veloppeurs chez les op\u00e9rateurs de t\u00e9l\u00e9communications, cr\u00e9er soi-m\u00eame une \u00ab solution \u00bb bas\u00e9e sur ces frameworks est assez probl\u00e9matique. Exploiter une telle solution par la suite sera beaucoup plus compliqu\u00e9, notamment en ce qui concerne le d\u00e9veloppement d'outils de diagnostic. Par exemple, l'outil tcpdump standard avec DPDK ne fonctionnera pas simplement, et il ne \u00ab verra \u00bb pas non plus les paquets renvoy\u00e9s sur les lignes \u00e0 l'aide de XDP. Au milieu de toutes les discussions sur les nouvelles technologies de transfert de paquets vers l'espace utilisateur, sont rest\u00e9es inaper\u00e7ues <noindex><a rel=\"nofollow\" href=\"https:\/\/netdevconf.info\/0x13\/session.html?workshop-netfilter-mini\">les rapports<\/a><\/noindex> et <noindex><a rel=\"nofollow\" href=\"https:\/\/lwn.net\/Articles\/738214\/\">article<\/a><\/noindex> Pablo Neira Ayuso, le mainteneur d'iptables, sur le d\u00e9veloppement de l'externalisation de flux dans nftables. Examinons ce m\u00e9canisme plus en d\u00e9tail.<\/p>\n<p>L'id\u00e9e principale est que si le routeur a trait\u00e9 des paquets d'une m\u00eame session dans les deux sens du flux (la session TCP est pass\u00e9e \u00e0 l'\u00e9tat ESTABLISHED), il n'est pas n\u00e9cessaire de faire passer les paquets suivants de cette session par toutes les r\u00e8gles du pare-feu, car toutes ces v\u00e9rifications se soldront de toute fa\u00e7on par la transmission du paquet pour un routage ult\u00e9rieur. De plus, il n'est pas n\u00e9cessaire de choisir un itin\u00e9raire \u2014 nous savons d\u00e9j\u00e0 \u00e0 quel interface et \u00e0 quel h\u00f4te envoyer les paquets dans le cadre de cette session. Il ne reste qu'\u00e0 conserver cette information et \u00e0 l'utiliser pour le routage \u00e0 un stade pr\u00e9coce du traitement du paquet. Lors de l'ex\u00e9cution de NAT, il est \u00e9galement n\u00e9cessaire de conserver des informations sur les modifications d'adresses et de ports effectu\u00e9es par le module nf_conntrack. Oui, bien s\u00fbr, dans ce cas, divers analyseurs et d'autres r\u00e8gles de statistique d'information dans iptables ne fonctionneront plus, mais dans le cadre de la t\u00e2che d'un NAT distinct ou, par exemple, d'une fronti\u00e8re \u2014 ce n'est pas si important, car les services sont r\u00e9partis sur diff\u00e9rents appareils.<\/p>\n<h4>Configuration<\/h4>\n<p>\nPour profiter de cette fonctionnalit\u00e9, nous devons :<\/p>\n<ul>\n<li>Utiliser un noyau r\u00e9cent. Bien que cette fonctionnalit\u00e9 soit apparue pour la premi\u00e8re fois dans le noyau 4.16, elle est rest\u00e9e assez \u00ab brute \u00bb pendant longtemps et provoquait r\u00e9guli\u00e8rement des kernel panic. Tout a \u00e9t\u00e9 stabilis\u00e9 vers d\u00e9cembre 2019, lorsque les noyaux LTS 4.19.90 et 5.4.5 ont \u00e9t\u00e9 publi\u00e9s.<\/li>\n<li>R\u00e9\u00e9crire les r\u00e8gles iptables au format nftables, en utilisant une version relativement r\u00e9cente de nftables. Cela fonctionne parfaitement avec la version 0.9.0.<\/li>\n<\/ul>\n<p>\nSi le premier point est en principe clair, il ne faut pas oublier d'activer le module dans la configuration lors de la compilation (CONFIG_NFT_FLOW_OFFLOAD=m). Le deuxi\u00e8me point n\u00e9cessite des explications. Les r\u00e8gles nftables sont d\u00e9crites de mani\u00e8re tr\u00e8s diff\u00e9rente de celles d'iptables. <noindex><a rel=\"nofollow\" href=\"https:\/\/wiki.nftables.org\/wiki-nftables\/index.php\/Main_Page\">Documentation<\/a><\/noindex> aborde presque tous les aspects, il existe \u00e9galement des <noindex><a rel=\"nofollow\" href=\"https:\/\/wiki.nftables.org\/wiki-nftables\/index.php\/Moving_from_iptables_to_nftables\">convertisseurs<\/a><\/noindex> de r\u00e8gles d'iptables vers nftables. Je vais donc donner un exemple de configuration NAT et de flow offload. Une petite l\u00e9gende pour l'exemple : &lt;i_if&gt;, &lt;o_if&gt; \u2014 ce sont les interfaces r\u00e9seau par lesquelles passe le trafic, il peut en r\u00e9alit\u00e9 y en avoir plus de deux. &lt;pool_addr_start&gt;, &lt;pool_addr_end&gt; \u2014 l'adresse de d\u00e9but et de fin de la plage des adresses \u00ab blanches \u00bb.<\/p>\n<p>La configuration NAT est tr\u00e8s simple :<\/p>\n<pre><code class=\"bash\">#! \/usr\/sbin\/nft -f\n\ntable nat {\n        chain postrouting {\n                type nat hook postrouting priority 100;\n                oif &lt;o_if&gt; snat to &lt;pool_addr_start&gt;-&lt;pool_addr_end&gt; persistent\n        }\n}\n<\/code><\/pre>\n<p>\nAvec le flow offload, c'est un peu plus compliqu\u00e9, mais tout \u00e0 fait compr\u00e9hensible :<\/p>\n<pre><code class=\"bash\">#! \/usr\/sbin\/nft -f\n\ntable inet filter {\n        flowtable fastnat {\n                hook ingress priority 0\n                devices = { &lt;i_if&gt;, &lt;o_if&gt; }\n        }\n\n        chain forward {\n                type filter hook forward priority 0; policy accept;\n                ip protocol { tcp , udp } flow offload @fastnat;\n        }\n}\n<\/code><\/pre>\n<p>\nVoil\u00e0, c'est toute la configuration. Maintenant, tout le trafic TCP\/UDP ira dans la table fastnat et sera trait\u00e9 beaucoup plus rapidement.<\/p>\n<h3>R\u00e9sultats<\/h3>\n<p>\nPour illustrer \u00e0 quel point c'est \u00ab beaucoup plus rapide \u00bb, je joins une capture d'\u00e9cran de la charge sur deux serveurs r\u00e9els, avec la m\u00eame configuration (Xeon E5-1650v2), r\u00e9gl\u00e9s de la m\u00eame mani\u00e8re, utilisant le m\u00eame noyau Linux, mais ex\u00e9cutant NAT avec iptables (NAT4) et avec nftables (NAT5).<\/p>\n<p><img decoding=\"async\" alt=\"Routage rapide et NAT sous Linux\" src=\"\/wp-content\/uploads\/2020\/05\/94bd3f58bf499ceb9837cd771cc9ef9f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSur la capture d'\u00e9cran, il n'y a pas de graphique des paquets par seconde, mais dans le profil de charge de ces serveurs, la taille moyenne des paquets est d'environ 800 octets, donc les valeurs atteignent 1.5Mpps. Comme on peut le voir, la marge de performance du serveur avec nftables est \u00e9norme. \u00c0 ce jour, ce serveur traite jusqu'\u00e0 30Gbit\/s \u00e0 3Mpps et est clairement capable d'atteindre la limite physique du r\u00e9seau \u00e0 40Gbps, tout en ayant des ressources CPU disponibles.<\/p>\n<p>J'esp\u00e8re que ce mat\u00e9riel sera utile aux ing\u00e9nieurs r\u00e9seaux qui tentent d'am\u00e9liorer la performance de leurs serveurs.<br \/>\n<br \/>Source : <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/501234\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u043e \u043c\u0435\u0440\u0435 \u0438\u0441\u0447\u0435\u0440\u043f\u0430\u043d\u0438\u044f \u0430\u0434\u0440\u0435\u0441\u043e\u0432 IPv4, \u043c\u043d\u043e\u0433\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u0441\u0432\u044f\u0437\u0438 \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0438\u0441\u044c \u0441 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c\u044e \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u0441\u0432\u043e\u0438\u0445 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 \u0432 \u0441\u0435\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0446\u0438\u0438 \u0430\u0434\u0440\u0435\u0441\u043e\u0432. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0443\u0440\u043e\u0432\u043d\u044f Carrier Grade NAT \u043d\u0430 commodity \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u0445. \u041d\u0435\u043c\u043d\u043e\u0433\u043e \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u0422\u0435\u043c\u0430 \u0438\u0441\u0447\u0435\u0440\u043f\u0430\u043d\u0438\u044f \u0430\u0434\u0440\u0435\u0441\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 IPv4 \u0443\u0436\u0435 \u043d\u0435 \u043d\u043e\u0432\u0430. \u0412 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043c\u043e\u043c\u0435\u043d\u0442 \u0432 RIPE \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":81266,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-81265","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u043e \u043c\u0435\u0440\u0435 \u0438\u0441\u0447\u0435\u0440\u043f\u0430\u043d\u0438\u044f \u0430\u0434\u0440\u0435\u0441\u043e\u0432 IPv4, \u043c\u043d\u043e\u0433\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u0441\u0432\u044f\u0437\u0438 \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0438\u0441\u044c \u0441 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c\u044e \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u0441\u0432\u043e\u0438\u0445 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 \u0432 \u0441\u0435\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0446\u0438\u0438 \u0430\u0434\u0440\u0435\u0441\u043e\u0432.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/bystryj-routing-i-nat-v-linux\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"fr_FR\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0411\u044b\u0441\u0442\u0440\u044b\u0439 \u0440\u043e\u0443\u0442\u0438\u043d\u0433 \u0438 NAT \u0432 Linux | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u043e \u043c\u0435\u0440\u0435 \u0438\u0441\u0447\u0435\u0440\u043f\u0430\u043d\u0438\u044f \u0430\u0434\u0440\u0435\u0441\u043e\u0432 IPv4, \u043c\u043d\u043e\u0433\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u0441\u0432\u044f\u0437\u0438 \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0438\u0441\u044c \u0441 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c\u044e \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u0441\u0432\u043e\u0438\u0445 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 \u0432 \u0441\u0435\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0446\u0438\u0438 \u0430\u0434\u0440\u0435\u0441\u043e\u0432.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/bystryj-routing-i-nat-v-linux\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-05-11T23:42:43+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-05-11T23:42:43+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47 Routage rapide et NAT sous Linux | ProHoster","description":"Alors que les adresses IPv4 s'\u00e9puisent, de nombreux op\u00e9rateurs de t\u00e9l\u00e9communications ont \u00e9t\u00e9 confront\u00e9s \u00e0 la n\u00e9cessit\u00e9 d'organiser l'acc\u00e8s de leurs clients \u00e0 Internet \u00e0 travers la traduction d'adresses.","canonical_url":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/bystryj-routing-i-nat-v-linux","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"fr_FR","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0411\u044b\u0441\u0442\u0440\u044b\u0439 \u0440\u043e\u0443\u0442\u0438\u043d\u0433 \u0438 NAT \u0432 Linux | ProHoster","og:description":"\u041f\u043e \u043c\u0435\u0440\u0435 \u0438\u0441\u0447\u0435\u0440\u043f\u0430\u043d\u0438\u044f \u0430\u0434\u0440\u0435\u0441\u043e\u0432 IPv4, \u043c\u043d\u043e\u0433\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u0441\u0432\u044f\u0437\u0438 \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0438\u0441\u044c \u0441 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c\u044e \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u0441\u0432\u043e\u0438\u0445 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 \u0432 \u0441\u0435\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0446\u0438\u0438 \u0430\u0434\u0440\u0435\u0441\u043e\u0432.","og:url":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/bystryj-routing-i-nat-v-linux","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-05-11T23:42:43+00:00","article:modified_time":"2020-05-11T23:42:43+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"81265","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 16:01:23","updated":"2022-09-28 04:47:17","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/81265","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/comments?post=81265"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/81265\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media\/81266"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media?parent=81265"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/categories?post=81265"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/tags?post=81265"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}