{"id":41051,"date":"2020-02-05T21:28:58","date_gmt":"2020-02-05T18:28:58","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/consul-iptables-3"},"modified":"2020-02-05T21:28:58","modified_gmt":"2020-02-05T18:28:58","slug":"consul-iptables-3","status":"publish","type":"post","link":"https:\/\/prohoster.info\/hu\/blog\/consul-iptables-3","title":{"rendered":"Consul + iptables = :3","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>2010-ben a c\u00e9gnek <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/wargaming\/\">Wargaming<\/a><\/noindex> 50 szervere \u00e9s egy egyszer\u0171 h\u00e1l\u00f3zati modellje volt: backend, frontend \u00e9s t\u0171zfal. A szerverek sz\u00e1ma n\u00f6vekedett, a modell bonyolultabb\u00e1 v\u00e1lt: stagingek, elk\u00fcl\u00f6n\u00edtett VLAN-ok ACL-el, majd VPN VRF-fel, L2 ACL-lel rendelkez\u0151 VLAN-ok, VRF ACL-lel az L3-on. Elkezdt\u00e9l sz\u00e9d\u00fclni? Itt m\u00e9g izgalmasabb lesz.<\/p>\n<p>Amikor a szerverek sz\u00e1ma 16 000-re n\u0151tt, lehetetlenn\u00e9 v\u00e1lt a k\u00fcl\u00f6nb\u00f6z\u0151 szegmensek kezel\u00e9s\u00e9nek k\u00f6nnyed m\u00f3don. Ez\u00e9rt egy m\u00e1sik megold\u00e1st tal\u00e1ltak ki. A Netfilter stack-et vett\u00e9k, hozz\u00e1adt\u00e1k a Consul-t adatforr\u00e1sk\u00e9nt, \u00edgy kaptak egy gyors, elosztott t\u0171zfalat. Ezzel helyettes\u00edtett\u00e9k az ACL-eket az \u00fatv\u00e1laszt\u00f3kon, \u00e9s haszn\u00e1lt\u00e1k mint k\u00fcls\u0151 \u00e9s bels\u0151 t\u0171zfalat. A dinamikus ir\u00e1ny\u00edt\u00e1s \u00e9rdek\u00e9ben a BEFW rendszert fejlesztett\u00e9k ki, amelyet mindenhol alkalmaztak: a felhaszn\u00e1l\u00f3k hozz\u00e1f\u00e9r\u00e9s\u00e9nek kezel\u00e9s\u00e9t\u0151l kezdve a h\u00e1l\u00f3zati szegmensek elszigetel\u00e9s\u00e9ig.<\/p>\n<p><img decoding=\"async\" alt=\"Consul + iptables = :3\" src=\"\/wp-content\/uploads\/2020\/02\/246e74278f413749a676599b5ce986a5.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHogyan m\u0171k\u00f6dik mindez, \u00e9s mi\u00e9rt \u00e9rdemes k\u00f6zelebbr\u0151l megn\u00e9zni ezt a rendszert, elmondja <strong>Ivan Agarov<\/strong> (<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/annmuor\/\" class=\"user_link\">annmuor<\/a><\/noindex>) \u2014 a Karbantart\u00f3 Oszt\u00e1lyinfrastrukt\u00fara Biztons\u00e1gi Csoportj\u00e1nak vezet\u0151je a Minszki Fejleszt\u00e9si K\u00f6zpontban. Ivan nagy rajong\u00f3ja a SELinux-nak, szereti a Perl-t \u00e9s k\u00f3dot \u00edr. Mint a kiberv\u00e9delem csoportvezet\u0151je, rendszeresen dolgozik napl\u00f3kkal, biztons\u00e1gi m\u00e1solatokkal \u00e9s K+F \u00fcgyekkel, hogy megv\u00e9dje a Wargaminget a hackerekt\u0151l \u00e9s biztos\u00edtsa a c\u00e9g \u00f6sszes j\u00e1t\u00e9kszerver\u00e9nek m\u0171k\u00f6d\u00e9s\u00e9t.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\n<center><div class=\"youtube-placeholder\" data-id=\"4zP67uYnsR4\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/4zP67uYnsR4\/hqdefault.jpg\" alt=\"Vide\u00f3 lej\u00e1tsz\u00e1sa\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><\/p>\n<h2>T\u00f6rt\u00e9nelmi h\u00e1tt\u00e9r<\/h2>\n<p>\nMiel\u0151tt mes\u00e9ln\u00e9k arr\u00f3l, hogyan csin\u00e1ltuk ezt, elmondom, hogy jutottunk el ide, \u00e9s mi\u00e9rt volt erre sz\u00fcks\u00e9g. Ehhez utazzunk vissza 9 \u00e9vet a m\u00faltba: 2010-be, amikor csak most jelentek meg a World of Tanks. A Wargamingnek k\u00f6r\u00fclbel\u00fcl 50 szervere volt.<\/p>\n<p><img decoding=\"async\" alt=\"Consul + iptables = :3\" src=\"\/wp-content\/uploads\/2020\/02\/64e1c2839363dbdf59ba5f11bb13530e.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<em>A c\u00e9g szerverek n\u00f6veked\u00e9si \u00fctemterve.<\/em><\/p>\n<p>Volt egy h\u00e1l\u00f3zati modell\u00fcnk. Az akkori id\u0151szakra optim\u00e1lis volt.<\/p>\n<p><img decoding=\"async\" alt=\"Consul + iptables = :3\" src=\"\/wp-content\/uploads\/2020\/02\/c0509324e2a83882a9792ba75612ceea.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<em>A h\u00e1l\u00f3zati modell 2010-ben.<\/em><\/p>\n<p>A frontenden rosszfi\u00fak laknak, akik \u00f6ssze akarnak t\u00f6rni minket, de van benne t\u0171zfal. A backendben nincs t\u0171zfal, de ott 50 szerver van, az \u00f6sszeset ismerj\u00fck. Minden j\u00f3l m\u0171k\u00f6dik.<\/p>\n<p>4 \u00e9v alatt a szerverpark 100-szoros\u00e1ra n\u0151tt, 5000-re. Megjelentek az els\u0151 elk\u00fcl\u00f6n\u00edtett h\u00e1l\u00f3zatok \u2014 stagingek: ezek nem l\u00e9phetnek be a produkci\u00f3ba, \u00e9s gyakran olyan dolgok forogtak itt, amelyek vesz\u00e9lyesek lehettek.<\/p>\n<p><img decoding=\"async\" alt=\"Consul + iptables = :3\" src=\"\/wp-content\/uploads\/2020\/02\/08e1d7670ce1a1346e49d87c67c4be1b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<em>A h\u00e1l\u00f3zati modell 2014-ben.<\/em><\/p>\n<p>Inerci\u00e1b\u00f3l ugyanazokat a hardvereket haszn\u00e1ltuk, \u00e9s minden munka elk\u00fcl\u00f6n\u00edtett VLAN-okon zajlott: a VLAN-okra ACL-eket \u00edrtak, amelyek megengedik vagy megakad\u00e1lyozz\u00e1k a kapcsol\u00f3d\u00e1st.<\/p>\n<p>2016-ra 8000 szerverre n\u0151tt a sz\u00e1muk. A Wargaming m\u00e1s st\u00fadi\u00f3kat v\u00e1s\u00e1rolt fel, tov\u00e1bbi partneri h\u00e1l\u00f3zatok megjelentek. \u00dagy t\u0171nik, hogy a mi\u00e9nk, de nem teljesen: a partnereknek a VLAN gyakran nem m\u0171k\u00f6dik, VPN-t kell haszn\u00e1lnunk VRF-fel, a szigetel\u00e9sek bonyolultabb\u00e1 v\u00e1ltak. Az ACL szigetel\u00e9sek kever\u00e9ke n\u0151tt.<\/p>\n<p><img decoding=\"async\" alt=\"Consul + iptables = :3\" src=\"\/wp-content\/uploads\/2020\/02\/a6580c9551730447e16d7881eb102275.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<em>H\u00e1l\u00f3zati modell 2016-ban.<\/em><\/p>\n<p>2018 elej\u00e9re a g\u00e9ppark 16 000-re n\u0151tt. 6 szegmens volt, a t\u00f6bbit nem sz\u00e1moltuk, bele\u00e9rtve a z\u00e1rtabbakat, amelyek p\u00e9nz\u00fcgyi adatokat t\u00e1roltak. Megjelentek a kont\u00e9nerh\u00e1l\u00f3zatok (Kubernetes), a DevOps, a felh\u0151h\u00e1l\u00f3zatok, amelyek VPN-en kereszt\u00fcl csatlakoztak, p\u00e9ld\u00e1ul az IWS-b\u0151l. Nagyon sok szab\u00e1ly volt \u2014 f\u00e1jt.<\/p>\n<p><img decoding=\"async\" alt=\"Consul + iptables = :3\" src=\"\/wp-content\/uploads\/2020\/02\/ec44e6a60da98daa4bbf2bca2e3b2e1a.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<em>H\u00e1l\u00f3zati modell \u00e9s szigetel\u00e9si m\u00f3dok 2018-ban.<\/em><\/p>\n<p>A szigetel\u00e9shez a k\u00f6vetkez\u0151ket haszn\u00e1ltuk: VLAN ACL-lel L2-n, VRF ACL-lel L3-on, VPN, \u00e9s sok m\u00e1s dolgot. T\u00fal sokat.<\/p>\n<h2>Problems<\/h2>\n<p>\nMindenki ACL-lel \u00e9s VLAN-nal \u00e9l. Mi is a baj? E k\u00e9rd\u00e9sre Garold v\u00e1laszol, aki elrejti a f\u00e1jdalm\u00e1t.<\/p>\n<p><img decoding=\"async\" alt=\"Consul + iptables = :3\" src=\"\/wp-content\/uploads\/2020\/02\/4df5105af3bce515d80e8e5f3e14c027.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSok probl\u00e9ma volt, de t\u00f6meges \u2014 \u00f6t.<\/p>\n<ul>\n<li><strong>Geometrikus \u00e1rn\u00f6veked\u00e9s az \u00faj szab\u00e1lyokhoz<\/strong>. Minden \u00faj szab\u00e1ly hozz\u00e1ad\u00e1sa tov\u00e1bb tartott, mint az el\u0151z\u0151, mert el\u0151sz\u00f6r meg kellett n\u00e9zni, hogy nincs-e m\u00e1r olyan szab\u00e1ly.<\/li>\n<li><strong>Nincs t\u0171zfal a szegmensek belsej\u00e9ben<\/strong>. A szegmensek n\u00e9mileg elv\u00e1lasztott\u00e1k egym\u00e1st, de bel\u00fcl m\u00e1r nem volt elegend\u0151 er\u0151forr\u00e1s.<\/li>\n<li><strong>A szab\u00e1lyokat hossz\u00fa ideig alkalmazt\u00e1k. <\/strong>Egy helyi szab\u00e1lyt a m\u0171veletet v\u00e9gz\u0151k egy \u00f3ra alatt meg tudtak \u00edrni. A glob\u00e1lis szab\u00e1lyhoz t\u00f6bb napra volt sz\u00fcks\u00e9g.<\/li>\n<li><strong>Nehezen audit\u00e1lhat\u00f3 szab\u00e1lyok<\/strong>. Pontosabban, nem volt lehets\u00e9ges. Az els\u0151 szab\u00e1lyokat 2010-ben \u00edrt\u00e1k, \u00e9s szerz\u0151ik t\u00f6bbs\u00e9ge m\u00e1r nem dolgozott a c\u00e9gn\u00e9l.<\/li>\n<li><strong>Alacsony szint\u0171 ellen\u0151rz\u00e9s az infrastrukt\u00fara felett<\/strong>. Ez a f\u0151 probl\u00e9ma \u2014 rosszul tudtuk, mi t\u00f6rt\u00e9nik vel\u00fcnk.<\/li>\n<\/ul>\n<p>\n\u00cdgy n\u00e9zett ki a h\u00e1l\u00f3zati m\u00e9rn\u00f6k 2018-ban, amikor hallotta: \u201eM\u00e9g kicsit t\u00f6bb ACL-ra van sz\u00fcks\u00e9g.\u201d<\/p>\n<p><img decoding=\"async\" alt=\"Consul + iptables = :3\" src=\"\/wp-content\/uploads\/2020\/02\/8366d3092558ebb15a4ba6d8e5702032.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h2>Megold\u00e1sok<\/h2>\n<p>\n2018 elej\u00e9n \u00fagy d\u00f6nt\u00f6ttek, hogy valamit kezdenek vele.<\/p>\n<p><strong>Az integr\u00e1ci\u00f3k \u00e1ra folyamatosan n\u00f6vekszik. <\/strong>A kiindul\u00f3pont az volt, hogy a nagy adatk\u00f6zpontok abbahagyt\u00e1k az izol\u00e1lt VLAN-ok \u00e9s ACL-ek t\u00e1mogat\u00e1s\u00e1t, mert elfogyott a mem\u00f3ria az eszk\u00f6z\u00f6k\u00f6n.<\/p>\n<p>Megold\u00e1s: elt\u00e1vol\u00edtott\u00e1k az emberi t\u00e9nyez\u0151t \u00e9s maxim\u00e1lisan automatiz\u00e1lt\u00e1k a hozz\u00e1f\u00e9r\u00e9s biztos\u00edt\u00e1s\u00e1t.<\/p>\n<p><strong>Az \u00faj szab\u00e1lyok hossz\u00fa ideig \u00e9rv\u00e9nyes\u00fclnek. <\/strong>Megold\u00e1s: a szab\u00e1lyok alkalmaz\u00e1s\u00e1nak felgyors\u00edt\u00e1sa, a folyamat decentraliz\u00e1l\u00e1sa \u00e9s p\u00e1rhuzamos\u00edt\u00e1sa. Ehhez elosztott rendszer sz\u00fcks\u00e9ges, hogy a szab\u00e1lyokat maguk hozz\u00e1k el, an\u00e9lk\u00fcl, hogy rsync-re vagy SFTP-re lenne sz\u00fcks\u00e9g ezer rendszerhez.<\/p>\n<p><strong>Nincs t\u0171zfal a szegmensek belsej\u00e9ben. <\/strong>A t\u0171zfal a szegmensekben kezdett el hozz\u00e1nk \u00e9rkezni, amikor egy h\u00e1l\u00f3zaton bel\u00fcl k\u00fcl\u00f6nb\u00f6z\u0151 szolg\u00e1ltat\u00e1sok jelentek meg. Megold\u00e1s: host-alap\u00fa t\u0171zfalak alkalmaz\u00e1sa. Gyakorlatilag mindenhol Linuxot haszn\u00e1lunk, \u00e9s mindenhol ott van az iptables, ez nem probl\u00e9ma.<\/p>\n<p><strong>Nehezen audit\u00e1lhat\u00f3 szab\u00e1lyok.<\/strong> Megold\u00e1s: t\u00e1roljuk az \u00f6sszes szab\u00e1lyt egy helyen a fel\u00fclvizsg\u00e1lathoz \u00e9s kezel\u00e9shez, \u00edgy mindent audit\u00e1lni tudunk.<\/p>\n<p><strong>Alacsony szint\u0171 kontroll az infrastrukt\u00fara felett. <\/strong>Megold\u00e1s: v\u00e9gezz\u00fck el az \u00f6sszes szolg\u00e1ltat\u00e1s \u00e9s hozz\u00e1f\u00e9r\u00e9s lelt\u00e1roz\u00e1s\u00e1t.<\/p>\n<p>Ez ink\u00e1bb adminisztrat\u00edv folyamat, mint technikai. N\u00e9ha heti 200-300 \u00faj kiad\u00e1sunk van, k\u00fcl\u00f6n\u00f6sen akci\u00f3k \u00e9s \u00fcnnepek alatt. Ez csak egy DevOps csapatunkra vonatkozik. Ennyi kiad\u00e1s mellett lehetetlen l\u00e1tni, hogy milyen portokra, IP-c\u00edmekre, integr\u00e1ci\u00f3kra van sz\u00fcks\u00e9g. Ez\u00e9rt sz\u00fcks\u00e9g\u00fcnk volt kifejezetten kik\u00e9pzett szolg\u00e1ltat\u00e1smenedzserekre, akik megk\u00e9rdezt\u00e9k a csapatokat: \"Mi van egy\u00e1ltal\u00e1n \u00e9s mi\u00e9rt \u00e1ll\u00edtott\u00e1tok be ezt?\"<\/p>\n<p>Mindezek ut\u00e1n a h\u00e1l\u00f3zati m\u00e9rn\u00f6k 2019-ben m\u00e1r \u00edgy n\u00e9zett ki.<\/p>\n<p><img decoding=\"async\" alt=\"Consul + iptables = :3\" src=\"\/wp-content\/uploads\/2020\/02\/ccca25d7f7bb7f70638725addc6d99ed.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Consul<\/h2>\n<p>\n\u00dagy d\u00f6nt\u00f6tt\u00fcnk, hogy mindent, amit a szolg\u00e1ltat\u00e1smenedzserekkel tal\u00e1ltunk, a Consulba helyezz\u00fck, \u00e9s onnan \u00edrjuk az iptables szab\u00e1lyokat.<\/p>\n<p>Hogyan d\u00f6nt\u00f6tt\u00fcnk err\u0151l?<\/p>\n<ul>\n<li>\u00d6sszegy\u0171jtj\u00fck az \u00f6sszes szolg\u00e1ltat\u00e1st, h\u00e1l\u00f3zatot \u00e9s felhaszn\u00e1l\u00f3t.<\/li>\n<li>Ezek alapj\u00e1n k\u00e9sz\u00edt\u00fcnk iptables szab\u00e1lyokat.<\/li>\n<li>Automatiz\u00e1ljuk a kontrollt.<\/li>\n<li>\u2026.<\/li>\n<li>HASZON.<\/li>\n<\/ul>\n<p>\nA Consul nem egy t\u00e1voli API, k\u00e9pes minden csom\u00f3ponton m\u0171k\u00f6dni \u00e9s \u00edrni az iptables-be. Csak ki kell tal\u00e1lni egy automatikus ellen\u0151rz\u0151 eszk\u00f6zt, amely elt\u00e1vol\u00edtja a felesleges dolgokat, \u00e9s a legt\u00f6bb probl\u00e9ma megold\u00f3dik! A t\u00f6bbit a folyamat sor\u00e1n finom\u00edtjuk.<\/p>\n<h3>Mi\u00e9rt a Consul?<\/h3>\n<p>\n<strong>J\u00f3l bev\u00e1lt. <\/strong>2014-15 k\u00f6z\u00f6tt backend-k\u00e9nt haszn\u00e1ltuk a Vault sz\u00e1m\u00e1ra, ahol a jelszavakat t\u00e1roljuk.<\/p>\n<p><strong>Nem vesz\u00edt adatokat.<\/strong>. A Consul haszn\u00e1lata alatt egyetlen balesetn\u00e9l sem vesz\u00edtett adatokat. Ez hatalmas el\u0151ny a t\u0171zfalkezel\u0151 rendszer sz\u00e1m\u00e1ra.<\/p>\n<p><strong>A P2P kapcsolat felgyors\u00edtja a v\u00e1ltoztat\u00e1sok elterjed\u00e9s\u00e9t.<\/strong>. A P2P-vel az \u00f6sszes v\u00e1ltoztat\u00e1s gyorsan meg\u00e9rkezik, nem kell \u00f3r\u00e1kig v\u00e1rni.<\/p>\n<p><strong>K\u00e9nyelmes REST API.<\/strong> Az Apache ZooKeeper-t is fontol\u00f3ra vett\u00fck, de annak nincs REST API-ja, \u00edgy k\u00e9nyszer\u0171 megold\u00e1sokat kell alkalmazni.<\/p>\n<p><strong>Kulcs-\u00e9rt\u00e9k t\u00e1rol\u00f3k\u00e9nt (KV) \u00e9s mint szolg\u00e1ltat\u00e1snyilv\u00e1ntart\u00f3 (Service Discovery) is m\u0171k\u00f6dik.<\/strong>. Azonnal t\u00e1rolhatunk szolg\u00e1ltat\u00e1sokat, katal\u00f3gusokat \u00e9s adatk\u00f6zpontokat. Ez nemcsak nek\u00fcnk, hanem a szomsz\u00e9dos csapatoknak is k\u00e9nyelmes, mivel glob\u00e1lis szolg\u00e1ltat\u00e1s tervez\u00e9sekor nagyban gondolkodunk.<\/p>\n<p><strong>Go nyelven \u00edr\u00f3dott, amely a Wargaming technol\u00f3giai stackj\u00e9be tartozik. <\/strong>Szeretj\u00fck ezt a nyelvet, sok Go-fejleszt\u0151nk van.<\/p>\n<p><strong>Er\u0151teljes ACL rendszer. <\/strong>A Consul lehet\u0151v\u00e9 teszi az ACL seg\u00edts\u00e9g\u00e9vel a hozz\u00e1f\u00e9r\u00e9s kezel\u00e9s\u00e9t arra, hogy ki mit \u00edrhat. Garant\u00e1ljuk, hogy a t\u0171zfal szab\u00e1lyai soha nem \u00fctk\u00f6znek m\u00e1s szab\u00e1lyokkal, \u00edgy ezzel nem lesznek probl\u00e9m\u00e1ink.<\/p>\n<p>De a Consulnak vannak h\u00e1tr\u00e1nyai is.<\/p>\n<ul>\n<li><strong>Nem sk\u00e1l\u00e1zhat\u00f3 a data center keretein bel\u00fcl, ha nincs \u00fczleti verzi\u00f3ja. <\/strong>Csak feder\u00e1ci\u00f3val sk\u00e1l\u00e1zhat\u00f3.<\/li>\n<li><strong>Nagyon f\u00fcgg a h\u00e1l\u00f3zat min\u0151s\u00e9g\u00e9t\u0151l \u00e9s a szerverek terhel\u00e9s\u00e9t\u0151l. <\/strong>A Consul nem fog megfelel\u0151en m\u0171k\u00f6dni szerverk\u00e9nt egy leterhelt szerveren, ha a h\u00e1l\u00f3zatban akadoz\u00e1sok vannak, p\u00e9ld\u00e1ul egyenetlen sebess\u00e9g eset\u00e9n. Ez a P2P kapcsolatokkal \u00e9s a friss\u00edt\u00e9sek terjeszt\u00e9si modelljeivel kapcsolatos.<\/li>\n<li><strong>Nehezen monitorozhat\u00f3 az el\u00e9rhet\u0151s\u00e9g<\/strong>. A Consul st\u00e1tusza szerint minden rendben lehet, de m\u00e1r r\u00e9g\u00f3ta nem m\u0171k\u00f6dik.<\/li>\n<\/ul>\n<p>\nEzeknek a probl\u00e9m\u00e1knak a nagy r\u00e9sz\u00e9t siker\u00fclt megoldanunk a Consul \u00fczemeltet\u00e9se sor\u00e1n, ez\u00e9rt v\u00e1lasztottuk ezt. A c\u00e9gn\u00e9l vannak elk\u00e9pzel\u00e9sek alternat\u00edv h\u00e1tt\u00e9rszolg\u00e1ltat\u00e1sra, de megtanultunk k\u00fczdeni a probl\u00e9m\u00e1kkal, \u00e9s egyel\u0151re a Consulnal \u00e9lj\u00fck az \u00e9let\u00fcnket.<\/p>\n<h3>Hogyan m\u0171k\u00f6dik a Consul<\/h3>\n<p>\nEgy felt\u00e9telezett data centerben telep\u00edt\u00fcnk szervereket \u2014 h\u00e1romt\u00f3l \u00f6tig. Egy vagy k\u00e9t szerver nem elegend\u0151: nem tudj\u00e1k megszervezni a kvorumot, \u00e9s eld\u00f6nteni, ki a hib\u00e1s, amikor az adatok nem egyeznek. \u00d6t f\u00f6l\u00f6tt m\u00e1r nincs \u00e9rtelme, a teljes\u00edtm\u00e9ny cs\u00f6kkenni fog.<\/p>\n<p><img decoding=\"async\" alt=\"Consul + iptables = :3\" src=\"\/wp-content\/uploads\/2020\/02\/96153c4e9075b067b34a63ceba5b80f0.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nA kliensek b\u00e1rmilyen sorrendben csatlakoznak a szerverekhez: ugyanazok az \u00fcgyn\u00f6k\u00f6k, csak a <code>server = false<\/code>.<\/p>\n<p><img decoding=\"async\" alt=\"Consul + iptables = :3\" src=\"\/wp-content\/uploads\/2020\/02\/0854d1286c18bb5e7c1130c6734154a9.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nflaggal. Ezt k\u00f6vet\u0151en a kliensek megkapj\u00e1k a P2P kapcsolatok list\u00e1j\u00e1t, \u00e9s kapcsolatokat \u00e9p\u00edtenek k\u00f6z\u00f6tt\u00fck.<\/p>\n<p><img decoding=\"async\" alt=\"Consul + iptables = :3\" src=\"\/wp-content\/uploads\/2020\/02\/2457cb7707c27cc23f6e13415119b91d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nGlob\u00e1lis szinten \u00f6sszek\u00f6t\u00fcnk t\u00f6bb data centert. Ezek is P2P-n kapcsol\u00f3dnak \u00e9s kommunik\u00e1lnak egym\u00e1ssal.<\/p>\n<p><img decoding=\"async\" alt=\"Consul + iptables = :3\" src=\"\/wp-content\/uploads\/2020\/02\/3b4ae922eb8d2a6a9a79425e769505d7.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAmikor adatokat akarunk \u00e1tvenni egy m\u00e1sik data centert\u0151l, a k\u00e9r\u00e9s a szerverr\u0151l a szerverre megy. Ezt a rendszert <strong>Serf protokollnak<\/strong>nevezz\u00fck. A Serf protokoll, ak\u00e1rcsak a Consul, a HashiCorp fejleszt\u00e9se.<\/p>\n<h3>N\u00e9h\u00e1ny fontos t\u00e9ny a Consulr\u00f3l<\/h3>\n<p>\nA Consulnak van dokument\u00e1ci\u00f3ja a m\u0171k\u00f6d\u00e9s\u00e9nek le\u00edr\u00e1s\u00e1val. Csak n\u00e9h\u00e1ny kiv\u00e1lasztott t\u00e9nyt eml\u00edtek meg, amit \u00e9rdemes tudni.<\/p>\n<p><strong>A Consul szerverek v\u00e1lasztanak mestert a szavaz\u00f3k k\u00f6z\u00fcl<\/strong>. A Consul minden data center sz\u00e1m\u00e1ra v\u00e1lasztja ki a mestert a szerverek list\u00e1j\u00e1b\u00f3l, \u00e9s minden k\u00e9r\u00e9s csak hozz\u00e1 ir\u00e1nyul, f\u00fcggetlen\u00fcl a szerverek sz\u00e1m\u00e1t\u00f3l. A mester megakad\u00e1s nem eredm\u00e9nyez \u00fajraszavaz\u00e1st. Ha mester nincs v\u00e1lasztva, a k\u00e9r\u00e9sek senki \u00e1ltal nem ker\u00fclnek kiszolg\u00e1l\u00e1sra.<\/p>\n<blockquote><p>Szerett\u00e9l volna horizont\u00e1lis sk\u00e1l\u00e1z\u00e1st? Sajnos, nem.<\/p><\/blockquote>\n<p> A k\u00e9r\u00e9s egyik adatk\u00f6zpontb\u00f3l a m\u00e1sikba mesterhez megy, f\u00fcggetlen\u00fcl att\u00f3l, hogy melyik szerverre \u00e9rkezett. A kiv\u00e1lasztott mester 100%-os terhel\u00e9st kap, a k\u00e9r\u00e9sek tov\u00e1bb\u00edt\u00e1s\u00e1hoz sz\u00fcks\u00e9ges terhel\u00e9s kiv\u00e9tel\u00e9vel. A d\u00e1tumok aktu\u00e1lis m\u00e1solata minden adatk\u00f6zpont szerveren megtal\u00e1lhat\u00f3, de csak egy felel.<\/p>\n<blockquote><p>Az egyetlen m\u00f3d a sk\u00e1l\u00e1z\u00e1sra, ha a kliensen bekapcsoljuk a stale m\u00f3dot.<\/p><\/blockquote>\n<p>Stale m\u00f3dban lehet v\u00e1laszolni quorum n\u00e9lk\u00fcl. Ez a m\u00f3d, ahol lemondunk az adatok konzisztenci\u00e1j\u00e1r\u00f3l, de valamivel gyorsabban olvasunk, mint \u00e1ltal\u00e1ban, \u00e9s b\u00e1rmelyik szerver v\u00e1laszol. Term\u00e9szetesen \u00edr\u00e1s csak a mesteren kereszt\u00fcl lehets\u00e9ges.<\/p>\n<p><strong>A Consul nem m\u00e1solja az adatokat az adatk\u00f6zpontok k\u00f6z\u00f6tt<\/strong>. A feder\u00e1ci\u00f3 l\u00e9trehoz\u00e1sa sor\u00e1n minden szerver csak saj\u00e1t adatait tartja. A t\u00f6bbi adat\u00e9rt mindig valaki m\u00e1shoz fordul.<\/p>\n<p><strong>A tranzakci\u00f3n k\u00edv\u00fcli m\u0171veletek atomarit\u00e1sa nem garant\u00e1lt<\/strong>. Ne felejtsd el, hogy nem csak te v\u00e1ltoztathatsz meg valamit. Ha m\u00e1shogy szeretn\u00e9d, v\u00e9gezz tranzakci\u00f3t z\u00e1rol\u00e1ssal.<\/p>\n<p><strong>A z\u00e1rol\u00f3 m\u0171veletek nem garant\u00e1lj\u00e1k a z\u00e1rol\u00e1st<\/strong>. A k\u00e9r\u00e9s a mestert\u0151l a mesterhez megy, nem k\u00f6zvetlen\u00fcl, ez\u00e9rt nincs garancia, hogy a z\u00e1rol\u00e1s m\u0171k\u00f6dni fog, ha p\u00e9ld\u00e1ul egy m\u00e1sik adatk\u00f6zpontban z\u00e1rol\u00e1st v\u00e9gzel.<\/p>\n<p><strong>Az ACL sem garant\u00e1lja a hozz\u00e1f\u00e9r\u00e9st (sok esetben)<\/strong>. Az ACL nem m\u0171k\u00f6dhet, mert az egyik adatk\u00f6zpontban t\u00e1rolj\u00e1k \u2014 az ACL adatk\u00f6zpontban (Els\u0151dleges DC). Ha az adatk\u00f6zpont nem v\u00e1laszol, az ACL nem fog m\u0171k\u00f6dni.<\/p>\n<p><strong>Egy beragadt mester az eg\u00e9sz feder\u00e1ci\u00f3t megakad\u00e1lyozza<\/strong>. P\u00e9ld\u00e1ul, egy feder\u00e1ci\u00f3ban 10 adatk\u00f6zpont van, \u00e9s az egyikben gyenge a h\u00e1l\u00f3zat, \u00e9s az egyik mester le\u00e1ll. Mindenki, aki vele kommunik\u00e1l, k\u00f6rbar\u00e1tban beragad: k\u00e9r\u00e9s \u00e9rkezik, nincs v\u00e1lasz, a sz\u00e1l megakad. Megtudni, mikor fog ez megt\u00f6rt\u00e9nni, nem lehets\u00e9ges; egyszer\u0171en egy \u00f3r\u00e1n bel\u00fcl vagy k\u00e9t \u00f3r\u00e1n bel\u00fcl az eg\u00e9sz feder\u00e1ci\u00f3 le fog \u00e1llni. Ezen nem tudsz seg\u00edteni.<\/p>\n<p>A st\u00e1tusz, quorum \u00e9s v\u00e1laszt\u00e1sok k\u00fcl\u00f6n sz\u00e1lon dolgoznak. \u00dajra v\u00e1laszt\u00e1s nem fog megt\u00f6rt\u00e9nni, a st\u00e1tusz semmit nem mutat. Azt hiszed, hogy az Consul \u00e9l, k\u00e9rd\u00e9st int\u00e9zel, \u00e9s semmi sem t\u00f6rt\u00e9nik \u2014 nincs v\u00e1lasz. K\u00f6zben a st\u00e1tusz azt mutatja, hogy minden rendben van.<\/p>\n<p>Ezzel a probl\u00e9m\u00e1val tal\u00e1lkoztunk, k\u00e9nytelenek voltunk konkr\u00e9t adatk\u00f6zponti r\u00e9szeket \u00fajra\u00e9p\u00edteni, hogy elker\u00fclj\u00fck.<\/p>\n<p><strong>A Consul Enterprise \u00fczleti verzi\u00f3j\u00e1ban nincsenek meg n\u00e9h\u00e1ny fenti h\u00e1tr\u00e1ny.<\/strong>Sok hasznos funkci\u00f3t k\u00edn\u00e1l: szavaz\u00f3k kiv\u00e1laszt\u00e1sa, eloszt\u00e1s, sk\u00e1l\u00e1z\u00e1s. Csak egy \"de\" van - a licencel\u00e9si rendszer a elosztott rendszerhez nagyon dr\u00e1ga.<\/p>\n<p>Tippek: <code>rm -rf \/var\/lib\/consul<\/code> \u2014 gy\u00f3gyszer minden \u00fcgyn\u00f6k betegs\u00e9g\u00e9re. Ha valami nem m\u0171k\u00f6dik, csak t\u00f6r\u00f6lje az adatait, \u00e9s t\u00f6ltse be az adatokat egy m\u00e1solatb\u00f3l. Val\u00f3sz\u00edn\u0171leg a Consul m\u0171k\u00f6dni fog.<\/p>\n<h2>BEFW<\/h2>\n<p>\nMost besz\u00e9lj\u00fcnk arr\u00f3l, hogy mit adtunk a Consulhoz.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/wgnet\/befw\">BEFW<\/a><\/noindex> \u2014 ez a r\u00f6vid\u00edt\u00e9se <strong>B<\/strong>ack<strong>E<\/strong>nd<strong>F<\/strong>ire<strong>W<\/strong>all. Valahogyan el kellett neveznem a term\u00e9ket, amikor l\u00e9trehoztam a t\u00e1rol\u00f3t, hogy elt\u00e1roljam az els\u0151 tesztel\u00e9si elk\u00f6telezetts\u00e9geket. Ez a n\u00e9v maradt.<\/p>\n<h3>Szab\u00e1lymint\u00e1k<\/h3>\n<p>\nA szab\u00e1lyok az iptables szintaxis\u00e1ban \u00edr\u00f3dtak.<\/p>\n<ul>\n<li>-N BEFW<\/li>\n<li>-P INPUT DROP<\/li>\n<li>-A INPUT -m state\u2014state RELATED,ESTABLISHED -j ACCEPT<\/li>\n<li>-A INPUT -i lo -j ACCEPT<\/li>\n<li>-A INPUT -j BEFW<\/li>\n<\/ul>\n<p>\nMinden a BEFW l\u00e1ncba ker\u00fcl, kiv\u00e9ve <code>ESTABLISHED<\/code>, <code>RELATED<\/code> \u00e9s localhost. A minta b\u00e1rmi lehet, ez csak egy p\u00e9lda.<\/p>\n<p>Mi\u00e9rt hasznos a BEFW?<\/p>\n<h3>Szolg\u00e1ltat\u00e1sok<\/h3>\n<p>\nVan egy szolg\u00e1ltat\u00e1sunk, mindig van egy port, a csom\u00f3pont, amelyen fut. A saj\u00e1t csom\u00f3pontunkr\u00f3l helyben k\u00e9rhetj\u00fck az \u00fcgyn\u00f6k\u00f6t, \u00e9s megtudhatjuk, hogy van valamilyen szolg\u00e1ltat\u00e1sunk. C\u00edmk\u00e9ket is lehet alkalmazni.<\/p>\n<p><img decoding=\"async\" alt=\"Consul + iptables = :3\" src=\"\/wp-content\/uploads\/2020\/02\/6d8c74db37e2e1eed971cfa6947cc5c8.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nB\u00e1rmely szolg\u00e1ltat\u00e1s, amely elindult \u00e9s regisztr\u00e1lt a Consentban, iptables szab\u00e1lly\u00e1 alakul. Van SSH \u2014 megnyitjuk a 22-es portot. A bash szkript egyszer\u0171: curl \u00e9s iptables, m\u00e1sra nincs sz\u00fcks\u00e9g.<\/p>\n<h3>\u00dcgyfelek<\/h3>\n<p>\nHogyan lehet korl\u00e1tozottan hozz\u00e1f\u00e9r\u00e9st biztos\u00edtani? A szolg\u00e1ltat\u00e1s neve alapj\u00e1n IP-list\u00e1t menteni a KV-t\u00e1rol\u00f3ba.<\/p>\n<p><img decoding=\"async\" alt=\"Consul + iptables = :3\" src=\"\/wp-content\/uploads\/2020\/02\/11a5af5aad9e848565458f168a1eee64.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nP\u00e9ld\u00e1ul szeretn\u00e9nk, ha mindazok a tizedik h\u00e1l\u00f3zatb\u00f3l hozz\u00e1f\u00e9rhetn\u00e9nek az SSH_TCP_22 szolg\u00e1ltat\u00e1shoz. Hozz\u00e1adunk egy kis TTL mez\u0151t, \u00e9s most id\u0151szakos enged\u00e9lyeink vannak, p\u00e9ld\u00e1ul egy napra.<\/p>\n<h3>Hozz\u00e1f\u00e9r\u00e9sek<\/h3>\n<p>\nK\u00f6tj\u00fck \u00f6ssze a szolg\u00e1ltat\u00e1sokat \u00e9s az \u00fcgyfeleket: van egy szolg\u00e1ltat\u00e1sunk, mindegyikhez k\u00e9szen \u00e1ll a KV-t\u00e1rol\u00f3. Most nem mindenkinek adunk hozz\u00e1f\u00e9r\u00e9st, hanem v\u00e1logatottnak.<\/p>\n<p><img decoding=\"async\" alt=\"Consul + iptables = :3\" src=\"\/wp-content\/uploads\/2020\/02\/d1119fbb226595184cac8d9ce7a924e3.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Csoportok<\/h3>\n<p>\nHa minden alkalommal ezer IP-t kellene megadnunk a hozz\u00e1f\u00e9r\u00e9sekhez, elf\u00e1radn\u00e1nk. Csoportos\u00edthatunk - k\u00fcl\u00f6n subset a KV-ban. Elnevezz\u00fck Aliasznak (vagy csoportoknak) \u00e9s ott t\u00e1roljuk a csoportokat ugyanazon elv alapj\u00e1n.<\/p>\n<p><img decoding=\"async\" alt=\"Consul + iptables = :3\" src=\"\/wp-content\/uploads\/2020\/02\/67c6ab76cc25a3973739bdd44b69cef9.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u00d6sszek\u00f6t\u00e9s: most SSH-t nyithatunk meg nem konkr\u00e9tan a P2P-n, hanem egy eg\u00e9sz csoportra vagy t\u00f6bb csoportra. Pontosan ugyan\u00fagy van TTL - csoportba is lehet adni \u00e9s csoportb\u00f3l is lehet t\u00f6r\u00f6lni \u00e1tmenetileg.<\/p>\n<p><img decoding=\"async\" alt=\"Consul + iptables = :3\" src=\"\/wp-content\/uploads\/2020\/02\/a00b7db5087a96730c2725090f33e2b0.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Integr\u00e1ci\u00f3<\/h3>\n<p>\nA probl\u00e9m\u00e1nk\u2014az emberi t\u00e9nyez\u0151 \u00e9s az automatiz\u00e1l\u00e1s. Jelenleg \u00edgy oldottuk meg.<\/p>\n<p><img decoding=\"async\" alt=\"Consul + iptables = :3\" src=\"\/wp-content\/uploads\/2020\/02\/ce7a0c16543d0624453e6bdada3b8f03.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nA Puppet-tel dolgozunk, \u00e9s minden, ami a rendszerhez (alkalmaz\u00e1sok k\u00f3dja) tartozik, \u00e1tk\u00e9nt \u00e1tadunk neki. A puppetdb-ben (szok\u00e1sos PostgreSQL) t\u00e1roljuk a fut\u00f3 szolg\u00e1ltat\u00e1sok list\u00e1j\u00e1t, amelyeket er\u0151forr\u00e1st\u00edpus szerint kereshet\u00fcnk. Ott megtal\u00e1lhatjuk azt is, hogy ki hova fordul. Van egy pull request \u00e9s merge request rendszer\u00fcnk is ennek kezel\u00e9s\u00e9re.<\/p>\n<p>Meg\u00edrtuk a befw-sync-et \u2013 egy egyszer\u0171 megold\u00e1st, amely seg\u00edt az adatok \u00e1tvitel\u00e9ben. El\u0151sz\u00f6r a sync cookies h\u00edvja a puppetdb-t. Ott HTTP API van be\u00e1ll\u00edtva: arra k\u00e9rdez\u00fcnk r\u00e1, hogy milyen szolg\u00e1ltat\u00e1saink vannak, mit kell tenn\u00fcnk. Ezut\u00e1n a Consul-ba k\u00fcldj\u00fck a k\u00e9r\u00e9st.<\/p>\n<p>Van integr\u00e1ci\u00f3? Van: \u00edrtunk szab\u00e1lyokat, \u00e9s enged\u00e9lyezt\u00fck a Pull Requestek fogad\u00e1s\u00e1t. Sz\u00fcks\u00e9g van valamilyen portra vagy pedig egy hostot hozz\u00e1 kell adni valamilyen csoportra? Pull Request, review \u2013 t\u00f6bb\u00e9 nincs \"Keress 200 m\u00e1sik ACL-t \u00e9s pr\u00f3b\u00e1lj valamit kezdeni vele\".<\/p>\n<h3>Optimaliz\u00e1l\u00e1s<\/h3>\n<p>\nA localhost pingel\u00e9se \u00fcres szab\u00e1lyl\u00e1nccal 0,075 ms-ot vesz ig\u00e9nybe.<\/p>\n<p><img decoding=\"async\" alt=\"Consul + iptables = :3\" src=\"\/wp-content\/uploads\/2020\/02\/39263844f79c4795af05dc3ecb734394.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHozz\u00e1adunk ehhez a l\u00e1nchoz 10 000 c\u00edmet az iptables-hez. Ennek eredm\u00e9nyek\u00e9nt a ping 5-sz\u00f6r\u00f6s\u00e9re n\u0151: az iptables teljesen line\u00e1ris, minden c\u00edm feldolgoz\u00e1sa id\u0151t ig\u00e9nyel.<\/p>\n<p><img decoding=\"async\" alt=\"Consul + iptables = :3\" src=\"\/wp-content\/uploads\/2020\/02\/e6c314155c3a34fdf61e40479ecb26c3.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nA t\u0171zfal sz\u00e1m\u00e1ra, amelybe ezrek migr\u00e1lnak ACL, sok szab\u00e1lyunk van, \u00e9s ez k\u00e9sleltet\u00e9st okoz. Ez rossz a j\u00e1t\u00e9k protokollok sz\u00e1m\u00e1ra.<\/p>\n<p>De ha a <strong>10 000 c\u00edmet ipset-be helyez\u00fcnk,<\/strong> akkor a ping ak\u00e1r cs\u00f6kkenhet is.<\/p>\n<p><img decoding=\"async\" alt=\"Consul + iptables = :3\" src=\"\/wp-content\/uploads\/2020\/02\/2dd844d9324d057ba9ab098e501a1e51.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nA l\u00e9nyeg, hogy az ipset eset\u00e9ben az \"O\" (algoritmus bonyolults\u00e1ga) mindig 1, f\u00fcggetlen\u00fcl att\u00f3l, h\u00e1ny szab\u00e1ly van. Igaz, van egy korl\u00e1toz\u00e1s \u2013 nem lehet t\u00f6bb mint 65535 szab\u00e1ly. Eddig ezt elviselj\u00fck: kombin\u00e1lni lehet \u0151ket, b\u0151v\u00edteni, ak\u00e1r k\u00e9t ipset l\u00e9trehozni egyben.<\/p>\n<h3>T\u00e1rol\u00e1s<\/h3>\n<p>\nA folyamat iter\u00e1ci\u00f3inak logikus folytat\u00e1sa \u2013 az \u00fcgyfelek adatainak t\u00e1rol\u00e1sa az ipset-ben.<\/p>\n<p><img decoding=\"async\" alt=\"Consul + iptables = :3\" src=\"\/wp-content\/uploads\/2020\/02\/126069799d95594be8611237e935189d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMost ugyanaz az SSH \u00e1ll rendelkez\u00e9s\u00fcnkre, \u00e9s nem \u00edrunk be azonnal 100 IP-t, hanem megadunk egy ipset nevet, amellyel kommunik\u00e1lnunk kell, \u00e9s a k\u00f6vetkez\u0151 szab\u00e1lyt <code>DROP<\/code>. Lehet, hogy \u00e1tkonvert\u00e1ljuk az \u00f6sszes \"Aki nem itt van, az DROP\", de \u00edgy szeml\u00e9letesebb.<\/p>\n<p>Most m\u00e1r vannak szab\u00e1lyaink \u00e9s szettjeink. A legfontosabb feladat \u2013 el\u0151bb k\u00e9sz\u00edteni egy szettet, mint \u00edrni egy szab\u00e1lyt, mert k\u00fcl\u00f6nben az iptables nem jegyzi fel a szab\u00e1lyt.<\/p>\n<h3>\u00c1tfog\u00f3 s\u00e9ma<\/h3>\n<p>\nS\u00e9m\u00e1ba rendezve, amit elmondtam, \u00edgy n\u00e9z ki.<\/p>\n<p><img decoding=\"async\" alt=\"Consul + iptables = :3\" src=\"\/wp-content\/uploads\/2020\/02\/4046e921cb5f466f8af5a6af1fcd151c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCommitel\u00fcnk a Puppet-be, minden elmegy a hosztra, a szolg\u00e1ltat\u00e1sok itt vannak, az ipset ott, \u00e9s aki ott nincs bejegyezve, azt nem engedik be.<\/p>\n<h3>Enged\u00e9lyez\u00e9s &amp; megtagad\u00e1s<\/h3>\n<p>\nAhhoz, hogy gyorsan megments\u00fck a vil\u00e1got vagy gyorsan b\u00e1rkit ki tudjunk z\u00e1rni, minden l\u00e1nc elej\u00e9n l\u00e9trehoztunk k\u00e9t ipset: <code>rules_allow<\/code> \u00e9s <code>rules_deny<\/code>. Hogyan m\u0171k\u00f6dik ez?<\/p>\n<p>P\u00e9ld\u00e1ul valaki botokkal terheli a weboldalunkat. Kor\u00e1bban meg kellett tal\u00e1lni az IP-c\u00edm\u00e9t a napl\u00f3k alapj\u00e1n, \u00e9s elvinni a h\u00e1l\u00f3zati m\u00e9rn\u00f6k\u00f6knek, hogy megtal\u00e1lj\u00e1k a forr\u00e1st, \u00e9s letilts\u00e1k. Most ez m\u00e1sk\u00e9pp n\u00e9z ki.<\/p>\n<p><img decoding=\"async\" alt=\"Consul + iptables = :3\" src=\"\/wp-content\/uploads\/2020\/02\/6e7f906919536cab2c283ba6ceb0472d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nElk\u00fcldj\u00fck a Consul-ba, v\u00e1runk 2,5 m\u00e1sodpercet, \u00e9s k\u00e9sz is van. Mivel a Consul P2P alapon gyorsan elosztja a terhel\u00e9st, ez\u00e9rt a vil\u00e1g b\u00e1rmely r\u00e9sz\u00e9n m\u0171k\u00f6dik.<\/p>\n<p>Egyszer \u00e9n teljesen le\u00e1ll\u00edtottam a WOT-ot, mert hib\u00e1ztam a t\u0171zfal be\u00e1ll\u00edt\u00e1saival. <code>rules_allow<\/code> Ez a biztos\u00edt\u00e9kunk az ilyen esetek ellen. Ha valahol t\u00e9vedt\u00fcnk a t\u0171zfal be\u00e1ll\u00edt\u00e1saival, \u00e9s valami letilt\u00e1sra ker\u00fcl, mindig tudunk k\u00fcldeni egy felt\u00e9teles parancsot, <code>0.0\/0<\/code>hogy gyorsan \u00fajraind\u00edtsuk mindent. Ut\u00e1na pedig mindent k\u00e9zzel jav\u00edtunk.<\/p>\n<h3>M\u00e1s iparok<\/h3>\n<p>\nB\u00e1rmilyen m\u00e1s ipar hozz\u00e1adhat\u00f3 a t\u00e9rben <code>$IPSETS$<\/code>.<\/p>\n<p><img decoding=\"async\" alt=\"Consul + iptables = :3\" src=\"\/wp-content\/uploads\/2020\/02\/4e1e337b35da81cd7324b2adc106b085.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMi\u00e9rt? N\u00e9ha valakinek sz\u00fcks\u00e9ge van ipsetekre, p\u00e9ld\u00e1ul az\u00e9rt, hogy emul\u00e1lja egy klaszter egyes r\u00e9szeinek letilt\u00e1s\u00e1t. Mindenki hozhat b\u00e1rmilyen ipart, elnevezheti azokat, \u00e9s ezek a Consulb\u00f3l fognak \u00e9rkezni. Ezek az iparok r\u00e9szt vehetnek az iptables szab\u00e1lyaiban, vagy egyszer\u0171en csak mint egy parancs, <code>NOOP<\/code>: a konzisztenci\u00e1t a d\u00e9mon fogja fenntartani.<\/p>\n<h3>Felhaszn\u00e1l\u00f3k<\/h3>\n<p>\nKor\u00e1bban ez \u00fagy m\u0171k\u00f6d\u00f6tt: a felhaszn\u00e1l\u00f3 csatlakozott a h\u00e1l\u00f3zathoz, \u00e9s a domainen kereszt\u00fcl kapott be\u00e1ll\u00edt\u00e1sokat. A k\u00f6vetkez\u0151 gener\u00e1ci\u00f3s t\u0171zfalak megjelen\u00e9se el\u0151tt a Cisco nem tudta meg\u00e9rteni, hol van a felhaszn\u00e1l\u00f3, \u00e9s hol az IP-c\u00edm. Ez\u00e9rt a hozz\u00e1f\u00e9r\u00e9s csak a g\u00e9p hostname-j\u00e9n kereszt\u00fcl lett kiadva.<\/p>\n<p>Mit tett\u00fcnk? Beavatkoztunk a c\u00edm megszerz\u00e9sekor. Ez \u00e1ltal\u00e1ban dot1x, Wi-Fi vagy VPN \u2014 minden a RADIUS-on kereszt\u00fcl megy. Minden felhaszn\u00e1l\u00f3hoz l\u00e9trehozunk egy csoportot a felhaszn\u00e1l\u00f3nev\u00e9vel, \u00e9s ebbe tessz\u00fck az IP-t, amelynek TTL-je megegyezik a dhcp.lease \u00e9rt\u00e9k\u00e9vel \u2014 amint lej\u00e1r, a szab\u00e1ly elt\u0171nik.<\/p>\n<p><img decoding=\"async\" alt=\"Consul + iptables = :3\" src=\"\/wp-content\/uploads\/2020\/02\/04550475c6af49d094c18b1d5b89123a.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMost m\u00e1r hozz\u00e1f\u00e9r\u00e9st tudunk ny\u00fajtani a szolg\u00e1ltat\u00e1sokhoz, mint m\u00e1s csoportokban, felhaszn\u00e1l\u00f3n\u00e9v alapj\u00e1n. Megszabadultunk a hostname probl\u00e9m\u00e1kt\u00f3l, amikor v\u00e1ltoznak, \u00e9s levett\u00fck a terhet a h\u00e1l\u00f3zati m\u00e9rn\u00f6k\u00f6kr\u0151l, mert m\u00e1r nincs sz\u00fcks\u00e9g\u00fck Cisco-ra. Most m\u00e1r a m\u00e9rn\u00f6k\u00f6k saj\u00e1t maguk hat\u00e1rozz\u00e1k meg a hozz\u00e1f\u00e9r\u00e9seket a szervereiken.<\/p>\n<h3>Elszigetel\u00e9s<\/h3>\n<p>\nParhuzamosan elkezdt\u00fck elemezni az elszigetel\u00e9st. A szolg\u00e1ltat\u00e1smenedzserek felm\u00e9r\u00e9st v\u00e9geztek, mi pedig elemezt\u00fck az \u00f6sszes h\u00e1l\u00f3zatunkat. Azokat azonos csoportokra fogjuk bontani, \u00e9s a sz\u00fcks\u00e9ges szervereken csoportokat hozz\u00e1adtunk, p\u00e9ld\u00e1ul a tilt\u00f3 list\u00e1hoz. Most a stagging elszigetel\u00e9si szab\u00e1lyai beker\u00fclnek a production tilt\u00e1si list\u00e1ba, de nem a production-ba mag\u00e1ba.<\/p>\n<p><img decoding=\"async\" alt=\"Consul + iptables = :3\" src=\"\/wp-content\/uploads\/2020\/02\/60fe7407013aa64b853791f8def627cc.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nA s\u00e9ma gyorsan \u00e9s egyszer\u0171en m\u0171k\u00f6dik: elt\u00e1vol\u00edtjuk az \u00f6sszes ACL-t a szerverekr\u0151l, tehermentes\u00edtj\u00fck a hardvert, cs\u00f6kkentj\u00fck az elszigetelt VLAN-ok sz\u00e1m\u00e1t.<\/p>\n<h3>Integrit\u00e1sellen\u0151rz\u00e9s<\/h3>\n<p>\nKor\u00e1bban volt egy speci\u00e1lis trigger\u00fcnk, amely \u00e9rtes\u00edtette, amikor valaki manu\u00e1lisan megv\u00e1ltoztatta a t\u0171zfalszab\u00e1lyt. Nagy lintert \u00edrtam a t\u0171zfalszab\u00e1lyok ellen\u0151rz\u00e9s\u00e9re, ami \u00f6sszetett volt. Most a befw ellen\u0151rzi az integrit\u00e1st. Gondosan figyeli, hogy a saj\u00e1t maga \u00e1ltal l\u00e9trehozott szab\u00e1lyok ne v\u00e1ltozzanak. Ha valaki megv\u00e1ltoztatja a t\u0171zfalszab\u00e1lyokat, vissza\u00e1ll\u00edt mindent az eredeti \u00e1llapotba. \u201eGyorsan be\u00e1ll\u00edtottam egy proxy-t, hogy otthonr\u00f3l dolgozhassak\u201d \u2014 ilyen lehet\u0151s\u00e9gek m\u00e1r nincsenek.<\/p>\n<p>A befw ellen\u0151rzi az ipsetet a szolg\u00e1ltat\u00e1sok \u00e9s a befw.conf list\u00e1ja alapj\u00e1n, a szolg\u00e1ltat\u00e1sok szab\u00e1lyait a BEFW l\u00e1ncban. De nem figyeli a t\u00f6bbi l\u00e1ncot \u00e9s szab\u00e1lyt, illetve m\u00e1s ipseteket.<\/p>\n<h3>Balesetek elleni v\u00e9delem<\/h3>\n<p>\nA befw mindig meg\u0151rzi az utols\u00f3 sikeres \u00e1llapotot k\u00f6zvetlen\u00fcl a bin\u00e1ris structure state.bin f\u00e1jlban. Ha valami nem m\u0171k\u00f6dik, mindig vissza\u00e1ll erre a state.bin-re.<\/p>\n<p><img decoding=\"async\" alt=\"Consul + iptables = :3\" src=\"\/wp-content\/uploads\/2020\/02\/724f3537c06a7135fa6397f9ddd5630f.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEz egy biztos\u00edt\u00e1s a Consul instabil m\u0171k\u00f6d\u00e9se ellen, amikor nem k\u00fcldte el az adatokat, vagy valaki hib\u00e1zott \u00e9s olyan szab\u00e1lyokat haszn\u00e1lt, amelyek nem alkalmazhat\u00f3k. Hogy ne maradjunk t\u0171zfal n\u00e9lk\u00fcl, a befw vissza\u00e1ll az utols\u00f3 \u00e1llapotra, ha b\u00e1rmilyen hiba t\u00f6rt\u00e9nik egy adott pillanatban.<\/p>\n<p>Kritikus helyzetekben ez a garancia, hogy m\u0171k\u00f6d\u0151 t\u0171zfollal maradunk. Minden sz\u00fcrke h\u00e1l\u00f3zatot megnyitunk abban a rem\u00e9nyben, hogy az adminisztr\u00e1tor j\u00f6n \u00e9s kijav\u00edtja. Valamikor ezt beillesztem a konfigur\u00e1ci\u00f3kba, de most csak h\u00e1rom sz\u00fcrke h\u00e1l\u00f3zatunk van: 10\/8, 172\/12 \u00e9s 192.168\/16. A Consulunkon bel\u00fcl ez egy fontos jellemz\u0151, amely seg\u00edti a fejl\u0151d\u00e9st.<\/p>\n<p><em>Demos: az el\u0151ad\u00e1s sor\u00e1n Ivan bemutatja a befw demo m\u00f3dj\u00e1t. A bemutat\u00f3 k\u00e9nyelmesebben n\u00e9zhet\u0151 itt <noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/4zP67uYnsR4?t=1663\">vide\u00f3n<\/a><\/noindex>. A demo forr\u00e1sk\u00f3dja el\u00e9rhet\u0151 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/wgnet\/befw\/tree\/master\/demo\">a GitHub-on<\/a><\/noindex>.<\/em><\/p>\n<h2>Csapd\u00e1k<\/h2>\n<p>\nBesz\u00e9lek a bugokr\u00f3l, amelyekkel szembes\u00fclt\u00fcnk.<\/p>\n<p><strong>ipset add set 0.0.0.0\/0. <\/strong>Mi fog t\u00f6rt\u00e9nni, ha hozz\u00e1adod az ipsethez a 0.0.0.0\/0-t? Minden IP hozz\u00e1ad\u00e1sra ker\u00fcl? Megny\u00edlik az internet-hozz\u00e1f\u00e9r\u00e9s? <\/p>\n<p>Nem, egy bugot kapunk, ami k\u00e9t \u00f3r\u00e1s le\u00e1ll\u00e1st okozott nek\u00fcnk. A bug r\u00e1ad\u00e1sul 2016 \u00f3ta nem m\u0171k\u00f6dik, a RedHat Bugzil\u00e1ban #1297092 alatt van, \u00e9s v\u00e9letlen\u00fcl tal\u00e1ltuk r\u00e1 - a fejleszt\u0151i jelent\u00e9sb\u0151l.<\/p>\n<p>Most a BEFW-ben szigor\u00fa szab\u00e1ly van, hogy <code>0.0.0.0\/0<\/code> kett\u0151 c\u00edmm\u00e9 alakul: <code>0.0.0.0\/1<\/code> \u00e9s <code>128.0.0.0\/1<\/code>.<\/p>\n<p><strong>ipset restore set &lt; file. <\/strong>Mit csin\u00e1l az ipset, amikor azt mondod neki, hogy <code>restore<\/code>? \u0412\u044b \u0434\u0443\u043c\u0430\u0435\u0442\u0435, \u043e\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u0430\u043a\u0436\u0435, \u043a\u0430\u043a iptables? \u0412\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442 \u0434\u0430\u043d\u043d\u044b\u0435?<\/p>\n<p>Semmi ilyesmi - egyes\u00edti, a r\u00e9gi c\u00edmek nem t\u0171nnek el, a hozz\u00e1f\u00e9r\u00e9st nem z\u00e1rj\u00e1tok le.<\/p>\n<p>A bugot akkor tal\u00e1ltuk meg, amikor a izol\u00e1ci\u00f3t tesztelt\u00fck. Most ott el\u00e9g bonyolult rendszer m\u0171k\u00f6dik - ahelyett, hogy <code>restore<\/code> temp l\u00e9trehoz\u00e1sa t\u00f6rt\u00e9nik <code>create temp<\/code>, azt\u00e1n <code>restore flush temp<\/code> \u00e9s <code>restore temp<\/code>. A v\u00e9g\u00e9n swap: a szelektivit\u00e1s miatt, mert ha el\u0151sz\u00f6r csin\u00e1lod <code>flush<\/code> \u00c9s ebben a pillanatban, ha j\u00f6n egy csomag, azt el fogj\u00e1k utas\u00edtani, \u00e9s valami rosszul fog menni. Ez\u00e9rt van egy kis fekete m\u00e1gia itt.<\/p>\n<p><strong>consul kv get -datacenter=other. <\/strong>Ahogy m\u00e1r mondtam, \u00fagy gondoljuk, hogy valamilyen adatot k\u00e9rt\u00fcnk, de vagy adatot, vagy hib\u00e1t kapunk. Ezt megtehetj\u00fck helyben a Consul-on, de ebben az esetben is meg fog \u00e1llni mindkett\u0151.<\/p>\n<p>A helyi Consul-kliense egy burkol\u00f3 az HTTP API k\u00f6r\u00fcl. De egyszer\u0171en lefagy, \u00e9s nem reag\u00e1l sem a Ctrl+C-re, sem a Ctrl+Z-re, semmire, csak a <code>kill -9<\/code> mellett\u00fck l\u00e9v\u0151 konzolon. Ezzel szembes\u00fclt\u00fcnk, amikor egy nagy klasztert \u00e9p\u00edtett\u00fcnk. De m\u00e9g nem tal\u00e1ltunk megold\u00e1st, k\u00e9szen \u00e1llunk jav\u00edtani ezt a hib\u00e1t a Consul-ban.<\/p>\n<p><strong>A Consul vezet\u0151 nem v\u00e1laszol. <\/strong>N\u00e1lunk nem v\u00e1laszol a mester a datacentern\u00e9l, azt gondoljuk: \u201eTal\u00e1n most m\u0171k\u00f6dni fog a v\u00e1laszt\u00e1si algoritmus?\u201d <\/p>\n<p>Nem, nem fog m\u0171k\u00f6dni, \u00e9s a monitoring semmit nem fog mutatni: a Consul azt mondja, hogy van elk\u00f6telez\u00e9si index, vezet\u0151 megtal\u00e1lva, minden rendben.<\/p>\n<p>Hogyan k\u00fczd\u00fcnk ezzel? <code>service consul restart<\/code> a cronban \u00f3r\u00e1nk\u00e9nt. Ha 50 szervered van \u2014 nem nagy probl\u00e9ma. Amikor 16 000 lesz, meg\u00e9rted, hogyan m\u0171k\u00f6dik ez.<\/p>\n<h2>Z\u00e1r\u00e1s<\/h2>\n<p>\nV\u00e9g\u00fcl a k\u00f6vetkez\u0151 el\u0151ny\u00f6ket szerezt\u00fck:<\/p>\n<ul>\n<li>100% lefedetts\u00e9g minden Linux g\u00e9pen.<\/li>\n<li>Sebess\u00e9g.<\/li>\n<li>Automatiz\u00e1l\u00e1s.<\/li>\n<li>Felszabad\u00edtottuk a hardvert \u00e9s a h\u00e1l\u00f3zati m\u00e9rn\u00f6k\u00f6ket a rabs\u00e1gb\u00f3l.<\/li>\n<li>Megjelentek szinte korl\u00e1tlan integr\u00e1ci\u00f3s lehet\u0151s\u00e9gek: ak\u00e1r Kubernetes-szel, ak\u00e1r Ansible-lel, ak\u00e1r Python-nal.<\/li>\n<\/ul>\n<p>\n<strong>H\u00e1tr\u00e1nyok<\/strong>: A Consul, amivel most egy\u00fctt kell \u00e9ln\u00fcnk, \u00e9s a hiba \u00e1ra nagyon magas. P\u00e9ld\u00e1ul egyszer este 6-kor (cs\u00facsid\u0151 Oroszorsz\u00e1gban) valamit m\u00f3dos\u00edtottam a h\u00e1l\u00f3zati list\u00e1kban. Akkor \u00e9ppen kezdt\u00fck a BEFW szigetel\u00e9s\u00e9t. Valahol hib\u00e1ztam, \u00fagy t\u0171nik, nem a megfelel\u0151 maszkot adtam meg, de minden k\u00e9t m\u00e1sodperc alatt le\u00e1llt. A monitoring bekapcsol, a support \u00fcgyeletes rohan: \u201eMinden le\u00e1llt!\u201d A r\u00e9szlegvezet\u0151 meg\u0151sz\u00fclt, amikor elmagyar\u00e1zta az \u00fczletnek, hogy mi\u00e9rt t\u00f6rt\u00e9nt ez.<\/p>\n<p>A hiba \u00e1ra olyan magas, hogy saj\u00e1t \u00f6sszetett megel\u0151z\u0151 elj\u00e1r\u00e1st dolgoztunk ki. Ha ezt be akarod vezetni egy nagy termel\u00e9sben, ne adj mester-jegyet a Consul f\u00f6l\u00e9 mindenkinek. Ez rosszul fog v\u00e9gz\u0151dni.<\/p>\n<p><strong>K\u00f6lts\u00e9gek. <\/strong>400 \u00f3r\u00e1t \u00edrtam a k\u00f3dot egyed\u00fcl. A t\u00e1mogat\u00e1sra a csapatom, ami 4 f\u0151b\u0151l \u00e1ll, havi 10 \u00f3r\u00e1t k\u00f6lt mindenre. \u00d6sszehasonl\u00edtva b\u00e1rmelyik \u00faj gener\u00e1ci\u00f3s t\u0171zfal \u00e1r\u00e1val, ez ingyen van.<\/p>\n<p><strong>Tervek. <\/strong>A hossz\u00fa t\u00e1v\u00fa terv egy alternat\u00edv sz\u00e1ll\u00edt\u00e1s keres\u00e9se a Consul helyett vagy mellett. Lehet, hogy ez Kafka lesz, vagy valami hasonl\u00f3. De a k\u00f6vetkez\u0151 \u00e9vekben a Consul-on fogunk \u00e9lni.<\/p>\n<p>A k\u00f6zelj\u00f6v\u0151 tervei: integr\u00e1ci\u00f3 a Fail2bannal, megfigyel\u00e9ssel, nftables-szel, lehet, hogy m\u00e1s disztrib\u00faci\u00f3kkal, metrik\u00e1k, kiterjesztett megfigyel\u00e9s, optimaliz\u00e1l\u00e1s. A Kubernetes t\u00e1mogat\u00e1sa is valahol a tervek k\u00f6z\u00f6tt van, mert jelenleg van n\u00e9h\u00e1ny klaszter\u00fcnk \u00e9s ig\u00e9ny\u00fcnk r\u00e1.<\/p>\n<p>Tov\u00e1bbi tervek:<\/p>\n<ul>\n<li>an\u00f3m\u00e1li\u00e1k keres\u00e9se a forgalomban;<\/li>\n<li>h\u00e1l\u00f3zat t\u00e9rk\u00e9p\u00e9nek kezel\u00e9se;<\/li>\n<li>Kubernetes t\u00e1mogat\u00e1s;<\/li>\n<li>csomagok \u00f6ssze\u00e1ll\u00edt\u00e1sa minden rendszerhez;<\/li>\n<li>Web-UI.<\/li>\n<\/ul>\n<p>\nFolyamatosan dolgozunk a konfigur\u00e1ci\u00f3 b\u0151v\u00edt\u00e9s\u00e9n, a metrik\u00e1k n\u00f6vel\u00e9s\u00e9n \u00e9s az optimaliz\u00e1l\u00e1son.<\/p>\n<p><i>Csatlakozz a projekthez. A projekt szuper lett, de sajnos ez egyel\u0151re csak egy ember projektje. Gyere a <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/wgnet\/befw\">GitHub <\/a><\/noindex>\u00e9s pr\u00f3b\u00e1lj ki valamit: commit\u00e1lj, tesztelj, javasolj valamit, add meg a v\u00e9lem\u00e9nyed.<\/i><\/p>\n<blockquote><p>K\u00f6zben k\u00e9sz\u00fcl\u00fcnk a <noindex><a rel=\"nofollow\" href=\"https:\/\/www.highload.ru\/spb\/2020\">Saint HighLoad++<\/a><\/noindex>, amely \u00e1prilis 6-\u00e1n \u00e9s 7-\u00e9n ker\u00fcl megrendez\u00e9sre Szentp\u00e9terv\u00e1ron, \u00e9s megh\u00edvjuk a nagy terhel\u00e9s\u0171 rendszerek fejleszt\u0151it, <noindex><a rel=\"nofollow\" href=\"https:\/\/conf.ontico.ru\/lectures\/propose?conference=hl2020-spb\">hogy jelentkezzenek el\u0151ad\u00e1sra<\/a><\/noindex>. A tapasztalt el\u0151ad\u00f3k m\u00e1r tudj\u00e1k, mit kell tenni, a kezd\u0151knek pedig legal\u00e1bb aj\u00e1nljuk, hogy <noindex><a rel=\"nofollow\" href=\"https:\/\/www.highload.ru\/spb\/2020\/speakers\">pr\u00f3b\u00e1lkozzanak.<\/a><\/noindex>A konferenci\u00e1n el\u0151ad\u00f3k\u00e9nt val\u00f3 r\u00e9szv\u00e9tel sz\u00e1mos el\u0151nnyel j\u00e1r. Ezekr\u0151l p\u00e9ld\u00e1ul a v\u00e9g\u00e9n lehet olvasni: <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/oleg-bunin\/blog\/486142\/\">ezen cikket<\/a><\/noindex>.<\/p><\/blockquote>\n<p>Forr\u00e1s: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/oleg-bunin\/blog\/486842\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412 2010 \u0433\u043e\u0434\u0443 \u0443 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Wargaming \u0431\u044b\u043b\u043e 50 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u0438 \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u0441\u0435\u0442\u0435\u0432\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c: \u0431\u044d\u043a\u0435\u043d\u0434, \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434 \u0438 \u0444\u0430\u0439\u0440\u0432\u043e\u043b. \u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u0440\u043e\u0441\u043b\u043e, \u043c\u043e\u0434\u0435\u043b\u044c \u0443\u0441\u043b\u043e\u0436\u043d\u044f\u043b\u0430\u0441\u044c: \u0441\u0442\u0435\u0439\u0434\u0436\u0438\u043d\u0433\u0438, \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 VLAN \u0441 ACL, \u043f\u043e\u0442\u043e\u043c VPN \u0441 VRF, VLAN c ACL \u043d\u0430 L2, VRF \u0441 ACL \u043d\u0430 L3. \u0417\u0430\u043a\u0440\u0443\u0436\u0438\u043b\u0430\u0441\u044c \u0433\u043e\u043b\u043e\u0432\u0430? \u0414\u0430\u043b\u044c\u0448\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u0435\u0441\u0435\u043b\u0435\u0435. \u041a\u043e\u0433\u0434\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u0441\u0442\u0430\u043b\u043e 16 000 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0431\u0435\u0437 \u0441\u043b\u0435\u0437 \u0441 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":41052,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-41051","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412 2010 \u0433\u043e\u0434\u0443 \u0443 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Wargaming \u0431\u044b\u043b\u043e 50 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u0438 \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u0441\u0435\u0442\u0435\u0432\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c: \u0431\u044d\u043a\u0435\u043d\u0434, \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434 \u0438 \u0444\u0430\u0439\u0440\u0432\u043e\u043b.\" \/>\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\/hu\/blog\/consul-iptables-3\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"hu_HU\" \/>\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\udd47Consul + iptables = :3 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412 2010 \u0433\u043e\u0434\u0443 \u0443 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Wargaming \u0431\u044b\u043b\u043e 50 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u0438 \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u0441\u0435\u0442\u0435\u0432\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c: \u0431\u044d\u043a\u0435\u043d\u0434, \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434 \u0438 \u0444\u0430\u0439\u0440\u0432\u043e\u043b.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/hu\/blog\/consul-iptables-3\" \/>\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-02-05T18:28:58+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-05T18:28:58+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\udd47Consul + iptables = :3 | ProHoster","description":"2010-ben a Wargamingnek 50 szervere \u00e9s egy egyszer\u0171 h\u00e1l\u00f3zati modellje volt: backend, frontend \u00e9s t\u0171zfal.","canonical_url":"https:\/\/prohoster.info\/hu\/blog\/consul-iptables-3","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"hu_HU","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\udd47Consul + iptables = :3 | ProHoster","og:description":"\u0412 2010 \u0433\u043e\u0434\u0443 \u0443 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Wargaming \u0431\u044b\u043b\u043e 50 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u0438 \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u0441\u0435\u0442\u0435\u0432\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c: \u0431\u044d\u043a\u0435\u043d\u0434, \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434 \u0438 \u0444\u0430\u0439\u0440\u0432\u043e\u043b.","og:url":"https:\/\/prohoster.info\/hu\/blog\/consul-iptables-3","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-02-05T18:28:58+00:00","article:modified_time":"2020-02-05T18:28:58+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"41051","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-03-01 00:24:42","updated":"2022-10-01 10:00:06","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/41051","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/comments?post=41051"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/41051\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media\/41052"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media?parent=41051"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/categories?post=41051"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/tags?post=41051"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}