{"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\/et\/blog\/consul-iptables-3","title":{"rendered":"Consul + iptables = :3","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>2010. aastal oli ettev\u00f5ttel <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/wargaming\/\">Wargaming<\/a><\/noindex> 50 serverit ja lihtne v\u00f5rgu mudel: tagak\u00fclg, esik\u00fclg ja tulem\u00fc\u00fcr. Serverite arv kasvas, mudel muutus keerukamaks: ststage\u2019ide, isoleeritud VLAN-ide ACL-idega, hiljem VPN VRF-iga, VLAN ACL-iga L2-l, VRF ACL-iga L3-l. Kas pea hakkas ringi k\u00e4ima? Edasi l\u00e4heb veel huvitavamaks.<\/p>\n<p>Kui serverite arv ulatus 16 000-ni, oli v\u00f5imatu sellise suurusega erinevate segmentidega nutuseta t\u00f6\u00f6tada. Seet\u00f5ttu leidisime v\u00e4lja uue lahenduse. Kasutasime Netfilteri, lisasime sellele Consuli andmeallikana ja saime kiire jaotatud tulem\u00fc\u00fcri. Selle asemel asendati ACL-id ruuterites ja kasutati seda nii v\u00e4listena kui ka sisetulem\u00fc\u00fcridena. D\u00fcnaamiliseks haldamiseks arendasime BEFW s\u00fcsteemi, mida rakendati igal pool: alates kasutajate juurdep\u00e4\u00e4su haldamisest tootmisv\u00f5rgus kuni v\u00f5rgu segmentide \u00fcksteisest isoleerimiseni.<\/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 \/>\nKuidas see k\u00f5ik t\u00f6\u00f6tab ja miks peaksite sellele s\u00fcsteemile t\u00e4helepanu p\u00f6\u00f6rama, r\u00e4\u00e4gib <strong>Ivan Agarov<\/strong> (<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/annmuor\/\" class=\"user_link\">annmuor<\/a><\/noindex>) \u2014 infrastruktuuri turvalisuse grupi juht Maintenance osakonnas Minskis Wargamingu arenduskeskuses. Ivan on SELinuxi f\u00e4nn, armastab Perl-i ja kirjutab koodi. Turvalisuse grupi juhina t\u00f6\u00f6tab ta regulaarselt logide, varukoopiate ja R&amp;D-iga, et kaitsta Wargamingut h\u00e4kkerite eest ning tagada k\u00f5igi ettev\u00f5tte m\u00e4ngu serverite t\u00f6\u00f6.<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=\"M\u00e4ngi videot\" 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>2DOMAINS on 16 aastat teeninud professionaale, kes on valmis maksma vaid nende valikute eest, mida nad t\u00f5eliselt kasutavad.<\/h2>\n<p>\nEnne kui r\u00e4\u00e4gin, kuidas me seda tegime, r\u00e4\u00e4gin, kuidas me \u00fcldse sinna j\u00f5udsime ja miks see vajalikuks osutus. Selleks liikuge 9 aastat tagasi: 2010. aastasse, kui World of Tanks just ilmuma hakkas. Wargamingul oli umbes 50 serverit.<\/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>Ettev\u00f5tte serverite kasvu graafik.<\/em><\/p>\n<p>Meil oli v\u00f5rgu mudel. Selle aja jaoks oli see optimaalne.<\/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>V\u00f5rgu mudel 2010.<\/em><\/p>\n<p>Esik\u00fcljel elavad halvad poisid, kes tahavad meid purustada, kuid seal on tulem\u00fc\u00fcr. Tagak\u00fcljel ei ole tulem\u00fc\u00fcri, kuid seal on 50 serverit, mille k\u00f5ik me teame. K\u00f5ik t\u00f6\u00f6tab h\u00e4sti.<\/p>\n<p>Nelja aasta jooksul kasvas serverite park 100 korda, 5000-ni. Ilmusid esimesed isoleeritud v\u00f5rgud \u2014 ststage\u2019id: neid ei saa l\u00e4hetada tootmisse ning seal k\u00e4is sageli see, mis v\u00f5is olla ohtlik.<\/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>V\u00f5rgu mudel 2014.<\/em><\/p>\n<p>Me kasutasime harjumuse t\u00f5ttu samu seadmeid ning kogu t\u00f6\u00f6 toimus isoleeritud VLAN-ides: VLAN-idele kirjutatakse ACL-id, mis lubavad v\u00f5i keelavad teatud \u00fchenduse.<\/p>\n<p>2016. aastal saavutas serverite arv 8000. Wargaming omandas teisi stuudioid, lisandusid uued partnerlusv\u00f5rgustikud. Need tunduvad olevat meie omad, kuid mitte p\u00e4ris: partnerite VLAN sageli ei t\u00f6\u00f6ta, tuleb kasutada VPN-i koos VRF-iga, isolatsioonid keerusid keerulisemaks. ACL-i isolatsioonide segu suurenes.<\/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>V\u00f5rgumudel 2016. aastal.<\/em><\/p>\n<p>2018. aasta alguseks kasvas masinate park 16 000-ni. Segmente oli 6 ja \u00fclej\u00e4\u00e4nud me ei lugenud, sealhulgas suletud segmente, kus hoiti finantsandmeid. Ilmusid konteineriv\u00f5rgud (Kubernetes), DevOps, pilvev\u00f5rgud, mis olid \u00fchendatud VPN-i kaudu, n\u00e4iteks IVS-ist. Reegleid oli v\u00e4ga palju - see oli valus.<\/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>V\u00f5rgumudel ja isolatsiooni viisid 2018. aastal.<\/em><\/p>\n<p>Isolatsiooni jaoks kasutasime: VLAN koos ACL-iga L2-l, VRF koos ACL-iga L3-l, VPN ja palju muud. Liialt palju.<\/p>\n<h2>Probleemid<\/h2>\n<p>\nK\u00f5ik elavad ACL-i ja VLAN-i k\u00f5rval. Mis on \u00fcldse valesti? Sellele k\u00fcsimusele vastab Harold, kes varjab valu.<\/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 \/>\nProbleeme oli palju, kuid massilisi - viis.<\/p>\n<ul>\n<li><strong>Hinnat\u00f5usu geomeetriline kasv uute reeglite jaoks.<\/strong>. Iga uus reegel lisandus kauem kui eelmine, sest k\u00f5igepealt pidi kontrollima, kas sellist reeglit juba ei eksisteeri.<\/li>\n<li><strong>Segmendis ei olnud tulem\u00fc\u00fcri.<\/strong>. Segmendid eraldati kuidagi \u00fcksteisest, sees polnud juba piisavalt ressursse.<\/li>\n<li><strong>Reeglid rakendati kaua. <\/strong>K\u00e4ega \u00fcksiku kohaliku reegli saaks operaator kirjutada tunni jooksul. Globaalne v\u00f5ttis mitu p\u00e4eva.<\/li>\n<li><strong>Raskused reeglite auditeerimisel.<\/strong>. T\u00e4psemalt, see ei olnud v\u00f5imalik. Esimesed reeglid kirjutati juba 2010. aastal ja enamik nende autoritest ei t\u00f6\u00f6tanud enam ettev\u00f5ttes.<\/li>\n<li><strong>Madala taseme kontroll infrastruktuuri \u00fcle.<\/strong>. See on peamine probleem - me ei teadnud, mis meile \u00fcldse toimub.<\/li>\n<\/ul>\n<p>\nNii n\u00e4gi 2018. aastal v\u00e4lja v\u00f5rguinsener, kui ta kuulis: \"Vaja on veel natuke ACL-i.\"<\/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>Lahendused<\/h2>\n<p>\n2018. aasta alguses otsustati midagi selle probleemiga teha.<\/p>\n<p><strong>Integreerimise hind kasvab pidevalt. <\/strong>L\u00e4htudes sellest, et suured andakeskused l\u00f5petasid isoleeritud VLAN-ide ja ACL-ide toetamise, sest seadmetes loppus m\u00e4lu.<\/p>\n<p>Lahendus: eemaldati inimfaktor ja maksimaalselt automatiseeriti ligip\u00e4\u00e4su andmine.<\/p>\n<p><strong>Uute reeglite rakendamine on aeglane. <\/strong>Lahendus: kiirendada reeglite rakendamist, muuta see jagatud ja paralleelseks. Selle jaoks on vajalik jagatud s\u00fcsteem, et reeglid j\u00f5uaksid ise kohale, ilma rsync v\u00f5i SFTP-ta tuhandesse s\u00fcsteemi.<\/p>\n<p><strong>Segmendis ei olnud tulem\u00fc\u00fcri. <\/strong>Tulev viralub, kui \u00fche v\u00f5rgu sees ilmuvad erinevad teenused. Lahendus: kasutada host-p\u00f5hiseid tulem\u00fc\u00fcre. Peaaegu k\u00f5ikjal on meil Linux ja iptables, seega pole probleem.<\/p>\n<p><strong>K\u00fcsimused reeglite auditeerimisega.<\/strong> Lahendus: hoida k\u00f5ik reeglid \u00fches kohas \u00fclevaatamiseks ja haldamiseks, et saaksime neid auditeerida.<\/p>\n<p><strong>Infrastruktuuri kontrolli madal tase. <\/strong>Lahendus: inventeerida k\u00f5ik teenused ja nende vahelised juurdep\u00e4\u00e4sud.<\/p>\n<p>See on pigem haldusprotsess kui tehniline. M\u00f5nikord on meil n\u00e4dalas 200-300 uut versiooni, eriti reklaamide ja p\u00fchade ajal. See kehtib ainult \u00fche meie DevOps'i meeskonna kohta. Nii suure versioonide arvu juures on v\u00f5imatu m\u00f5ista, millised pordid, IP-d ja integratsioonid on vajalikud. Seet\u00f5ttu vajasime spetsiaalselt koolitatud teenusehaldurite meeskonda, kes k\u00fcsisid meeskondadelt: 'Mis on olemas ja miks te selle \u00fcles t\u00f5ite?'<\/p>\n<p>P\u00e4rast k\u00f5ike, mida oleme k\u00e4ivitanud, hakkas v\u00f5rguinsener 2019. aastal v\u00e4lja n\u00e4gema selline.<\/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>\nOtsustasime, et k\u00f5ik, mida leidis teenusehaldurite abiga, paigaldame Consulisse ja sealt kirjutame iptables'i reeglid.<\/p>\n<p>Kuidas me otsustasime seda teha?<\/p>\n<ul>\n<li>Kogume k\u00f5ik teenused, v\u00f5rgud ja kasutajad.<\/li>\n<li>Loome nende p\u00f5hjal iptables'i reeglid.<\/li>\n<li>Automatiseerime kontrolli.<\/li>\n<li>\u2026.<\/li>\n<li>PROFIT.<\/li>\n<\/ul>\n<p>\nConsul ei ole eemal API, ta v\u00f5ib t\u00f6\u00f6tada igas s\u00f5lmes ja kirjutada iptables'isse. J\u00e4\u00e4b vaid v\u00e4lja m\u00f5elda automatiseeritud kontrollvahendid, mis eemaldavad liialdused, ning suurem osa probleemidest on lahendatud! \u00dclej\u00e4\u00e4nu viime ellu protsessi k\u00e4igus.<\/p>\n<h3>Miks Consul?<\/h3>\n<p>\n<strong>On h\u00e4sti ennast t\u00f5estanud. <\/strong>Aastatel 2014-15 kasutasime seda Vaulti tagaplaanina, kus hoiame paroole.<\/p>\n<p><strong>Ei kaota andmeid.<\/strong>. Consul ei ole andmeid kaotanud \u00fchegi rikke ajal. See on suurt pluss s\u00fcsteemi haldamisel.<\/p>\n<p><strong>P2P-\u00fchendused kiirendavad muudatuste levikut.<\/strong>. P2P puhul tulevad k\u00f5ik muudatused kiiresti, ei pea tundide viisi ootama.<\/p>\n<p><strong>Mugav REST API.<\/strong> Oleme kaalunud ka Apache ZooKeeper'i, kuid sel pole REST API-d, tuleks asja keeruliseks muuta.<\/p>\n<p><strong>T\u00f6\u00f6tab nii v\u00f5tmete (KV) salvestajana kui ka kataloogina (teenuse avastamine).<\/strong>. Saame salvestada teenuseid, katalooge ja andmekeskusi. See on mugav mitte ainult meile, vaid ka naabermeeskondadele, kuna ehitades globaalset teenust, m\u00f5tleme suurelt.<\/p>\n<p><strong>Kirjutatud Go-s, mis on Wargamingi tehnikapis. <\/strong>Me armastame seda keelt, meil on palju Go-arendajaid.<\/p>\n<p><strong>Tugev ACL-s\u00fcsteem. <\/strong>Consulis saab ACL-i abil hallata, kellele ja mida kirjutada. Garantiime, et tulem\u00fc\u00fcri reeglid ei kattu rohkem millegagi ning meil ei teki sellega probleeme.<\/p>\n<p>Aga Consulil on ka puudused.<\/p>\n<ul>\n<li><strong>Ei skaalata andmekeskuse ulatuses, kui teil pole \u00e4riversiooni. <\/strong>See skaleerub ainult f\u00f6deratsiooni kaudu.<\/li>\n<li><strong>Oled v\u00e4ga s\u00f5ltuv v\u00f5rgu kvaliteedist ja serverite koormusest. <\/strong>Consul ei t\u00f6\u00f6ta \u00f5igesti serverina koormatud serveris, kui v\u00f5rgus on mingid viivitused, n\u00e4iteks ebaregulaarne kiirus. See on seotud P2P-\u00fchenduste ja v\u00e4rskenduste levitamise mudelitega.<\/li>\n<li><strong>Probleemid k\u00e4ttesaadavuse j\u00e4lgimisega<\/strong>. Consuli staatuse j\u00e4rgi v\u00f5ib tunduda, et k\u00f5ik on korras, kuid tegelikult on see juba ammu v\u00e4lja kukkunud.<\/li>\n<\/ul>\n<p>\nSuur osa neist probleemidest lahendasime Consuli kasutamise k\u00e4igus, seet\u00f5ttu valisime selle. Ettev\u00f5ttel on alternatiivse tagaosa plaanid, kuid me oleme \u00f5ppinud probleemidega toime tulema ja seni elame Consuliga.<\/p>\n<h3>Kuidas Consul t\u00f6\u00f6tab<\/h3>\n<p>\nTinglikku andmekeskusesse paigaldame serverid - kolm kuni viis. \u00dcks v\u00f5i kaks serverit ei t\u00f6\u00f6ta: nad ei suuda korraldada kvoorumit ja otsustada, kes on \u00f5ige, kui andmed ei klapi. \u00dcks rohkem kui viis ei anna m\u00f5tet, j\u00f5udlus langeb.<\/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 \/>\nKlientide \u00fchendamine serveritega toimub suvalises j\u00e4rjekorras: samad agendid, ainult lipuga <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 \/>\nP\u00e4rast seda saavad kliendid nimekirja P2P-\u00fchendustest ja loovad omavahel sidemed.<\/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 \/>\nGlobaalset tasandil \u00fchendame mitut andmekeskust. Need on samuti \u00fchendatud P2P ja suhtlevad omavahel.<\/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 \/>\nKui tahame andmeid teisest andmekeskusest hankida, k\u00e4ib p\u00e4ring serverilt serverile. Sellist skeemi nimetatakse <strong>Serfi protokolliks<\/strong>. Serfi protokoll, nagu ka Consul, on HashiCorpi arendus.<\/p>\n<h3>M\u00f5ned olulised faktid Consuli kohta<\/h3>\n<p>\nConsulil on dokumentatsioon, mis kirjeldab selle t\u00f6\u00f6p\u00f5him\u00f5tteid. T\u00f5in v\u00e4lja ainult valitud faktid, mida tasub teada.<\/p>\n<p><strong>Consuli serverid valivad meistri h\u00e4\u00e4letavate seas<\/strong>. Consul valib meistri serverite loendist iga andmekeskuse jaoks, ja k\u00f5ik p\u00e4ringud suunatakse ainult temale, arvestamata serverite arvu. Meistri ootamine ei too kaasa uuesti valimist. Kui meistrit ei valita, ei teeninda keegi p\u00e4ringuid.<\/p>\n<blockquote><p>Kas soovisite horisontaalset skaleerimist? Vabandust, ei.<\/p><\/blockquote>\n<p> P\u00e4ring teisele andmekeskusele toimub meistrilt meistrile, s\u00f5ltumata sellest, millisele serverile see tuli. Valitud meister saab 100% koormusest, v\u00e4lja arvatud p\u00e4ringute edastamise koormus. K\u00f5igil andmekeskuse serveritel on aktuaalne andmekoopia, kuid vastab vaid \u00fcks.<\/p>\n<blockquote><p>Ainus v\u00f5imalus skaleerimiseks on sisse l\u00fclitada stale-re\u017eiim kliendil.<\/p><\/blockquote>\n<p>Stale-re\u017eiimis saab vastata ilma kvoorumita. See on re\u017eiim, kus loobume andmete j\u00e4rjepidevusest, kuid loeme natuke kiiremini kui tavaliselt, ja vastab iga server. Loomulikult toimub kirjutamine ainult l\u00e4bi meistri.<\/p>\n<p><strong>Consul ei kopeeri andmeid andmekeskuste vahel.<\/strong>. F\u00f6deratsiooni kogumisel on igal serveril vaid oma andmed. \u00dclej\u00e4\u00e4nud jaoks p\u00f6\u00f6rdub ta alati kellegi teise poole.<\/p>\n<p><strong>Tehingutev\u00e4liseid operatsioonide aatomilisust ei garanteerita.<\/strong>. Pidage meeles, et midagi ei saa muuta ainult teie. Kui soovite teisiti, viige l\u00e4bi tehing lukuga.<\/p>\n<p><strong>Blokeerivad operatsioonid ei garanteeri lukustamist.<\/strong>. P\u00e4ring l\u00e4heb meistrilt meistrile, mitte otse, seega ei ole garantiid, et lukustus kehtib, kui teete lukustuse n\u00e4iteks muus andmekeskuses.<\/p>\n<p><strong>ACL ei garanteeri ka juurdep\u00e4\u00e4su (paljuski).<\/strong>. ACL v\u00f5ib mitte t\u00f6\u00f6tada, kuna see on salvestatud \u00fchte andmekeskusesse f\u00f6deratsioonis - ACL andmekeskusesse (Primary DC). Kui DC Teile ei vasta, ei t\u00f6\u00f6ta ACL.<\/p>\n<p><strong>\u00dcks hangunud meister viib kogu f\u00f6deratsiooni hangumise.<\/strong>. N\u00e4iteks kui f\u00f6deratsioonis on 10 andmekeskust ja \u00fches on halb v\u00f5rk, ning \u00fcks meister kukub. K\u00f5ik, kes temaga suhtlevad, j\u00e4\u00e4vad ringi kinni: p\u00e4ring toimub, sellele ei vastata, teema hangub. Te ei saa teada, millal see juhtub, lihtsalt tunni v\u00f5i kahe p\u00e4rast kukub kogu f\u00f6deratsioon. Te ei saa selle vastu midagi teha.<\/p>\n<p>Staatus, kvoorum ja valimised t\u00f6\u00f6deldakse eraldi l\u00f5imes. Uuendavaid valimisi ei toimu, staatuse teave ei n\u00e4ita midagi. Te arvate, et teie Consul t\u00f6\u00f6tab, p\u00e4rite, ja midagi ei juhtu - vastust ei tule. Samal ajal n\u00e4itab staatus, et k\u00f5ik on h\u00e4sti.<\/p>\n<p>Oleme selle probleemiga kokku puutunud, olime sunnitud \u00fcmber ehitama teatud osa andmekeskustest, et seda v\u00e4ltida.<\/p>\n<p><strong>Consul Enterprise'i \u00e4riversioonis pole teatud \u00fclaltoodud puudusi.<\/strong>Selles on palju kasulikke funktsioone: h\u00e4\u00e4letajate valimine, jaotamine, skaleerimine. On ainult \u00fcks \"aga\" \u2014 jaotatud s\u00fcsteemi litsentsimisest on \u00fcsna kallis.<\/p>\n<p>Elu n\u00e4pun\u00e4ide: <code>rm -rf \/var\/lib\/consul<\/code> \u2014 ravim k\u00f5igi agentide haiguste vastu. Kui midagi ei toimi, kustutage oma andmed ja laadige koopia andmed tagasi. T\u00f5en\u00e4oliselt t\u00f6\u00f6tab Consul j\u00e4lle.<\/p>\n<h2>BEFW<\/h2>\n<p>\nN\u00fc\u00fcd r\u00e4\u00e4gime sellest, mida oleme Consulile lisanud.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/wgnet\/befw\">BEFW<\/a><\/noindex> \u2014 see on akron\u00fc\u00fcm <strong>B<\/strong>ack<strong>E<\/strong>nd<strong>F<\/strong>ire<strong>W<\/strong>all. Toote nimetus pidi olema kuidagi valitud, kui ma loodud repot, et panna esimesed testkommit.<\/p>\n<h3>Reegli mallid<\/h3>\n<p>\nReeglid on kirjutatud iptables'i s\u00fcntaksis.<\/p>\n<ul>\n<li>-N BEFW<\/li>\n<li>-P INPUT DROP<\/li>\n<li>-A INPUT -m state&mdash;state 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>\nK\u00f5ik l\u00e4heb l\u00e4bi BEFW ahela, v\u00e4lja arvatud <code>ESTABLISHED<\/code>, <code>RELATED<\/code> ja localhost. Mall v\u00f5ib olla igasugune, see on lihtsalt n\u00e4ide.<\/p>\n<p>Mis on BEFW kasu?<\/p>\n<h3>Teenused<\/h3>\n<p>\nMeil on teenus, millel on alati port ja s\u00f5lm, millel see t\u00f6\u00f6tab. Meie s\u00f5lmest saame kohalikult k\u00fcsida agentilt ja teada saada, et meil on m\u00f5ni teenus. Samuti saab lisada silte.<\/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 \/>\nIga teenus, mis on k\u00e4ivitatud ja registreeritud Consulis, muudetakse iptables'i reegliks. Meil on SSH \u2014 avame portaali 22. Bash-skript on lihtne: curl ja iptables, rohkem pole vaja.<\/p>\n<h3>Kliendid<\/h3>\n<p>\nKuidas avada juurdep\u00e4\u00e4s mitte k\u00f5igile, vaid valikuliselt? Teenuse nime j\u00e4rgi salvestada KV-lao IP-loendid.<\/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 \/>\nN\u00e4iteks tahame, et k\u00f5ik k\u00fcmnenda v\u00f5rgu kasutajad saaksid ligi SSH_TCP_22 teenusele. Lisame \u00fche v\u00e4ikese v\u00e4lja TTL? ja n\u00fc\u00fcd on meil ajutised load, n\u00e4iteks \u00fcheks p\u00e4evaks.<\/p>\n<h3>Juurdep\u00e4\u00e4sud<\/h3>\n<p>\nSeome teenused ja kliendid: meil on teenus, iga\u00fche jaoks on valmis KV-ladu. N\u00fc\u00fcd anname ligip\u00e4\u00e4su mitte k\u00f5igile, vaid valikuliselt.<\/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>Grupid<\/h3>\n<p>\nKui igal korral kirjutame tuhandeid IP-aadresse, siis v\u00e4sime \u00e4ra. Leiame grupid \u2014 eraldi alamhulk KV-s. Nimeta see Alias (v\u00f5i grupid) ja hoia seal gruppe sama p\u00f5him\u00f5tte j\u00e4rgi.<\/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 \/>\nSeome: n\u00fc\u00fcd saame avada SSH mitte konkreetselt P2P-l, vaid tervele grupile v\u00f5i mitmele grupile. Samuti on olemas TTL \u2014 grupis saab ajutiselt lisada ja kustutada.<\/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>Integreerimine<\/h3>\n<p>\nMeie probleem on &mdash;&nbsp;inimfaktor ja automatiseerimine. Praegu oleme selle nii lahendanud.<\/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 \/>\nMe t\u00f6\u00f6tame Puppetiga ja edastame sellele k\u00f5ik, mis puutub s\u00fcsteemi (rakenduste kood). Puppetdb's (tavaline PostgreSQL) hoitakse teenuste loetelu, mis seal t\u00f6\u00f6tavad, ja neid saab leida ressursi t\u00fc\u00fcbi j\u00e4rgi. Samuti saab seal n\u00e4ha, kes kuhu p\u00f6\u00f6rdub. Meil on ka pull request ja merge request s\u00fcsteem selle jaoks.<\/p>\n<p>Me kirjutasime befw-sync \u2014 lihtsa lahenduse, mis aitab andmeid edastada. Esiteks p\u00f6\u00f6rduvad sync cookies puppetdb'sse. Seal on seadistatud HTTP API: k\u00fcsime, millised teenused meil on ja mida on vaja teha. Seej\u00e4rel tehakse p\u00e4ring Consuli.<\/p>\n<p>Kas integratsioon on olemas? On: me kirjutasime reeglid ja lubasime Pull Requeste vastu v\u00f5tta. Kas on vajalik m\u00f5ni port v\u00f5i tuleb host mingisse gruppi lisada? Pull Request, \u00fclevaatus \u2014 rohkem ei ole mitte mingit \u201eLeia 200 muud ACL-i ja p\u00fc\u00fca midagi sellega teha.\u201d<\/p>\n<h3>Optimeerimine<\/h3>\n<p>\nPingi localhost t\u00fchja reeglite ahelaga aega 0,075 ms.<\/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 \/>\nLisame sellesse ahelasse 10 000 aadressi iptables. Tulemuseks on, et ping suureneb 5 korda: iptables on t\u00e4iesti lineaarsed, iga aadressi t\u00f6\u00f6tlemine v\u00f5tab aega.<\/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 \/>\nFirewalli, kuhu me migreerime tuhandeid ACL-e, jaoks on meil palju reegleid, ja see tekitab viivitusi. M\u00e4nguprotokollide jaoks on see halb.<\/p>\n<p>Aga kui me paneme <strong>10 000 aadressi ipseti<\/strong> siis ping isegi v\u00e4heneb.<\/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 \/>\nM\u00f5te on selles, et \u201eO\u201d (algoritmi keerukus) ipseti puhul on alati 1, s\u00f5ltumata reeglite arvust. T\u00f5si, seal on piirang \u2014 reegleid ei tohi olla rohkem kui 65535. Praegu elame sellega: neid saab kombineerida, laiendada, teha kaks ipsetit \u00fches.<\/p>\n<h3>Salvestamine<\/h3>\n<p>\nLoogiline j\u00e4tk protsesside iteratsioonides on teabe hoidmine klientide kohta teenuse ipsetis.<\/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 \/>\nN\u00fc\u00fcd on meil sama SSH ja me ei kirjuta kohe 100 IP-d, vaid m\u00e4\u00e4rame ipseti nime, millega suhelda, ja j\u00e4rgmise reegli <code>DROP<\/code>. Saame \u00fcmber kujundada \u00fche reegli \u201eKes ei ole siin, see DROP\u201d, aga nii on silmatorkavam.<\/p>\n<p>N\u00fc\u00fcd on meil reeglid ja setid. Peamine \u00fclesanne on luua set enne reegli kirjutamist, sest muidu iptables ei salvesta reeglit.<\/p>\n<h3>\u00dcldine skeem<\/h3>\n<p>\nSkeemina n\u00e4eb k\u00f5ik, mida ma r\u00e4\u00e4kisin, v\u00e4lja selline.<\/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 \/>\nTeeme Puppetisse commit'i, k\u00f5ik saadetakse hosti, teenused on siin, ipset seal ja kedagi, kes seal kirjas ei ole, ei lubata.<\/p>\n<h3>Luba &amp; keela<\/h3>\n<p>\nKuna kiirelt maailma p\u00e4\u00e4sta v\u00f5i kedagi kiiresti v\u00e4lja l\u00fclitada, tegime k\u00f5igi ahelate alguses kaks ipsetit: <code>rules_allow<\/code> ja <code>rules_deny<\/code>. Kuidas see t\u00f6\u00f6tab?<\/p>\n<p>N\u00e4iteks keegi loob botidega koormuse meie veebile. Varem tuli leida logidest tema IP, anda see v\u00f5rgutehnilistele inseneridele, et nad leiaksid liiklusallika ja blokeeriksid selle. N\u00fc\u00fcd n\u00e4eb see v\u00e4lja teisiti.<\/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 \/>\nSaatame Consulisse, ootame 2,5 sek, ja valmis. Kuna Consul levitab kiiresti t\u00e4nu P2P-le, t\u00f6\u00f6tab see igal pool, igas maailma nurgas.<\/p>\n<p>Kord peatusin ma t\u00e4ielikult WOT-i, eksides tulem\u00fc\u00fcriga. <code>rules_allow<\/code> \u2014 see on meie kindlustus selliste juhtumite vastu. Kui me kuskil tulem\u00fc\u00fcriga eksime, ja midagi on blokeeritud, saame alati saata tinglikku <code>0.0\/0<\/code>, et kiiresti k\u00f5ik \u00fcles t\u00f5sta. Hiljem saame k\u00f5ik k\u00e4sitsi korda teha.<\/p>\n<h3>Teised ipset'id<\/h3>\n<p>\nV\u00f5ib lisada teisi ipset'e s\u00fcsteemi <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 \/>\nMiks? M\u00f5nikord on kellelgi vaja ipset'i, n\u00e4iteks, et emuleerida osa klastri v\u00e4ljal\u00fclitamist. Iga\u00fcks v\u00f5ib tuua erinevaid ipset'e, neid nimetada ja need tuuakse Consulist. Samal ajal v\u00f5ivad need osaleda iptables'i reeglites v\u00f5i olla lihtsalt k\u00e4sud <code>NOOP<\/code>: konsistentsi toetab daemon.<\/p>\n<h3>Kasutajad<\/h3>\n<p>\nVarem oli nii: kasutaja \u00fchendas v\u00f5rku ja sai domeeni kaudu seadistused. Enne uue p\u00f5lvkonna tulem\u00fc\u00fcride ilmumist ei osanud Cisco aru saada, kus kasutaja ja kus IP on. Seet\u00f5ttu anti ligip\u00e4\u00e4s ainult masina hostname'i kaudu.<\/p>\n<p>Mida me tegime? Me sekkusime aadressi saamise hetkel. \u00dcldiselt on see dot1x, Wi-Fi v\u00f5i VPN \u2014 k\u00f5ik k\u00e4ib l\u00e4bi RADIUS'e. Iga kasutaja jaoks loome grupp kasutajanime j\u00e4rgi ja paneme sinna IP aadressi, mille TTL on tema dhcp.lease \u2014 nii kui see aegub, kaob reegel.<\/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 \/>\nN\u00fc\u00fcd saame avada ligip\u00e4\u00e4su teenustele, nagu ka teistesse gruppidesse, kasutajanime j\u00e4rgi. Oleme p\u00e4\u00e4senud hostname'i valutest, kui need muutuvad, ja v\u00e4hendanud v\u00f5rgutehniliste inseneride koormust, sest nad ei vaja enam Cisco't. N\u00fc\u00fcd kirjutavad insenerid ise ligip\u00e4\u00e4sad oma serveritele.<\/p>\n<h3>Isolatsioon<\/h3>\n<p>\nSamas alustasime isolatsiooni anal\u00fc\u00fcsimist. Teenusehaldurid tegid inventuuri ja me anal\u00fc\u00fcsisime k\u00f5iki meie v\u00f5rke. Jaotame need samadeks gruppideks ning vajalikesse serveritesse lisasime gruppidele n\u00e4iteks deny. N\u00fc\u00fcd satub sama st\u00e4ngimise isolatsioon produtktsiooni reeglite keeldumisse, kuid mitte sisestatavale produtktsiooni.<\/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 \/>\nSkeem t\u00f6\u00f6tab kiiresti ja lihtsalt: eemaldame k\u00f5ik ACL-id serveritelt, vabastame rauda, v\u00e4hendame isoleeritud VLANide arvu.<\/p>\n<h3>Terviklikkuse kontroll<\/h3>\n<p>\nVarem oli meil spetsiaalne k\u00e4ivitus, mis teavitas, kui keegi k\u00e4sitsi tulem\u00fc\u00fcrireeglit muutis. Ma kirjutasin tohutu tulem\u00fc\u00fcrireeglite kontrollimise lintimise, see oli keeruline. Praegu kontrollib BEFW terviklikkust. Ta j\u00e4lgib hoolikalt, et tema loodud reeglid ei muutuks. Kui keegi muudab tulem\u00fc\u00fcrireegleid, taastab ta k\u00f5ik tagasi. \"Ma t\u00f5stsin kiiresti proksit, et kodust t\u00f6\u00f6tada\" \u2014 selliseid v\u00f5imalusi enam ei ole.<\/p>\n<p>BEFW kontrollib ipset teenuste ja loendi kaudu befw.conf, teenuste reeglid BEFW ahelas. Kuid ta ei j\u00e4lgi teisi ahelaid ja reegleid ning muid ipset'e.<\/p>\n<h3>Kaitse riketest<\/h3>\n<p>\nBEFW salvestab alati viimase eduka oleku otse binaarsesse struktuuri state.bin. Kui midagi l\u00e4heb valesti, tagastab ta alati selle state.bin'ile.<\/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 \/>\nSee on kindlustus ebastabiilse Consuli t\u00f6\u00f6 vastu, kui ta ei saatnud andmeid v\u00f5i keegi eksis ja kasutas reegleid, mida ei saa rakendada. Et me ei j\u00e4\u00e4ks ilma tulem\u00fc\u00fcrist, taastub BEFW viimasele olekule, kui m\u00f5nes etapis toimub viga.<\/p>\n<p>Kriitilistes olukordades on see garantii, et j\u00e4\u00e4me t\u00f6\u00f6v\u00f5imelise tulem\u00fc\u00fcriga. Me avame k\u00f5ik hallid v\u00f5rgud lootuses, et administraator tuleb ja parandab. Kord panen selle konfigureerimisse, aga hetkel on meil lihtsalt kolm halli v\u00f5rku: 10\/8, 172\/12 ja 192.168\/16. Meie Consuli raames on see oluline omadus, mis aitab edasi areneda.<\/p>\n<p><em>Demo: ettekande k\u00e4igus demonstreerib Ivan BEFW demo-re\u017eiimi. Demonstraati on mugavam vaadata aadressil <noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/4zP67uYnsR4?t=1663\">video<\/a><\/noindex>. Demoversiooni l\u00e4htekood on saadaval <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/wgnet\/befw\/tree\/master\/demo\">GitHubis<\/a><\/noindex>.<\/em><\/p>\n<h2>Pahupooled<\/h2>\n<p>\nR\u00e4\u00e4gin vigadest, millega me silmitsi seisime.<\/p>\n<p><strong>ipset add set 0.0.0.0\/0. <\/strong>Mis juhtub, kui lisada ipset'i 0.0.0.0\/0? Lisatakse k\u00f5ik IP-d? Avaneb juurdep\u00e4\u00e4s internetile? <\/p>\n<p>Ei, me saame vea, mis maksis meile kaks tundi seisakut. Ja see viga ei toimi alates 2016. aastast, see on RedHat Bugzilas numbri all #1297092, ja me leidsime selle juhuslikult \u2014 arendaja raportist.<\/p>\n<p>N\u00fc\u00fcd kehtib BEFW's rangelt reegel, et <code>0.0.0.0\/0<\/code> muutub kaheks aadressiks: <code>0.0.0.0\/1<\/code> ja <code>128.0.0.0\/1<\/code>.<\/p>\n<p><strong>ipset restore set &lt; file. <\/strong>Mida teeb ipset, kui te \u00fctlete talle <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>Mitte midagi sellist \u2014 ta teeb merge, ja vanad aadressid ei kao kuhugi, juurdep\u00e4\u00e4su ei sulgu.<\/p>\n<p>Leidsime vea, kui testisime isolatsiooni. N\u00fc\u00fcd on seal \u00fcsna keeruline s\u00fcsteem \u2014 selle asemel, et <code>restore<\/code> teostatakse <code>create temp<\/code>, siis <code>restore flush temp<\/code> ja <code>restore temp<\/code>. L\u00f5pus swap: atomaarseks, sest kui esiteks teostatakse <code>flush<\/code> Ja ja hetkedel, kui m\u00f5ni pakett saabub, siis l\u00fckatakse see k\u00f5rvale ja midagi l\u00e4heb valesti. Seet\u00f5ttu on seal natuke musta maagiat.<\/p>\n<p><strong>consul kv get -datacenter=other. <\/strong>Nagu ma juba mainisin, arvame, et k\u00fcsime mingisuguseid andmeid, kuid saame kas andmed v\u00f5i vea. Saame seda teha Consuli kaudu kohapeal, kuid sel juhul hangub nii \u00fcks kui teine.<\/p>\n<p>Kohalik Consul-klient on HTTP API \u00fcmberm\u00f5eldud pildiks. Kuid see hangub ja ei reageeri ei Ctrl+C, ei Ctrl+Z-le, mitte millelegi, ainult <code>, protsessi \u00f5rn sulgemine ja serveri seiskamine (<\/code> naaberterminalis. Oleme sellega silmitsi seisnud, kui ehitasime suurt klastrit. Kuid meil pole hetkel lahendust, valmistume selle vea parandamiseks Consulis.<\/p>\n<p><strong>Consuli juht ei reageeri. <\/strong>Meil ei reageeri keskserver andmekeskuses, me m\u00f5tleme: \"\u00c4kki t\u00f6\u00f6tab n\u00fc\u00fcd \u00fcmbervalimise algoritm?\" <\/p>\n<p>Ei, see ei toimi, ja j\u00e4lgimine ei n\u00e4ita midagi: Consul \u00fctleb, et kohustuste indeks on olemas, juht leitud, k\u00f5ik on korras.<\/p>\n<p>Kuidas me sellega toime tuleme? <code>service consul restart<\/code> cronis iga tunni tagant. Kui teil on 50 serverit - pole hullu. Kui neid on 16 000, m\u00f5istate, kuidas see t\u00f6\u00f6tab.<\/p>\n<h2>Kokkuv\u00f5te<\/h2>\n<p>\nL\u00f5puks saime j\u00e4rgmised eelised:<\/p>\n<ul>\n<li>100% katmine k\u00f5igi Linux-masinatega.<\/li>\n<li>Kiirus.<\/li>\n<li>Automatiseerimine.<\/li>\n<li>Oleme vabastanud riistvara ja v\u00f5rguinsenerid orjuse alt.<\/li>\n<li>On tekkinud praktiliselt piiramatu integratsiooni v\u00f5imalused: olgu see Kubernetes, Ansible v\u00f5i Python.<\/li>\n<\/ul>\n<p>\n<strong>Miinused<\/strong>: Consul, millega me n\u00fc\u00fcd elame, ja v\u00e4ga k\u00f5rge vea hind. N\u00e4iteks, kord kell 6 \u00f5htul (tipptund Venemaal) muutsin ma midagi v\u00f5rguliste nimekirjade juures. Just siis ehitasime isolatsiooni BEFW-l. Ma tegin kuskil vea, tundub, et m\u00e4\u00e4rasin vale maski, kuid k\u00f5ik kukkus kahe sekundi jooksul. J\u00e4lgimine s\u00fcttib, toimetaja t\u00f5ttab: \"Meie s\u00fcsteem peab peesitama!\" Osakonna juht hallitas, kui selgitas \u00e4ri sellele, miks nii l\u00e4ks.<\/p>\n<p>Axios on nii k\u00f5rge, et me m\u00f5tlesime v\u00e4lja oma keeruka ennetusprotseduuri. Kui kavatsete seda rakendada suurtootmises, \u00e4rge andke meistrite tokenit Consuli juurde k\u00f5igile oma. See l\u00f5peb halvasti.<\/p>\n<p><strong>Kulud. <\/strong>Ma olen \u00fcksi koodi 400 tundi kirjutanud. Toetuseks kulutab minu 4 inimesest koosnev meeskond 10 tundi kuus k\u00f5igi peale. V\u00f5rreldes iga uue p\u00f5lvkonna tulem\u00fc\u00fcriga, on see tasuta.<\/p>\n<p><strong>Plaane. <\/strong>Pikaajaline plaan on leida alternatiivne transport Consuli asemel v\u00f5i lisana. V\u00f5ibolla on see Kafka v\u00f5i midagi sarnast. Kuid j\u00e4rgmise paari aasta jooksul elame me Consuli peal.<\/p>\n<p>L\u00e4hituleviku plaanid: integreerimine Fail2bani, j\u00e4lgimisega, nftables'iga, v\u00f5imalusel ka teiste distributsioonidega, m\u00f5\u00f5dikud, laiendatud j\u00e4lgimine, optimeerimine. Kubernetes'e tugi on samuti plaanides, kuna meil on hetkel mitu klastri ja soov.<\/p>\n<p>Veel tuleviku plaane:<\/p>\n<ul>\n<li>liiklustuvastuse anomaaliad;<\/li>\n<li>v\u00f5rgu kaardi haldamine;<\/li>\n<li>Kubernetes'e tugi;<\/li>\n<li>pakettide kokkupanek k\u00f5igi s\u00fcsteemide jaoks;<\/li>\n<li>Veebiliides.<\/li>\n<\/ul>\n<p>\nT\u00f6\u00f6tame pidevalt konfiguratsiooni laiendamise, m\u00f5\u00f5dikute suurendamise ja optimeerimise kallal.<\/p>\n<p><i>Liituge projektiga. Projekt on suurep\u00e4rane, kuid kahjuks on see praegu \u00fche inimese projekt. Tulge ja <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/wgnet\/befw\">GitHub <\/a><\/noindex>proovige midagi teha: commitida, testida, pakkuda midagi v\u00e4lja, anda oma hinnang.<\/i><\/p>\n<blockquote><p>Vahepeal valmistume <noindex><a rel=\"nofollow\" href=\"https:\/\/www.highload.ru\/spb\/2020\">Saint HighLoad++<\/a><\/noindex>, mis toimub 6. ja 7. aprillil Peterburgis, ja kutsume k\u00f5rge koormusega s\u00fcsteemide arendajaid <noindex><a rel=\"nofollow\" href=\"https:\/\/conf.ontico.ru\/lectures\/propose?conference=hl2020-spb\">esitlusele registreeruma<\/a><\/noindex>. Kogenud esinejad teavad juba, mida teha, kuid noortele soovitame v\u00e4hemalt <noindex><a rel=\"nofollow\" href=\"https:\/\/www.highload.ru\/spb\/2020\/speakers\">proovi<\/a><\/noindex>. Konverentsil esinejana osalemisel on mitmeid eeliseid. Millised, saab lugeda n\u00e4iteks l\u00f5pust. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/oleg-bunin\/blog\/486142\/\">selle artikli<\/a><\/noindex>.<\/p><\/blockquote>\n<p>Allikas: <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.2 - 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\/et\/blog\/consul-iptables-3\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\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\/et\/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":"Aastal 2010 oli Wargaming'il 50 serverit ja lihtne v\u00f5rgu mudel: backend, frontend ja tulem\u00fc\u00fcr.","canonical_url":"https:\/\/prohoster.info\/et\/blog\/consul-iptables-3","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","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\/et\/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\/et\/wp-json\/wp\/v2\/posts\/41051","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=41051"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/41051\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/41052"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=41051"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=41051"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=41051"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}