{"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\/pl\/blog\/administrirovanie\/bystryj-routing-i-nat-v-linux","title":{"rendered":"Szybkie routowanie i NAT w systemie Linux","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>W miar\u0119 wyczerpywania si\u0119 adres\u00f3w IPv4, wielu operator\u00f3w telekomunikacyjnych zmierzy\u0142o si\u0119 z konieczno\u015bci\u0105 organizacji dost\u0119pu swoich klient\u00f3w do sieci za pomoc\u0105 translacji adres\u00f3w. W tym artykule opowiem, jak mo\u017cna osi\u0105gn\u0105\u0107 wydajno\u015b\u0107 na poziomie Carrier Grade NAT na serwerach typu commodity.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>Historia<\/h3>\n<p>\nTemat wyczerpywania si\u0119 przestrzeni adresowej IPv4 przesta\u0142 by\u0107 nowo\u015bci\u0105. W pewnym momencie w RIPE pojawi\u0142y si\u0119 listy oczekuj\u0105cych, a nast\u0119pnie zacz\u0119\u0142y powstawa\u0107 gie\u0142dy, na kt\u00f3rych handlowano blokami adres\u00f3w oraz zawierano transakcje dotycz\u0105ce ich wynajmu. Z czasem operatorzy telekomunikacyjni zacz\u0119li oferowa\u0107 us\u0142ugi dost\u0119pu do Internetu za pomoc\u0105 translacji adres\u00f3w i port\u00f3w. Niekt\u00f3rzy nie zd\u0105\u017cyli uzyska\u0107 wystarczaj\u0105cej liczby adres\u00f3w, aby przydzieli\u0107 \"bia\u0142y\" adres ka\u017cdemu abonentowi, a inni zacz\u0119li oszcz\u0119dza\u0107, rezygnuj\u0105c z zakupu adres\u00f3w na rynku wt\u00f3rnym. Producenci sprz\u0119tu sieciowego wsparli t\u0119 ide\u0119, poniewa\u017c ten funkcjonalno\u015b\u0107 zazwyczaj wymaga dodatkowych modu\u0142\u00f3w rozszerze\u0144 lub licencji. Na przyk\u0142ad produkuj\u0105c routery MX, firma Juniper (z wyj\u0105tkiem najnowszych MX104 i MX204) umo\u017cliwia wykonywanie NAPT na oddzielnej karcie serwisowej MS-MIC, podczas gdy na Cisco ASR1k wymagana jest licencja CGN, a na Cisco ASR9k \u2014 oddzielny modu\u0142 A9K-ISM-100 oraz licencja A9K-CGN-LIC do niego. Generalnie, zabawa ta nie jest tania.<\/p>\n<h3>IPTables<\/h3>\n<p>\nZadanie wykonywania NAT nie wymaga specjalistycznych zasob\u00f3w obliczeniowych; mog\u0105 si\u0119 nim zaj\u0105\u0107 procesory og\u00f3lnego przeznaczenia, kt\u00f3re s\u0105 zainstalowane przyk\u0142adowo w ka\u017cdym domowym routerze. Na poziomie operatora telekomunikacyjnego zadanie to mo\u017cna rozwi\u0105za\u0107, korzystaj\u0105c z serwer\u00f3w commodity zarz\u0105dzanych przez FreeBSD (ipfw\/pf) lub GNU\/Linux (iptables). Nie b\u0119dziemy rozwa\u017ca\u0107 FreeBSD, poniewa\u017c od do\u015b\u0107 dawna zrezygnowa\u0142em z u\u017cywania tego systemu operacyjnego, wi\u0119c skupimy si\u0119 na GNU\/Linux.<\/p>\n<p>W\u0142\u0105czenie translacji adres\u00f3w nie jest wcale trudne. Na pocz\u0105tek nale\u017cy wprowadzi\u0107 regu\u0142\u0119 w iptables do tabeli 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>\nSystem operacyjny za\u0142adowuje modu\u0142 nf_conntrack, kt\u00f3ry b\u0119dzie \u015bledzi\u0107 wszystkie aktywne po\u0142\u0105czenia i wykonywa\u0107 niezb\u0119dne przekszta\u0142cenia. Istnieje kilka niuans\u00f3w. Po pierwsze, poniewa\u017c m\u00f3wimy o NAT w skali operatora telekomunikacyjnego, konieczne jest dostosowanie timeout\u00f3w, poniewa\u017c przy warto\u015bciach domy\u015blnych rozmiar tabeli translacji szybko wzro\u015bnie do katastrofalnych rozmiar\u00f3w. Poni\u017cej przyk\u0142ad ustawie\u0144, kt\u00f3re u\u017cy\u0142em na swoich serwerach:<\/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>\nPo drugie, poniewa\u017c domy\u015blny rozmiar tabeli translacji nie jest dostosowany do pracy w warunkach operatora telekomunikacyjnego, nale\u017cy go zwi\u0119kszy\u0107:<\/p>\n<pre><code class=\"plaintext\">net.netfilter.nf_conntrack_max = 3145728\n<\/code><\/pre>\n<p>\n Nale\u017cy tak\u017ce zwi\u0119kszy\u0107 liczb\u0119 buckets w tablicy haszyuj\u0105cych, kt\u00f3ra przechowuje wszystkie translacje (to opcja modu\u0142u nf_conntrack): <\/p>\n<pre><code class=\"plaintext\">options nf_conntrack hashsize=1572864\n<\/code><\/pre>\n<p>\nPo tych prostych manipulacjach otrzymujemy dobrze dzia\u0142aj\u0105c\u0105 konstrukcj\u0119, kt\u00f3ra mo\u017ce t\u0142umaczy\u0107 du\u017c\u0105 liczb\u0119 adres\u00f3w klient\u00f3w na pul\u0119 zewn\u0119trznych. Jednak wydajno\u015b\u0107 tego rozwi\u0105zania pozostawia wiele do \u017cyczenia. W swoich pierwszych pr\u00f3bach wykorzystania GNU\/Linux do NAT (oko\u0142o 2013 roku) uda\u0142o mi si\u0119 osi\u0105gn\u0105\u0107 wydajno\u015b\u0107 oko\u0142o 7Gbit\/s przy 0.8Mpps na jeden serwer (Xeon E5-1650v2). Od tego czasu w stosie sieciowym j\u0105dra GNU\/Linux wprowadzono wiele r\u00f3\u017cnych optymalizacji, a wydajno\u015b\u0107 jednego serwera na tym samym sprz\u0119cie wzros\u0142a praktycznie do 18-19 Gbit\/s przy 1.8-1.9 Mpps (by\u0142y to warto\u015bci graniczne), ale potrzeba w zakresie przetwarzanego ruchu przez jeden serwer ros\u0142a znacznie szybciej. Ostatecznie opracowano schematy r\u00f3wnowa\u017cenia obci\u0105\u017cenia na r\u00f3\u017cne serwery, co zwi\u0119kszy\u0142o z\u0142o\u017cono\u015b\u0107 konfiguracji, utrzymania i zapewnienia jako\u015bci \u015bwiadczonych us\u0142ug.<\/p>\n<h3>NFTables<\/h3>\n<p>\nObecnie modnym trendem w programowym \u201eprzek\u0142adaniu pakiet\u00f3w\u201d jest stosowanie DPDK i XDP. Na ten temat napisano wiele artyku\u0142\u00f3w, odby\u0142o si\u0119 wiele r\u00f3\u017cnych wyst\u0105pie\u0144, a na rynku pojawi\u0142y si\u0119 komercyjne produkty (na przyk\u0142ad SKAT od VasExperts). Jednak w warunkach ograniczonych zasob\u00f3w programist\u00f3w w\u015br\u00f3d operator\u00f3w telekomunikacyjnych, samodzielne tworzenie jakiego\u015b \u201ewynalazku\u201d na bazie tych framework\u00f3w jest do\u015b\u0107 problematyczne. Wykorzystywanie takiego rozwi\u0105zania w przysz\u0142o\u015bci b\u0119dzie o wiele trudniejsze, szczeg\u00f3lnie dlatego, \u017ce konieczne b\u0119dzie opracowanie narz\u0119dzi diagnostycznych. Na przyk\u0142ad standardowy tcpdump z DPDK nie zadzia\u0142a, a pakiety wysy\u0142ane z powrotem do sieci za pomoc\u0105 XDP nie b\u0119d\u0105 przez niego \u201ewidziane\u201d. W obliczu wszystkich rozm\u00f3w na temat nowych technologii przesy\u0142ania pakiet\u00f3w w przestrzeni u\u017cytkownika, umkn\u0119\u0142y te <noindex><a rel=\"nofollow\" href=\"https:\/\/netdevconf.info\/0x13\/session.html?workshop-netfilter-mini\">sprawozdania<\/a><\/noindex> i <noindex><a rel=\"nofollow\" href=\"https:\/\/lwn.net\/Articles\/738214\/\">artyku\u0142u<\/a><\/noindex> Pablo Neira Ayuso, maintainer iptables, na temat rozwoju flow offloading w nftables. Przyjrzyjmy si\u0119 temu mechanizmowi bli\u017cej.<\/p>\n<p>G\u0142\u00f3wna idea polega na tym, \u017ce je\u015bli router przepu\u015bci\u0142 pakiety jednej sesji w obie strony strumienia (sesja TCP przesz\u0142a w stan ESTABLISHED), to nie ma potrzeby przepuszczania kolejnych pakiet\u00f3w tej sesji przez wszystkie zasady zapory, poniewa\u017c wszystkie te kontrole i tak zako\u0144cz\u0105 si\u0119 przekazaniem pakietu dalej do routingu. W\u0142a\u015bciwie r\u00f3wnie\u017c nie trzeba podejmowa\u0107 decyzji co do trasy \u2014 ju\u017c wiemy, na kt\u00f3ry interfejs i do kt\u00f3rego hosta nale\u017cy przekaza\u0107 pakiety w ramach tej sesji. Pozostaje tylko zachowa\u0107 te informacje i wykorzysta\u0107 je do routingu na wczesnym etapie przetwarzania pakietu. Przy wykonywaniu NAT konieczne jest dodatkowe zachowanie informacji o zmianach adres\u00f3w i port\u00f3w, przekszta\u0142conych przez modu\u0142 nf_conntrack. Tak, oczywi\u015bcie, w takim przypadku przestaj\u0105 dzia\u0142a\u0107 r\u00f3\u017cne policery i inne informacje\/statystyczne zasady w iptables, ale w ramach zadania oddzielnego NAT-u lub na przyk\u0142ad bordera \u2014 nie jest to a\u017c tak istotne, poniewa\u017c us\u0142ugi s\u0105 rozproszone na urz\u0105dzeniach.<\/p>\n<h4>Konfiguracja<\/h4>\n<p>\nAby skorzysta\u0107 z tej funkcji, musimy:<\/p>\n<ul>\n<li>U\u017cy\u0107 \u015bwie\u017cego j\u0105dra. Mimo \u017ce sama funkcjonalno\u015b\u0107 pojawi\u0142a si\u0119 ju\u017c w j\u0105drze 4.16, przez d\u0142ugi czas by\u0142a bardzo \u201esurowa\u201d i regularnie powodowa\u0142a kernel panic. Stabilizowa\u0142o si\u0119 to mniej wi\u0119cej w grudniu 2019 roku, kiedy to wydano j\u0105dra LTS 4.19.90 i 5.4.5.<\/li>\n<li>Przepisz zasady iptables w formacie nftables, u\u017cywaj\u0105c wystarczaj\u0105co nowej wersji nftables. Dzia\u0142a poprawnie w wersji 0.9.0<\/li>\n<\/ul>\n<p>\nJe\u015bli pierwszy punkt jest w zasadzie jasny, najwa\u017cniejsze to niezapomnienie o w\u0142\u0105czeniu modu\u0142u w konfiguracji podczas kompilacji (CONFIG_NFT_FLOW_OFFLOAD=m), to drugi punkt wymaga wyja\u015bnienia. Zasady nftables opisuje si\u0119 zupe\u0142nie inaczej ni\u017c w iptables. <noindex><a rel=\"nofollow\" href=\"https:\/\/wiki.nftables.org\/wiki-nftables\/index.php\/Main_Page\">Dokumentacja<\/a><\/noindex> ujawnia praktycznie wszystkie aspekty, s\u0105 te\u017c specjalne <noindex><a rel=\"nofollow\" href=\"https:\/\/wiki.nftables.org\/wiki-nftables\/index.php\/Moving_from_iptables_to_nftables\">konwertery<\/a><\/noindex> regu\u0142 z iptables do nftables. Dlatego przeka\u017c\u0119 tylko przyk\u0142ad konfiguracji NAT i flow offload. Kr\u00f3tkie wprowadzenie do przyk\u0142adu: <i>,  \u2014 to interfejsy sieciowe, przez kt\u00f3re przechodzi ruch, w rzeczywisto\u015bci mo\u017ce ich by\u0107 wi\u0119cej ni\u017c dwa. , \u2014 to pocz\u0105tkowy i ko\u0144cowy adres zakresu \u201ebia\u0142ych\u201d adres\u00f3w.<\/p>\n<p>Konfiguracja NAT jest bardzo prosta:<\/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>\nZ flow offload jest nieco bardziej skomplikowane, ale ca\u0142kowicie zrozumia\u0142e:<\/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>\nI to wszystko, teraz ca\u0142y ruch TCP\/UDP trafi do tabeli fastnat i b\u0119dzie przetwarzany znacznie szybciej.<\/p>\n<h3>Wyniki<\/h3>\n<p>\nAby pokaza\u0107, jak du\u017ca to 'znaczna' poprawa, do\u0142\u0105cz\u0119 zrzut ekranu z obci\u0105\u017ceniem dw\u00f3ch rzeczywistych serwer\u00f3w, o identycznych parametrach (Xeon E5-1650v2), identycznie skonfigurowanych, u\u017cywaj\u0105cych tego samego j\u0105dra Linux, ale realizuj\u0105cych NAT w iptables (NAT4) i w nftables (NAT5).<\/p>\n<p><img decoding=\"async\" alt=\"Szybkie routowanie i NAT w systemie Linux\" src=\"\/wp-content\/uploads\/2020\/05\/94bd3f58bf499ceb9837cd771cc9ef9f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNa zrzucie ekranu nie ma wykresu pakiet\u00f3w na sekund\u0119, ale w profilu obci\u0105\u017cenia tych serwer\u00f3w \u015bredni rozmiar pakietu wynosi oko\u0142o 800 bajt\u00f3w, wi\u0119c warto\u015bci osi\u0105gaj\u0105 do 1,5Mpps. Jak wida\u0107, rezerwa wydajno\u015bci serwera z nftables jest ogromna. Aktualnie ten serwer przetwarza do 30Gbit\/s przy 3Mpps i z pewno\u015bci\u0105 jest w stanie osi\u0105gn\u0105\u0107 fizyczne ograniczenie sieci 40Gbps, maj\u0105c jednocze\u015bnie wolne zasoby CPU.<\/p>\n<p>Mam nadziej\u0119, \u017ce ten materia\u0142 b\u0119dzie przydatny in\u017cynierom sieciowym, staraj\u0105cym si\u0119 poprawi\u0107 wydajno\u015b\u0107 swoich serwer\u00f3w.<br \/>\n<br \/>\u0179r\u00f3d\u0142o: <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.1.1 - 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\/pl\/blog\/administrirovanie\/bystryj-routing-i-nat-v-linux\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"pl_PL\" \/>\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\/pl\/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\udd47Szybkie routowanie i NAT w Linuxie | ProHoster","description":"W miar\u0119 wyczerpywania si\u0119 adres\u00f3w IPv4, wielu operator\u00f3w telekomunikacyjnych zmierzy\u0142o si\u0119 z konieczno\u015bci\u0105 organizowania dost\u0119pu swoich klient\u00f3w do sieci za pomoc\u0105 translacji adres\u00f3w.","canonical_url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/bystryj-routing-i-nat-v-linux","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pl_PL","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\/pl\/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\/pl\/wp-json\/wp\/v2\/posts\/81265","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/comments?post=81265"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/81265\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media\/81266"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media?parent=81265"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/categories?post=81265"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/tags?post=81265"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}