{"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\u00f5rgumudel: tagaplaan, esiplaan ja tulem\u00fc\u00fcr. Serverite arv kasvas, mudel muutus keerulisemaks: etappid, isoleeritud VLANid koos ACL-dega, siis VPNid koos VRF-idega, VLANid koos ACL-dega L2-l, VRF-id koos ACL-dega L3-l. Pea k\u00e4ib ringi? Edasi l\u00e4heb veel huvitavamaks.<\/p>\n<p>Kui servereid sai juba 16 000, oli sellise mitmekesiste segmentide hulga haldamine nutte ja vaeva t\u00e4is. Seet\u00f5ttu leiti teine lahendus. V\u00f5eti Netfilteri tehnoloogia, lisati sellele Consul andmeallikana ning saadi kiire jagatud tulem\u00fc\u00fcr. Sellega asendati ACL-id ruuterites ning kasutati nii v\u00e4list kui sisemist tulem\u00fc\u00fcri. D\u00fcnaamiliseks haldamiseks koostati BEFW s\u00fcsteem, mida rakendati igal pool: alates kasutajate juurdep\u00e4\u00e4su haldamisest tootmisv\u00f5rgus kuni v\u00f5rgu segmentide isolatsioonini \u00fcksteisest.<\/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 turbegrupi juht Maintenance'i osakonnas Minski arenduskeskuses. Ivan on SELinuxi f\u00e4nn, armastab Perl'i ja kirjutab koodi. Infrastruktuuri turbegrupi juhina t\u00f6\u00f6tab ta regulaarselt logide, varukoopiate ja R&amp;D-keskkondadega, et kaitsta Wargamingut h\u00e4kkerite eest ja tagada k\u00f5igi ettev\u00f5tte m\u00e4ngiserverite toimimine.<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=\"Vaata 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>Ajalooline \u00fclevaade<\/h2>\n<p>\nEnne kui r\u00e4\u00e4gin, kuidas me seda tegime, r\u00e4\u00e4gin, kuidas me \u00fcldse sinna j\u00f5udsime ja miks see vajalik oli. Selleks liikuge 9 aastat tagasi: 2010. aasta, kui World of Tanks alles turule tuli. 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>Frondil elavad halvad poisid, kes tahavad meid murda, kuid seal on tulekaitse. Tagumise poolel tulekaitset pole, kuid seal on 50 serverit, millest me k\u00f5iki teame. K\u00f5ik toimib h\u00e4sti.<\/p>\n<p>4 aasta jooksul kasvas serverite arv 100 korda, 5000-ni. Ilmusid esimesed isoleeritud v\u00f5rgud \u2014 stendide testimisseadmed: need ei saanud minna tootmisse, kuid seal t\u00f6\u00f6tati sageli asjadega, mis v\u00f5iksid olla ohtlikud.<\/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>Tavaliselt kasutasime samu seadmeid ja kogu t\u00f6\u00f6 toimus isoleeritud VLAN-ide peal: VLAN-idesse kirjutatakse ACL-id, mis lubavad v\u00f5i keelavad teatud \u00fchendusi.<\/p>\n<p>2016. aastal kasvas serverite arv 8000-ni. Wargaming omandas teisi stuudiosid ning tekkisid uued partnerv\u00f5rgustikud. Need n\u00e4ivad olevat meie omad, aga mitte p\u00e4ris: partnerite VLAN-id ei t\u00f6\u00f6ta sageli, seet\u00f5ttu tuleb kasutada VPN-i koos VRF-iga, isolatsioonid muutusid keerulisemaks. ACL-i isolatsioonide segu kasvas.<\/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, kuid \u00fclej\u00e4\u00e4nud me ei arvestanud, sealhulgas suletud segmendid, kus hoiti finantsteavet. Ilmusid konteineriv\u00f5rgud (Kubernetes), DevOps, pilvev\u00f5rgud, mis olid \u00fchendatud VPN-i kaudu, n\u00e4iteks IWS-ist. Reegleid oli v\u00e4ga palju \u2014 see oli piinav.<\/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 meetodid 2018. aastal.<\/em><\/p>\n<p>Isolatsiooni jaoks kasutasime: VLAN-e koos L2 ACL-idega, VRF-i koos L3 ACL-idega, VPN-i ja palju muud. Liiga palju.<\/p>\n<h2>Probleemid<\/h2>\n<p>\nK\u00f5ik elavad ACL-ide ja VLAN-ide j\u00e4rgi. Mis k\u00fcll valesti on? Sellele k\u00fcsimusele vastab Harold, peites oma 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 ulatuslikke \u2014 viis.<\/p>\n<ul>\n<li><strong>Uute reeglite geometriline hinnat\u00f5us.<\/strong>. Iga uus reegel v\u00f5eti vastu pikemalt kui eelmine, kuna esmalt tuli kontrollida, kas sellist reeglit pole juba olemas.<\/li>\n<li><strong>Sektoreid ei kaitse tulem\u00fc\u00fcr.<\/strong>. Sektorid lahutasid \u00fcksteisest kuidagi, ressursid on seal sees puuduvad.<\/li>\n<li><strong>Reeglite kehtestamine v\u00f5ttis aega. <\/strong>Kohalikku reeglit suudavad operaatorid k\u00e4sitsi kirjutada tunni jooksul. \u00dclemaailmne n\u00f5udis mitmeid p\u00e4evi.<\/li>\n<li><strong>Oli raskusi reeglite auditeerimisega.<\/strong>. T\u00e4psemalt, see oli v\u00f5imatu. Esimesed reeglid kirjutati juba 2010. aastal ning enamus autoritest ei t\u00f6\u00f6tanud enam firmaski.<\/li>\n<li><strong>Madala tasemega infrastruktuuri kontroll.<\/strong>. See on peamine probleem \u2014 me ei teadnud, mis meil \u00fcldse toimub.<\/li>\n<\/ul>\n<p>\nNii n\u00e4gi v\u00e4lja v\u00f5rguinsener 2018. aastal, kui ta kuulis: \u00abVaja on veel veidi ACL-i\u00bb.<\/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 sellega ette v\u00f5tta.<\/p>\n<p><strong>Integreerimise hind kasvab pidevalt. <\/strong>Aluspunktiks oli see, et suured andmekeskused l\u00f5petasid isoleeritud VLANide ja ACL-ide toetamise, kuna seadmetes oli m\u00e4luruum otsa saanud.<\/p>\n<p>Lahendus: eemaldati inimfaktor ja suurendati juurdep\u00e4\u00e4su automaatikat maksimaalselt.<\/p>\n<p><strong>Uued reeglid kehtestatakse kaua. <\/strong>Lahendus: reeglite rakendamise kiirus tuleb suurendada, muutes selle jaotatavaks ja paralleelseks. Selle jaoks on vajalik jaotatud s\u00fcsteem, et reeglid saaksid automaatselt kohale toimetatud, ilma et oleks vaja rsync-i v\u00f5i SFTP-d tuhandel s\u00fcsteemil.<\/p>\n<p><strong>Tulekahjus\u00fc\u00fctaja puudub segmentide sees. <\/strong>Tulekahjus\u00fc\u00fctaja algas meie jaoks, kui sama v\u00f5rgu sees hakkasid ilmuma erinevad teenused. Lahendus: kasutada hostitasandi tulem\u00fc\u00fcre \u2014 host-based firewalls. Peaaegu k\u00f5ikjal on meil Linux ja k\u00f5igil on iptables, seega ei ole see probleem.<\/p>\n<p><strong>Reeglite auditeerimisega on keerukusi.<\/strong> Lahendus: salvestada k\u00f5ik reeglid \u00fchte kohta \u00fclevaate ja haldamise jaoks, nii suudame k\u00f5ike auditeerida.<\/p>\n<p><strong>Infrastruktuuri kontrollimise madal tase. <\/strong>Lahendus: teha inventuur k\u00f5igist teenustest ja nende vahelisest ligip\u00e4\u00e4sust.<\/p>\n<p>See on rohkem haldusprotsess kui tehniline. M\u00f5nikord on meil n\u00e4dalas 200\u2013300 uut versiooni, eriti kampaaniate ja p\u00fchade ajal. See kehtib ainult meie DevOps'i meeskonna kohta. Niisuguste versioonide arvuga on v\u00f5imatu n\u00e4ha, milliseid porte, IP-sid, integreerimisi on vaja. Seet\u00f5ttu vajasime spetsiaalselt koolitatud teenusehaldureid, kes k\u00fcsiksid meeskondadelt: \u201eMida teil \u00fcldse on ja miks te selle \u00fcles t\u00f5stsite?\u201d<\/p>\n<p>P\u00e4rast seda, kui me k\u00f5ik k\u00e4ivitasime, n\u00e4gi 2019. aastal v\u00f5rguinsener v\u00e4lja juba 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 me teenusehalduri abiga leidsime, paneme Consuli 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 kaug-API, see v\u00f5ib t\u00f6\u00f6tada igas s\u00f5lmes ja kirjutada iptables'isse. J\u00e4\u00e4b vaid v\u00e4lja m\u00f5elda automaatse kontrolli vahendid, mis puhastavad liigse, ja suurem osa probleemidest on lahendatud! \u00dclej\u00e4\u00e4nu viime ellu protsessi k\u00e4igus.<\/p>\n<h3>Miks Consul?<\/h3>\n<p>\n<strong>On end h\u00e4sti t\u00f5estanud. <\/strong>Aastatel 2014\u201315 kasutasime seda Vaulti tagaplaanina, kus hoiame paroole.<\/p>\n<p><strong>Ei kaota andmeid<\/strong>. Consul ei ole kaotanud andmeid \u00fcheski avarii ajal, mis on tohutu eelis tulem\u00fc\u00fcride haldamisse.<\/p>\n<p><strong>P2P-\u00fchendused kiirendavad muutuste levikut<\/strong>. P2P kaudu tulevad k\u00f5ik muudatused kiiresti, ei pea tundide kaupa ootama.<\/p>\n<p><strong>Mugav REST API.<\/strong> Me vaatasime ka Apache ZooKeeperit, kuid sellel puudub REST API, tuleb kasutada lisalahendusi.<\/p>\n<p><strong>T\u00f6\u00f6tab nii v\u00f5tmev\u00e4\u00e4rsusena (KV) kui ka kataloogina (Teenuse avastamine)<\/strong>. Saab salvestada kohe teenuseid, katalooge ja andmekeskusi. See on mugav mitte ainult meie jaoks, vaid ka naabermeeskondade jaoks, sest globaalse teenuse loomisel m\u00f5tleme ulatuslikult.<\/p>\n<p><strong>Kirjutatud Go keeles, mis kuulub Wargamingi tehnolooge. <\/strong>Me armastame seda keelt, meil on palju Go arendajaid.<\/p>\n<p><strong>V\u00f5imas ACL s\u00fcsteem. <\/strong>Consuliga saab ACL abil hallata, kellel on \u00f5igus ja mida kirjutada. Garantii, et tulem\u00fc\u00fcri reeglid ei kattu enam millegagi, ja meil ei ole sellega probleeme.<\/p>\n<p>Aga Consulil on ka puudusi.<\/p>\n<ul>\n<li><strong>Ei skaala andmekeskuse raames, kui teil ei ole \u00e4riversiooni. <\/strong>See skaleerub ainult f\u00f6deratsiooni kaudu.<\/li>\n<li><strong>On v\u00e4ga s\u00f5ltuv v\u00f5rgu kvaliteedist ja serverite koormusest. <\/strong>Consul ei t\u00f6\u00f6ta korrektselt serverina \u00fclekoormatud serveris, kui v\u00f5rgus esinevad viivitused, n\u00e4iteks ebaregulaarne kiirus. See on seotud P2P-\u00fchendustega ja v\u00e4rskenduste levitamise mudelitega.<\/li>\n<li><strong>Raskused k\u00e4ttesaadavuse j\u00e4lgimisel<\/strong>. Consuli staatus v\u00f5ib n\u00e4idata, et k\u00f5ik on korras, kuid tegelikult on see juba ammu kuu juurde j\u00e4\u00e4nud.<\/li>\n<\/ul>\n<p>\nEnamik neist probleemidest lahendasime Consuli kasutamise ajal, mist\u00f5ttu valisime selle. Ettev\u00f5ttel on plaanid alternatiivse tagak\u00fcljega, kuid oleme \u00f5ppinud probleemidega toime tulema ja praegu elame Consuliga.<\/p>\n<h3>Kuidas Consul t\u00f6\u00f6tab<\/h3>\n<p>\nSeame \u00fcles serverid - alates kolmest kuni viieni. \u00dcks v\u00f5i kaks serverit ei sobi: nad ei suuda korraldada kvoorumi ja otsustada, kes on \u00f5ige ja kes vale, kui andmed ei \u00fchti. \u00dckski rohkem kui viis ei ole 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 \/>\nKliente \u00fchendatakse serveritega igas 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 P2P-\u00fchenduste loendi ja loovad omavahel sidemeid.<\/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 taset \u00fchendame mitmeid andmekeskusi. Need on samuti P2P-\u00fchenduses 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 me soovime andmeid teiselt andmekeskuselt \u00fcle v\u00f5tta, toimub p\u00e4ring serverist serverisse. Seda 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\u00f6d. Nimetan ainult valikaid fakte, mida tasub teada.<\/p>\n<p><strong>Consuli serverid valivad h\u00e4\u00e4letajate seast juhi<\/strong>. Consul valib igas andmekeskuses serverite nimekirjast juhi ja k\u00f5ik p\u00e4ringud l\u00e4hevad ainult temale, s\u00f5ltumata serverite arvust. Juhi seiskumine ei too kaasa uuesti valimist. Kui juhti ei ole valitud \u2014 p\u00e4ringud ei saa kedagi teenindada.<\/p>\n<blockquote><p>Kas soovisite horisontaalset skaleerimist? Kahjuks ei.<\/p><\/blockquote>\n<p> P\u00e4ring teisele andmekeskusele toimub juhi ja juhi vahel, olenemata sellest, millisele serverile see tuli. Valitud juht kannab 100% koormusest, v\u00e4lja arvatud p\u00e4ringute edastamise koormus. Ajakohane andmekopeerimine on k\u00f5igil andmekeskuse serveritel, kuid vastab ainult \u00fcks.<\/p>\n<blockquote><p>Ainus viis skaleerimiseks on kliendil stale-re\u017eiim aktiveerida.<\/p><\/blockquote>\n<p>Stale-re\u017eiimis saab vastata ilma kvoorumita. See on re\u017eiim, kus me loobume andmete j\u00e4rjepidevast seisundist, kuid loeme veidi kiiremini kui tavaliselt, ning vastata v\u00f5ib \u00fcksk\u00f5ik milline server. Loomulikult saab salvestada ainult l\u00e4bi meistri.<\/p>\n<p><strong>Consul ei kopeeri andmeid andmekeskuste vahel.<\/strong>. F\u00f6deratsiooni kogumisel on igal serveril ainult oma andmed. Muudele p\u00f6\u00f6rdub ta alati kellegi teise poole.<\/p>\n<p><strong>Tehingute v\u00e4lisel operatsioonide aatomilisust ei garanteerita.<\/strong>. Pidage meeles, et midagi v\u00f5ib muuta mitte ainult teie. Kui soovite muudatusi teha, viige l\u00e4bi lukustusega tehing.<\/p>\n<p><strong>Lukustavad operatsioonid ei garanteeri lukustamist.<\/strong>. P\u00e4ring l\u00e4heb meistrilt meistrile, mitte otse, seega ei ole garantiid, et lukustus t\u00f6\u00f6tab, kui teete lukustuse, n\u00e4iteks teises andmekeskuses.<\/p>\n<p><strong>ACL ei garanteeri ka ligip\u00e4\u00e4su (paljuski).<\/strong>. ACL v\u00f5ib mitte t\u00f6\u00f6tada, kuna see talletatakse f\u00f6deratsiooni \u00fches andmekeskuses \u2014 ACL andmekeskuses (Primary DC). Kui DC ei vasta, ei t\u00f6\u00f6ta ACL.<\/p>\n<p><strong>\u00dcks kinni j\u00e4\u00e4nud meister toob kaasa kogu f\u00f6deratsiooni seiskumise.<\/strong>. N\u00e4iteks f\u00f6deratsioon, kus on 10 andmekeskust, ja \u00fches on halb v\u00f5rk ning \u00fcks server sureb. K\u00f5ik, kes temaga suhtlevad, hanguvad ringis: p\u00e4ring l\u00e4heb, vastust ei tule, teema hangub. Pole v\u00f5imalik teada, millal see juhtub, kas lihtsalt tunni v\u00f5i kahe p\u00e4rast kukub kogu f\u00f6deratsioon. Te ei saa sellega midagi teha.<\/p>\n<p>Staatus, kvoorum ja valimised t\u00f6\u00f6deldakse eraldi l\u00f5imes. \u00dcmbervalimisi ei toimu, staatus ei n\u00e4ita midagi. Te arvate, et Teil on aktiivne Consul, k\u00fcsite, ja ei juhtu midagi \u2014 vastust pole. Samal ajal n\u00e4itab staatus, et k\u00f5ik on h\u00e4sti.<\/p>\n<p>Oleme selle probleemiga kokku puutunud, pidime konkreetseid osi andmekeskustest \u00fcmber ehitama, et seda v\u00e4ltida.<\/p>\n<p><strong>Consul Enterprise'i \u00e4riversioonis ei ole m\u00f5ningaid eelnevalt mainitud puudusi.<\/strong>. Seal on palju kasulikke funktsioone: h\u00e4\u00e4lte valimine, jaotamine, skaleerimine. Ainuke 'aga' on see, et jaotatud s\u00fcsteemi litsentsimis\u00fcsteem on v\u00e4ga kallis.<\/p>\n<p>Eluh\u00e4ki: <code>rm -rf \/var\/lib\/consul<\/code> \u2014 ravim agentide k\u00f5igi haiguste vastu. Kui midagi ei t\u00f6\u00f6ta, kustutage lihtsalt oma andmed ja laadige andmed varukoopiast. T\u00f5en\u00e4oliselt t\u00f6\u00f6tab Consul j\u00e4lle.<\/p>\n<h2>BEFW<\/h2>\n<p>\nN\u00fc\u00fcd r\u00e4\u00e4gime sellest, mida me Consulile lisasime.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/wgnet\/befw\">BEFW<\/a><\/noindex> \u2014 on akron\u00fc\u00fcm s\u00f5nalt <strong>B<\/strong>ack<strong>E<\/strong>nd<strong>F<\/strong>tuli<strong>W<\/strong>all. Toode pidi saama mingisuguse nime, kui ma loodud repositooriumi, kuhu panin esimesed testkommitid. See nimi j\u00e4i ka alles.<\/p>\n<h3>Reeglite mallid<\/h3>\n<p>\nReeglid on kirjutatud iptables s\u00fcntaksis.<\/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>\nMeil l\u00e4heb k\u00f5ik BEFW ahelasse, v\u00e4lja arvatud <code>KINDLAKS<\/code>, <code>RELATED<\/code> ja localhost. Mall v\u00f5ib olla igasugune, see on lihtsalt n\u00e4idis.<\/p>\n<p>Miks on BEFW kasulik?<\/p>\n<h3>Teenused<\/h3>\n<p>\nMeil on teenus, seal on alati port ja node, kus see t\u00f6\u00f6tab. Oma nodest saame kohalikult k\u00fcsida agendi k\u00e4est ja teada saada, et meil on mingi 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, muutub iptables reegliks. Meil on SSH \u2014 avame port 22. Bash-skript on lihtne: curl ja iptables, rohkem pole midagi vaja.<\/p>\n<h3>Kliendid<\/h3>\n<p>\nKuidas avada ligip\u00e4\u00e4s mitte k\u00f5igile, vaid valikuliselt? Teenuse nime alusel koguda KV-salvestusse IP-loendeid.<\/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, me tahame, et k\u00f5ik k\u00fcmnendast v\u00f5rgust saaksid ligi SSH_TCP_22 teenusele. Lisame \u00fche v\u00e4ikse TTL v\u00e4lja? ja n\u00fc\u00fcd on meil ajutised lubamised, n\u00e4iteks \u00fcheks p\u00e4evaks.<\/p>\n<h3>Ligip\u00e4\u00e4sud<\/h3>\n<p>\nSeome \u00fchendad teenuseid ja kliente: meil on teenus, millele on igaks juhuks valmis KV-lao hoidla. N\u00fc\u00fcd anname juurdep\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>R\u00fchmad<\/h3>\n<p>\nKui me iga kord kirjutame tuhandeid IP-aadresse juurdep\u00e4\u00e4suks, siis v\u00e4sime. Loome r\u00fchmitusi \u2014 eraldi alamkogumi KV-s. Nimeks paneme Alias (v\u00f5i r\u00fchmad) ja hoiame seal r\u00fchmi sama p\u00f5him\u00f5tte kohaselt.<\/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\u00dchendame: n\u00fc\u00fcd saame avada SSH mitte konkreetselt P2P-le, vaid tervele r\u00fchmale v\u00f5i mitmele r\u00fchmale. Samuti on olemas TTL \u2014 v\u00f5ime r\u00fchma lisada ja sealt ajutiselt eemaldada.<\/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 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 \/>\nKasutame Puppetit ja viime sinna k\u00f5ik, mis on seotud s\u00fcsteemiga (rakenduste kood). Puppetdb-s (tavaline PostgreSQL) hoitakse teenuste nimekirja, mis seal on k\u00e4ivitatud, neid saab leida ressursi t\u00fc\u00fcbi j\u00e4rgi. Samuti saab sealt leida, kes kuhu p\u00f6\u00f6rdub. Meil on ka pull request ja merge request s\u00fcsteem selle jaoks.<\/p>\n<p>Oleme kirjutanud befw-sync \u2014 lihtsa lahenduse, mis aitab andmeid edastada. Esiteks p\u00f6\u00f6rduvad sync k\u00fcpsised puppetdb-sse. Seal on seadistatud HTTP API: k\u00fcsime, millised teenused meil on ja mida on vaja teha. Seej\u00e4rel tehakse p\u00e4ring Consulisse.<\/p>\n<p>Kas integratsioon on olemas? Jah: me kirjutasime reeglid, lubasime Pull Requesti. Kas on vaja mingit porti v\u00f5i lisada host mingisse gruppi? Pull Request, \u00fclevaatus \u2014 mitte mingeid \u201eLeia 200 muud ACL-i ja proovi midagi nende teha\u201d.<\/p>\n<h3>Optimeerimine<\/h3>\n<p>\nPing localhost t\u00fchja reeglite jadaga kestab 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 jadasse 10 000 iptables aadressi. Selle tulemusena ping suureneb 5 korda: iptables t\u00f6\u00f6tlemine on t\u00e4iesti lineaarne, iga aadressi t\u00f6\u00f6tlemine v\u00f5tab natuke 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 \/>\nTulevikus, kuhu me migreerime tuhandeid ACL-e, on meil palju reegleid ja see toob kaasa viivituse. M\u00e4nguprotokollide jaoks on see halb.<\/p>\n<p>Aga kui me paigutame <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 jaoks on alati 1, olenemata sellest, kui palju reegleid seal on. T\u00f5si, seal on piirang \u2014 reegleid ei tohi olla rohkem kui 65535. Seni elame sellega: neid saab kombineerida, laiendada, teha kaks ipseti \u00fches.<\/p>\n<h3>Hoidmine<\/h3>\n<p>\nLoogiline j\u00e4tk iteratsioonide protsessis on teabe hoidmine klientide kohta teenuse jaoks 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 tuleb suhelda, ja j\u00e4rgmise reegli. <code>DROP<\/code>. V\u00f5ib luua reegel \"Kes ei ole siin, see DROP\", kuid nii on see selgem.<\/p>\n<p>N\u00fc\u00fcd on meil reeglid ja komplektid. Peamine \u00fclesanne on komplekti luua enne reegli kirjutamist, sest muidu ei salvesta iptables reeglit.<\/p>\n<h3>\u00dcldine skeem<\/h3>\n<p>\nDiagrammi kujul n\u00e4eb k\u00f5ik, mida ma r\u00e4\u00e4kisin, v\u00e4lja nii.<\/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 hostile, teenused on siin, ipset seal ja kes seal ei ole, seda ei lasta sisse.<\/p>\n<h3>Lubamine &amp; keeldumine<\/h3>\n<p>\nKuidas kiiresti maailma p\u00e4\u00e4sta v\u00f5i kedagi kiiresti v\u00e4lja l\u00fclitada, on k\u00f5ikide ahelate alguses loodud kaks ipset: <code>rules_allow<\/code> ja <code>rules_deny<\/code>. Kuidas see t\u00f6\u00f6tab?<\/p>\n<p>N\u00e4iteks, kui keegi botidega koormust tekitab meie Webile. Varem tuli leida logidest tema IP, viia see v\u00f5rguinseneridele, et nad leiksid liikluse allika ja blokeeriksid ta. N\u00fc\u00fcd n\u00e4eb see v\u00e4lja teistmoodi.<\/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 \/>\nSaadame Consulisse, ootame 2,5 s ja on valmis. Kuna Consul jaotab kiiresti P2P kaudu, t\u00f6\u00f6tab see igal pool maailmas.<\/p>\n<p>\u00dcks kord peatasingi WOT-i t\u00e4ielikult, eksides tulem\u00fc\u00fcriga. <code>rules_allow<\/code> \u2014 see on meie kindlustus selliste juhtumite vastu. Kui me oleme kuskil tulem\u00fc\u00fcriga eksinud, midagi kuskil blokeeritakse, saame alati saata tingimisi <code>0.0\/0<\/code>, et kiiresti k\u00f5ik taastada. Hiljem parandame k\u00f5ik k\u00e4sitsi.<\/p>\n<h3>Teised komplektid<\/h3>\n<p>\nV\u00f5ite lisada ruumi mistahes muid komplekte <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 kellegi jaoks vajalikud ipset\u2019id, n\u00e4iteks teatud klastriosade katkestamise simuleerimiseks. Iga\u00fchel on v\u00f5imalus tuua oma komplekte, neid nimetada ja need v\u00f5etakse Consul\u2019ist. Nendel komplektidel v\u00f5ivad olla nii iptables\u2019i reeglitega seosed kui ka olla lihtsalt k\u00e4sud. <code>NOOP<\/code>: konsistentsi toetab demon.<\/p>\n<h3>Kasutajad<\/h3>\n<p>\nVarem oli asi nii: kasutaja \u00fchendas end v\u00f5rku ja domeeni kaudu sai ta seadistused. Enne j\u00e4rgmise p\u00f5lvkonna tulem\u00fc\u00fcri kasutuselev\u00f5ttu ei suutnud Cisco aru saada, kus on kasutaja ja kus IP. Seet\u00f5ttu anti ligip\u00e4\u00e4s v\u00e4lja ainult masina hostname\u2019i kaudu.<\/p>\n<p>Mida me tegime? Me segunesime aadressi saamise hetkel. Tavaliselt on see dot1x, Wi-Fi v\u00f5i VPN \u2014 k\u00f5ik l\u00e4heb l\u00e4bi RADIUS\u2019e. Iga kasutaja jaoks loome grupi kasutajanime j\u00e4rgi ja paneme sellesse IP, mille TTL on tema dhcp.lease\u2019i pikkuse poolest \u2014 niipea 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 juurdep\u00e4\u00e4su teenustele nagu muudele gruppidele kasutajanime alusel. Oleme vabanenud hostname\u2019ide vaevast, kui need muutuvad, ning v\u00e4hendanud koormust v\u00f5rguinseneridelt, kuna neil pole enam vaja Cisco\u2019t. N\u00fc\u00fcd kirjutavad insenerid ise oma serverites juurdep\u00e4\u00e4su \u00f5igusi.<\/p>\n<h3>Isolatsioon<\/h3>\n<p>\nSamas alustasime isolatsiooni anal\u00fc\u00fcsimist. Teenusejuhid tegid inventuuri ja meie anal\u00fc\u00fcsisime k\u00f5iki meie v\u00f5rke. Jagame need r\u00fchmadesse ja lisasime vajalikud r\u00fchmad serveritesse, n\u00e4iteks deny jaoks. N\u00fc\u00fcd j\u00f5uab sama stendi isolatsioon produktsioonis rules_deny, kuid mitte ise produktsiooni.<\/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 \/>\nScheem t\u00f6\u00f6tab kiiresti ja lihtsalt: eemaldame k\u00f5ik ACL-id serveritest, vabastame juhulisi seadmeid, v\u00e4hendame isoleeritud VLANide arvu.<\/p>\n<h3>Integreerituse kontroll<\/h3>\n<p>\nVarem oli meil spetsiaalne k\u00e4ivitaja, mis teavitas, kui keegi k\u00e4sitsi muuda tulev\u00e4rgi reeglit. Kirjutasin tohutu lintimi tulev\u00e4rgi reeglite kontrollimiseks, see oli keeruline. N\u00fc\u00fcd j\u00e4lgib integreeritust BEFW. Ta hoolikalt j\u00e4lgib, et talle m\u00e4\u00e4ratud reeglid ei muutuks. Kui keegi muudab tulev\u00e4rgi reegleid, taastab ta k\u00f5ik tagasi. 'Ma h\u00f5lpsasti t\u00f5stsin proksi, et kodust t\u00f6\u00f6tada' \u2014 selliseid variante enam ei ole.<\/p>\n<p>BEFW kontrollib ipset teenustest ja loendist befw.conf, teenuste reeglid BEFW ahelas. Kuid ta ei j\u00e4lgi teisi ahelaid ega reegleid ja teisi ipset-e.<\/p>\n<h3>H\u00e4daolukordade kaitse<\/h3>\n<p>\nBEFW salvestab alati viimase eduka oleku binaarses struktuuris state.bin. Kui midagi l\u00e4heb valesti, siis taastab ta selle state.bin-i.<\/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 eest, kui ta ei saatnud andmeid v\u00f5i keegi tegi vea ja kasutas reegleid, mida ei saa rakendada. Et me ei j\u00e4\u00e4ks ilma tulem\u00fc\u00fcrist, taastab BEFW viimase oleku, kui m\u00f5nel hetkel juhtub viga.<\/p>\n<p>Kriitilistes olukordades tagab see, et j\u00e4\u00e4me t\u00f6\u00f6korras tulem\u00fc\u00fcri juurde. Avame k\u00f5ik hallid v\u00f5rgud lootuses, et admin tuleb ja parandab asja. Millalgi viin selle konfigureerimisfailidesse, kuid praegu on meil lihtsalt kolm halli v\u00f5rku: 10\/8, 172\/12 ja 192.168\/16. Meie Consuli raames on see oluline funktsioon, mis aitab edasi areneda.<\/p>\n<p><em>Demo: konverentsi ajal demonstreerib Ivan BEFW t\u00f6\u00f6tamise demore\u017eiimi. Demot on mugavam vaadata <noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/4zP67uYnsR4?t=1663\">video<\/a><\/noindex>. Demokood on saadaval <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/wgnet\/befw\/tree\/master\/demo\">GitHub'is<\/a><\/noindex>.<\/em><\/p>\n<h2>Peidetud probleemid<\/h2>\n<p>\nR\u00e4\u00e4gin vigadest, millega kokku puutusime.<\/p>\n<p><strong>ipset add set 0.0.0.0\/0. <\/strong>Mis juhtub, kui lisada ipset-i 0.0.0.0\/0? Kas lisatakse k\u00f5ik IP-d? Kas p\u00e4\u00e4seb internetti? <\/p>\n<p>Ei, me saame vea, mis p\u00f5hjustas meile kaks tundi seisakut. Ja see viga on olnud aktiivne alates 2016. aastast, selle kohta on RedHat Bugzilas number #1297092, ja me avastasime selle juhuslikult \u2014 arendaja aruandest.<\/p>\n<p>N\u00fc\u00fcd on BEFW-s rangelt seadustatud 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 \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>Pole midagi sarnast \u2014 ta teeb \u00fchendamise (merge), ja vanad aadressid ei kao kuhugi, juurdep\u00e4\u00e4s ei sulgu.<\/p>\n<p>Me leidsime vea, kui testisime isolatsiooni. N\u00fc\u00fcd on seal \u00fcsna keeruline s\u00fcsteem \u2014 selle asemel, et <code>restore<\/code> tehakse <code>create temp<\/code>, seej\u00e4rel <code>restore flush temp<\/code> ja <code>restore temp<\/code>. L\u00f5pus swap: aatomaarne, sest kui k\u00f5igepealt teha <code>flush<\/code> ja sel hetkel tuleb m\u00f5ni paket, siis see visatakse k\u00f5rvale ja midagi l\u00e4heb valesti. Seet\u00f5ttu on seal natuke musta maagiat.<\/p>\n<p><strong>consul kv get -datacenter=other. <\/strong>Kuidas ma juba \u00fctlesin, me arvame, et k\u00fcsime mingit teavet, kuid saame kas andmeid v\u00f5i veateate. Saame seda teha l\u00e4bi Consul kohapeal, aga ka sel juhul hangub nii see kui ka teine.<\/p>\n<p>Kohalik Consul- klient on HTTP API \u00fcmberpakitud. Kuid ta lihtsalt hangub ja ei reageeri ei Ctrl+C-le, ei Ctrl+Z-le, ega millelegi muule, ainult <code>kill -9<\/code> na k\u00f5rval konsolis. Me kogesime seda, kui ehitasime suurt klastrit. Kuid meil pole praegu lahendust, valmistame ette selle vea parandamist Consulis.<\/p>\n<p><strong>Consul juhil ei ole vastust. <\/strong>Meil pole andmekeskuses meistrit, m\u00f5tleme: \u201eT\u00f5en\u00e4oliselt hakkab \u00fcmbervalimise algoritm praegu t\u00f6\u00f6le?\u201c <\/p>\n<p>Ei, ei hakka, ja j\u00e4lgimine ei n\u00e4ita midagi: Consul \u00fctleb, et commitment index on olemas, juht on leitud, k\u00f5ik on h\u00e4sti.<\/p>\n<p>Kuidas me sellega toime tuleme? <code>service consul restart<\/code> kroonis iga tunni tagant. Kui teil on 50 serverit - pole hullu. Kui neid on 16 000, saate aru, 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% katvus k\u00f5ikide Linuxi masinate puhul.<\/li>\n<li>Kiirus.<\/li>\n<li>Automatiseerimine.<\/li>\n<li>Vabastasime riistvara ja v\u00f5rguinsenerid orjusest.<\/li>\n<li>Ilmnesid peaaegu piiramatu integreerimise v\u00f5imalused: olgu need Kubernetes, Ansible v\u00f5i Python.<\/li>\n<\/ul>\n<p>\n<strong>Miinused<\/strong>: Consul, millega me n\u00fc\u00fcd elama peame, ja v\u00e4ga k\u00f5rged vead. N\u00e4iteks, kord kell 6 \u00f5htul (tipptund Venemaal) tegin v\u00f5rgu nimekirjades midagi. Just siis ehitasime BEFW-is isolatsiooni. Ma tegin kuskil vea, tundub, et m\u00e4rkisin vale maski, ja k\u00f5ik kukkus kahe sekundi jooksul kokku. Monitoring s\u00fcttib, valvespetsialist jookseb sisse: \u201eMeil on k\u00f5ik kukkunud!\u201d Osakonna juht hallines, kui selgitas \u00e4rile, miks see juhtus.<\/p>\n<p>Veakulu on nii k\u00f5rge, et me l\u00f5ime oma keerulise ennetusprotseduuri. Kui kavatsete seda suurel tootmishuumoris rakendada, \u00e4rge andke meistritokenit Consuli \u00fcle igale. See l\u00f5peb halvasti.<\/p>\n<p><strong>Maksumus. <\/strong>Kirjutasin koodi 400 tundi \u00fcksi. Minu nelja inimese meeskond kulutab toetusele kuu jooksul 10 tundi k\u00f5igile. V\u00f5rreldes uue p\u00f5lvkonna tulem\u00fc\u00fcride hinnaga on see tasuta.<\/p>\n<p><strong>Plaane. <\/strong>Pikaajaline plaan on leida alternatiivne transport Consuli asemel v\u00f5i lisaks. V\u00f5ib-olla on selleks Kafka v\u00f5i midagi sarnast. Kuid j\u00e4rgmiste aastate jooksul elame me Consuliga.<\/p>\n<p>J\u00e4rgmised kavatsused: integreerimine Fail2bane'iga, j\u00e4lgimine, nftables, v\u00f5imalik, et teiste distributsioonidega, m\u00f5\u00f5dikud, t\u00e4iendav j\u00e4lgimine, optimeerimine. Kubernetes'e tugi on samuti plaanides, kuna meil on praegu mitu klastrit ja soov.<\/p>\n<p>Veel plaanides:<\/p>\n<ul>\n<li>anomaaliate otsimine liikluses;<\/li>\n<li>v\u00f5rgukaardi haldamine;<\/li>\n<li>Kubernetes'e tugi;<\/li>\n<li>pakettide koostamine k\u00f5igi s\u00fcsteemide jaoks;<\/li>\n<li>Web-UI.<\/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 t\u00f5eliselt \u00e4ge, 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: panustada, testida, midagi pakkuda, anda oma hinnang.<\/i><\/p>\n<blockquote><p>Samas valmistume <noindex><a rel=\"nofollow\" href=\"https:\/\/www.highload.ru\/spb\/2020\">Saint HighLoad++<\/a><\/noindex>, mis toimub 6. ja 7. aprillil Peterburis, ja kutsume k\u00f5rgekoormuslike s\u00fcsteemide arendajaid <noindex><a rel=\"nofollow\" href=\"https:\/\/conf.ontico.ru\/lectures\/propose?conference=hl2020-spb\">esitama ettekande taotlust<\/a><\/noindex>. Kogenud esinejad teavad juba, mida teha, ja soovitame algajatele ettekannetes v\u00e4hemalt <noindex><a rel=\"nofollow\" href=\"https:\/\/www.highload.ru\/spb\/2020\/speakers\">proovida<\/a><\/noindex>. Konverentsil osalejana r\u00e4\u00e4kimine toob mitmeid eeliseid. Millised, sellest saab lugeda n\u00e4iteks l\u00f5puks. <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 4.9.10 - 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. \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\" \/>\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) 4.9.10\" \/>\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. \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\" \/>\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":"2010. aastal oli Wargamingul 50 serverit ja lihtne v\u00f5rgumudel: tagaplaan, esiplaan ja tulem\u00fc\u00fcr. Serverite arv suurenes, mudel muutus keerulisemaks: st-stage'id, isoleeritud VLAN-id ACL-idega, seej\u00e4rel VPN VRF-iga, VLAN ACL-idega L2-l, VRF ACL-idega L3-l. Kas pea on keerlema hakanud? Edasi l\u00e4heb veel huvitavamaks. Kui serverite arv saavutas 16 000, t\u00f6\u00f6tas see ilma pisarateta","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. \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","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"},"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}]}}