Консул + iptables = :3

Дар соли 2010 ширкат Варшава 50 сервер ва модели оддии шабака вуҷуд дошт: пушти сар, фронт ва девор. Шумораи серверҳо афзоиш ёфт, модел мураккабтар шуд: саҳнасозӣ, VLANҳои ҷудошуда бо ACL, баъд VPNҳо бо VRF, VLANҳо бо ACL дар L2, VRFs бо ACL дар L3. Сар чарх мезанад? Ин баъдтар шавқовартар хоҳад буд.

Вақте ки 16 сервер вуҷуд дошт, бидуни ашк бо ин қадар сегментҳои гетерогенӣ кор кардан ғайриимкон шуд. Аз ин рӯ, мо роҳи ҳалли дигарро пайдо кардем. Мо стеки Netfilter-ро гирифтем, Консулро ба он ҳамчун манбаи маълумот илова кардем ва мо девори зуд паҳншуда гирифтем. Онҳо ACL-ро дар роутерҳо иваз карданд ва онҳоро ҳамчун девори берунӣ ва дохилӣ истифода карданд. Барои ба таври динамикӣ идора кардани асбоб, мо системаи BEFW-ро таҳия кардем, ки дар ҳама ҷо истифода мешуд: аз идоракунии дастрасии корбар ба шабакаи маҳсулот то ҷудо кардани сегментҳои шабака аз ҳамдигар.

Консул + iptables = :3

Вай ба шумо мегӯяд, ки ин ҳама чӣ гуна кор мекунад ва чаро шумо бояд ба ин система бодиққат назар кунед. Иван Агарков (аннмуор) сардори гурӯҳи амнияти инфрасохтори шӯъбаи нигоҳдории маркази рушди ширкат дар Минск мебошад. Иван як мухлиси SELinux аст, Perl-ро дӯст медорад ва рамз менависад. Ҳамчун роҳбари гурӯҳи амнияти иттилоотӣ, ӯ мунтазам бо гузоришҳо, нусхаҳои эҳтиётӣ ва R&D кор мекунад, то Wargaming-ро аз ҳакерҳо муҳофизат кунад ва кори тамоми серверҳои бозӣ дар ширкатро таъмин кунад.

Таърихи таърих

Пеш аз он ки ба шумо бигӯям, ки мо ин корро чӣ тавр анҷом додем, ман ба шумо мегӯям, ки чӣ гуна мо дар ҷои аввал ба ин ҷо расидем ва чаро он лозим буд. Барои ин, биёед ба 9 сол баргардем: соли 2010, World of Tanks нав пайдо шуд. Wargaming тақрибан 50 сервер дошт.

Консул + iptables = :3
Диаграммаи афзоиши сервери ширкат.

Мо модели шабака доштем. Дар он вақт он беҳтарин буд.

Консул + iptables = :3
Модели шабака дар соли 2010.

Дар канори пешина бачаҳои бад ҳастанд, ки мехоҳанд моро вайрон кунанд, аммо он девори девор дорад. Дар қафо девор нест, аммо дар он ҷо 50 сервер мавҷуд аст, мо ҳамаашро медонем. Ҳама чиз хуб кор мекунад.

Дар давоми 4 сол, парки серверҳо 100 маротиба афзуда, ба 5000 расид. Аввалин шабакаҳои ҷудогона пайдо шуданд - инсценировка: онҳо ба истеҳсолот рафта наметавонистанд ва аксар вақт чизҳое буданд, ки дар он ҷо хатарнок буданд.

Консул + iptables = :3
Модели шабака дар соли 2014.

Бо инерсия, мо ҳамон қисмҳои сахтафзорро истифода мебурдем ва тамоми корҳо дар VLANҳои ҷудогона анҷом дода мешуданд: ACLҳо ба VLANҳо навишта мешаванд, ки ба ягон намуди пайвастшавӣ иҷозат медиҳанд ё инкор мекунанд.

Дар соли 2016 шумораи серверҳо ба 8000 расид. Wargaming студияҳои дигарро фаро гирифт ва шабакаҳои иловагии шарикӣ пайдо шуданд. Чунин ба назар мерасад, ки онҳо аз они мо ҳастанд, аммо на он қадар: VLAN аксар вақт барои шарикон кор намекунад, шумо бояд VPN-ро бо VRF истифода баред, изолятсия мушкилтар мешавад. Омехтаи изолятсияи ACL афзоиш ёфт.

Консул + iptables = :3
Модели шабака дар соли 2016.

То аввали соли 2018 парки мошинҳо ба 16 адад расид, 000 сегмент мавҷуд буд ва мо боқимондаҳоро ҳисоб накардем, аз ҷумла қисмҳои пӯшида, ки дар онҳо маълумоти молиявӣ нигоҳ дошта мешуданд. Шабакаҳои контейнерӣ (Kubernetes), DevOps, шабакаҳои абрии тавассути VPN пайвастшуда, масалан, аз IVS пайдо шуданд. Қоидаҳои зиёд буданд - ин дардовар буд.

Консул + iptables = :3
Модели шабака ва усулҳои ҷудокунӣ дар соли 2018.

Барои ҷудокунӣ мо истифода мебурдем: VLAN бо ACL дар L2, VRF бо ACL дар L3, VPN ва ғайра. Аз ҳад зиёд.

Масъалаҳо

Ҳама бо ACL ва VLAN зиндагӣ мекунанд. Чӣ чиз ғалат аст? Ба ин савол Гаролд дардашро пинҳон карда, ҷавоб хоҳад дод.

Консул + iptables = :3

Мушкилоти зиёде буданд, аммо панҷ мушкилоти азим буданд.

  • Баландшавии нархи геометрӣ барои қоидаҳои нав. Ҳар як қоидаи нав нисбат ба қаблӣ барои илова кардан вақти зиёдтар лозим буд, зеро аввал бояд бубинем, ки оё чунин қоида аллакай вуҷуд дорад.
  • Дар дохили сегментҳо девори девор нест. Қисмҳо аз ҳам ҷудо буданд ва дар дохили он аллакай захираҳои кофӣ набуданд.
  • Қоидаҳо муддати тӯлонӣ истифода мешуданд. Операторон метавонистанд дар як соат як қоидаи маҳаллиро дастӣ навишт. Давраи умумиҷаҳонӣ чанд рӯз тӯл кашид.
  • Мушкилот бо қоидаҳои аудит. Аниқтараш, имкон надошт. Қоидаҳои аввал дар соли 2010 навишта шуда буданд ва аксари муаллифони онҳо дигар дар ширкат кор намекарданд.
  • Сатҳи пасти назорати инфрасохтор. Ин мушкили асосӣ аст - мо хуб намедонистем, ки дар кишвари мо чӣ рӯй дода истодааст.

Ин аст он чизе ки як муҳандиси шабака дар соли 2018 шунид: "Баъзе ACL лозим аст."

Консул + iptables = :3

Қарорҳо

Дар ибтидои соли 2018 тасмим гирифта шуд, ки дар ин бора коре анҷом бидиҳад.

Нархи интеграция мунтазам меафзояд. Нуқтаи ибтидоӣ он буд, ки марказҳои бузурги додаҳо дастгирии VLAN-ҳои ҷудогона ва ACL-ро қатъ карданд, зеро дастгоҳҳо аз хотира тамом шуданд.

Ҳалли: мо омили инсониро аз байн бурдем ва дастрасиро ба ҳадди аксар автоматӣ кардем.

Барои татбиқи қоидаҳои нав вақти зиёд лозим аст. Ҳалли: татбиқи қоидаҳоро суръат бахшед, онро тақсим ва параллел созед. Ин системаи тақсимшударо талаб мекунад, то қоидаҳо худашон бе rsync ё SFTP ба ҳазор система расонида шаванд.

Дар дохили сегментҳо девори девор нест. Вақте ки хидматҳои гуногун дар як шабака пайдо шуданд, брандмауэр дар дохили сегментҳо ба мо ворид шуд. Ҳалли: брандмауэрро дар сатҳи мизбон истифода баред - деворҳои ба мизбон асосёфта. Қариб дар ҳама ҷо мо Linux дорем ва дар ҳама ҷо мо iptables дорем, ин мушкил нест.

Мушкилот бо қоидаҳои аудит. Ҳалли: Ҳама қоидаҳоро барои баррасӣ ва идоракунӣ дар як ҷо нигоҳ доред, то мо ҳама чизро тафтиш кунем.

Сатҳи пасти назорат аз болои инфрасохтор. Ҳалли: инвентаризатсияи ҳамаи хидматҳо ва дастрасии байни онҳо.

Ин процесси маъмурй бештар аз процесси техникй мебошад. Баъзан мо дар як ҳафта 200-300 нашри нав мебарорем, махсусан дар маъракаҳо ва идҳо. Гузашта аз ин, ин танҳо барои як дастаи DevOps мо аст. Бо ин қадар релизҳо дидан ғайриимкон аст, ки кадом портҳо, IP-ҳо ва интегратсия лозиманд. Аз ин рӯ, ба мо роҳбарони хидматрасонии махсус омӯзонидашуда лозим буданд, ки аз дастаҳо мепурсанд: "Ба ҳар ҳол чӣ ҳаст ва чаро шумо онро ба миён овардед?"

Пас аз ҳама чизе, ки мо оғоз кардем, муҳандиси шабака дар соли 2019 ба ин монанд шудан гирифт.

Консул + iptables = :3

Консул

Мо тасмим гирифтем, ки ҳама чизеро, ки бо кӯмаки менеҷерҳои хидматрасонӣ ёфтем, ба консул мегузорем ва аз он ҷо қоидаҳои iptables менависем.

Чӣ тавр мо тасмим гирифтем, ки ин корро кунем?

  • Мо ҳама хидматҳо, шабакаҳо ва корбаронро ҷамъ мекунем.
  • Биёед дар асоси онҳо қоидаҳои iptables эҷод кунем.
  • Мо назоратро автоматӣ мекунем.
  • ....
  • ФОИДА.

Консул API-и дурдаст нест, он метавонад дар ҳар гиреҳ кор кунад ва ба iptables нависад. Ҳама чиз боқӣ мемонад, ки бо идоракунии худкор, ки чизҳои нолозимро тоза мекунанд ва аксарияти мушкилот ҳал карда мешаванд! Мо боқимондаро ҳангоми рафтан кор мекунем.

Чаро консул?

Худро хуб исбот кардааст. Дар солҳои 2014-15, мо онро ҳамчун пуштибонии Vault истифода бурдем, ки дар он паролҳоро нигоҳ медорем.

Маълумотро гум намекунад. Дар давоми вақти истифода, Консул дар як садама маълумотро гум накардааст. Ин як бартарии бузург барои системаи идоракунии девор аст.

Пайвастҳои P2P паҳншавии тағиротро метезонанд. Бо P2P, ҳама тағиротҳо зуд ба амал меоянд, соатҳо интизор шудан лозим нест.

API-и қулай REST. Мо инчунин Apache ZooKeeper-ро баррасӣ кардем, аммо он API REST надорад, аз ин рӯ шумо бояд асобағолҳоро насб кунед.

Ҳам ҳамчун Key Vault (KV) ва ҳам директория (Кашфи хидмат) кор мекунад. Шумо метавонед хидматҳо, каталогҳо ва марказҳои маълумотро якбора захира кунед. Ин на танҳо барои мо, балки барои дастаҳои ҳамсоя низ қулай аст, зеро ҳангоми сохтани хадамоти глобалӣ мо фикр мекунем.

Дар Go навишта шудааст, ки як қисми стек Wargaming аст. Мо ин забонро дӯст медорем, мо таҳиягарони зиёди Go дорем.

Системаи пурқуввати ACL. Дар Консул шумо метавонед ACL-ро барои назорат кардани кӣ чӣ менависад, истифода баред. Мо кафолат медиҳем, ки қоидаҳои брандмауэр бо ягон чизи дигар мувофиқат намекунанд ва мо бо ин мушкилот нахоҳем дошт.

Аммо Консул низ камбудиҳои худро дорад.

  • Агар шумо версияи тиҷорӣ надошта бошед, дар дохили маркази додаҳо васеъ намешавад. Он танҳо аз ҷониби федератсия миқёспазир аст.
  • Аз сифати шабака ва сарбории сервер хеле вобаста аст. Консул ҳамчун сервер дар сервери банд дуруст кор намекунад, агар дар шабака ягон ақибмонӣ вуҷуд дошта бошад, масалан, суръати нобаробар. Ин ба пайвастҳои P2P ва навсозии моделҳои тақсимот вобаста аст.
  • Мониторинги мавҷудияти мушкилот. Дар мақоми консул метавонад бигӯяд, ки ҳамааш хуб аст, аммо кайҳо мурд.

Мо аксари ин мушкилотро ҳангоми истифодаи Консул ҳал кардем, бинобар ин мо онро интихоб кардем. Ширкат нақшаҳои пуштибонии алтернативӣ дорад, аммо мо ҳалли мушкилотро ёд гирифтем ва ҳоло бо консул зиндагӣ мекунем.

Чӣ тавр консул кор мекунад

Мо дар маркази додаҳои шартӣ аз се то панҷ сервер насб мекунем. Як ё ду сервер кор намекунад: онҳо наметавонанд кворум ташкил кунанд ва вақте ки маълумот мувофиқат накунад, кӣ ҳақ аст ва кӣ нодуруст аст. Зиёда аз панч маъно надорад, хосилнокии мехнат паст мешавад.

Консул + iptables = :3

Мизоҷон ба серверҳо бо ҳар тартиб пайваст мешаванд: ҳамон агентҳо, танҳо бо парчам server = false.

Консул + iptables = :3

Пас аз ин, муштариён рӯйхати пайвастҳои P2P-ро мегиранд ва байни худ робитаҳо месозанд.

Консул + iptables = :3

Дар сатҳи ҷаҳонӣ мо якчанд марказҳои маълумотро пайваст мекунем. Онҳо инчунин P2P-ро пайваст мекунанд ва муошират мекунанд.

Консул + iptables = :3

Вақте ки мо мехоҳем маълумотро аз дигар маркази додаҳо дарёфт кунем, дархост аз сервер ба сервер мегузарад. Ин схема номида мешавад Протоколи серф. Протоколи Серф, ба монанди Консул, аз ҷониби HashiCorp таҳия шудааст.

Баъзе далелҳои муҳим дар бораи консул

Консул дорои ҳуҷҷатҳое мебошад, ки чӣ тавр кор мекунад. Ман танҳо фактҳои интихобшударо медиҳам, ки донистан лозим аст.

Серверҳои консул аз байни интихобкунандагон устод интихоб мекунанд. Консул аз рӯйхати серверҳо барои ҳар як маркази додаҳо устодро интихоб мекунад ва ҳама дархостҳо новобаста аз шумораи серверҳо танҳо ба он фиристода мешаванд. Ях кардани устод боиси интихоби дубора намешавад. Агар усто интихоб нашуда бошад, ба дархостҳо касе хидмат намерасонад.

Оё шумо миқёси уфуқӣ мехостед? Бубахшед, не.

Дархост ба маркази додаҳои дигар, новобаста аз он ки он ба кадом сервер омадааст, аз устод ба усто мегузарад. Устоди интихобшуда 100% сарбориро мегирад, ба истиснои сарбории дархостҳои пешакӣ. Ҳама серверҳои маркази додаҳо нусхаи навтарини маълумот доранд, аммо танҳо як нафар посух медиҳад.

Ягона роҳи миқёс ин фаъол кардани ҳолати кӯҳна дар муштарӣ мебошад.

Дар ҳолати кӯҳна, шумо метавонед бидуни кворум ҷавоб диҳед. Ин режимест, ки дар он мо мувофиқати маълумотро аз даст медиҳем, аммо аз маъмулӣ каме тезтар хонед ва ҳама гуна сервер посух медиҳад. Табиист, ки сабт танҳо тавассути устод.

Консул маълумотро байни марказҳои додаҳо нусхабардорӣ намекунад. Вақте ки федератсия ҷамъ карда мешавад, ҳар як сервер танҳо маълумоти худро дорад. Барои дигарон, ӯ ҳамеша ба каси дигар муроҷиат мекунад.

Атомикии амалиёт берун аз транзаксия кафолат дода намешавад. Дар хотир доред, ки шумо танҳо касе нестед, ки чизҳоро тағир дода метавонед. Агар шумо онро ба таври дигар хоҳед, амалиётро бо қулф анҷом диҳед.

Амалиётҳои басташавӣ ба басташавӣ кафолат намедиҳанд. Дархост аз устод ба усто мегузарад, на мустақим, бинобар ин ҳеҷ кафолате нест, ки блоккунӣ ҳангоми бастани шумо, масалан, дар маркази додаҳои дигар кор хоҳад кард.

ACL инчунин дастрасиро кафолат намедиҳад (дар бисёр ҳолатҳо). ACL метавонад кор накунад, зеро он дар як маркази додаҳои федератсия нигоҳ дошта мешавад - дар маркази додаҳои ACL (Primary DC). Агар DC ба шумо ҷавоб надиҳад, ACL кор намекунад.

Як устоди яхкардашуда боиси ях кардани тамоми федератсия мегардад. Масалан, дар як федерация 10 маркази маълумот мавчуд аст ва яке сети бад дорад ва як усто аз кор мебарояд. Њар касе, ки бо ў муошират мекунад, дар њалќа ях мекунад: дархост њаст, ба он љавоб нест, ришта ях мекунад. Ҳеҷ роҳе барои фаҳмидани он ки ин кай рӯй медиҳад, нест, танҳо пас аз як ё ду соат тамоми федератсия фурӯ хоҳад рафт. Шумо дар ин бора коре карда наметавонед.

Статус, кворум ва интихоботро як риштаи алоҳида ҳал мекунанд. Интихоботи такрорӣ намешавад, статус чизе нишон намедиҳад. Шумо фикр мекунед, ки шумо Консули зинда доред, мепурсед ва ҳеҷ чиз рӯй намедиҳад - ҷавоб нест. Дар баробари ин, вазъият нишон медиҳад, ки ҳама чиз хуб аст.

Мо бо ин мушкилот рӯ ба рӯ шудем ва маҷбур шудем, ки қисмҳои мушаххаси марказҳои маълумотро аз нав созем, то аз он канорагирӣ кунем.

Версияи тиҷоратии Consul Enterprise баъзе камбудиҳои дар боло зикршударо надорад. Он бисёр вазифаҳои муфид дорад: интихоби интихобкунандагон, тақсимот, миқёс. Танҳо як "аммо" вуҷуд дорад - системаи иҷозатномадиҳӣ барои системаи тақсимшуда хеле гарон аст.

Ҷойгиршавии ҳаёт: rm -rf /var/lib/consul - табобат барои ҳама бемориҳои агенти. Агар чизе барои шумо кор накунад, танҳо маълумоти худро нест кунед ва маълумотро аз нусха зеркашӣ кунед. Ба эҳтимоли зиёд, консул кор хоҳад кард.

BEFW

Акнун биёед дар бораи он чизе ки мо ба консул илова кардем, сӯҳбат кунем.

BEFW мухтасари барои BаккEndFироWҳама. Вақте ки ман анборро таъсис додам, ба ман маҷбур шудам, ки маҳсулотро бо кадом роҳе номбар кунам, то дар он санҷишҳои аввалини санҷиш гузорам. Ин ном боқӣ мемонад.

Шаблонҳои қоида

Қоидаҳо дар синтаксиси iptables навишта шудаанд.

  • -Н BEFW
  • -P TROP INPUT
  • -A INPUT -m ҳолати-ҳолати марбут, таъсис -j ҚАБУЛ
  • -ВОХИД -i lo -j КАБУЛ МЕКУНАД
  • -ВОХИД -j BEFW

Ҳама чиз ба занҷири BEFW меравад, ба истиснои ESTABLISHED, RELATED ва localhost. Шаблон метавонад ҳама чиз бошад, ин танҳо як мисол аст.

BEFW чӣ гуна муфид аст?

Хизматрасониҳо

Мо хидмат дорем, он ҳамеша порт, гиреҳ дорад, ки дар он кор мекунад. Аз гиреҳи худ, мо метавонем ба таври маҳаллӣ аз агент пурсем ва фаҳмем, ки мо ягон намуди хидмат дорем. Шумо инчунин метавонед барчаспҳо гузоред.

Консул + iptables = :3

Ҳама гуна хидмате, ки дар Консул кор мекунад ва сабти ном шудааст, ба қоидаи iptables табдил меёбад. Мо SSH дорем - порти кушодаи 22. Скрипти Bash оддӣ аст: curl ва iptables, чизи дигаре лозим нест.

Мизоҷон

Чӣ тавр дастрасиро на ба ҳама, балки ба таври интихобӣ кушодан мумкин аст? Рӯйхати IP-ро ба нигаҳдории КВ аз рӯи номи хидмат илова кунед.

Консул + iptables = :3

Масалан, мо мехоҳем, ки ҳама дар шабакаи даҳум ба хидмати SSH_TCP_22 дастрасӣ дошта бошанд. Як майдони хурди TTL илова кунед? ва ҳоло мо иҷозатҳои муваққатӣ дорем, масалан, барои як рӯз.

Дастрасӣ

Мо хидматҳо ва мизоҷонро пайваст мекунем: мо хидмат дорем, нигаҳдории КВ барои ҳар як омода аст. Ҳоло мо на ба ҳама, балки ба таври интихобӣ дастрасӣ медиҳем.

Консул + iptables = :3

гурўњњои

Агар мо ҳар дафъа барои дастрасӣ ҳазорҳо IP нависем, мо хаста мешавем. Биёед бо гурӯҳҳо - зермаҷмӯаи алоҳида дар KV биёем. Биёед онро тахаллус (ё гурӯҳҳо) меномем ва гурӯҳҳоро дар он ҷо мувофиқи ҳамон принсип нигоҳ дорем.

Консул + iptables = :3

Биёед пайваст шавем: ҳоло мо метавонем SSH-ро на махсусан барои P2P, балки барои як гурӯҳ ё якчанд гурӯҳ кушоем. Ба ҳамин тариқ, TTL вуҷуд дорад - шумо метавонед ба гурӯҳ илова кунед ва муваққатан аз гурӯҳ хориҷ кунед.

Консул + iptables = :3

Интегратсия

Мушкилоти мо омили инсонӣ ва автоматизатсия аст. То хол мо инро хамин тавр хал кардем.

Консул + iptables = :3

Мо бо Puppet кор мекунем ва ҳама чизеро, ки ба система дахл дорад (рамзи барнома) ба онҳо интиқол медиҳем. Puppetdb (PostgreSQL муқаррарӣ) рӯйхати хидматҳоеро, ки дар он ҷо кор мекунанд, нигоҳ медорад, онҳоро аз рӯи намуди захираҳо пайдо кардан мумкин аст. Дар он ҷо шумо метавонед фаҳмед, ки кӣ ба куҷо муроҷиат мекунад. Мо инчунин як дархости ҷалб ва як системаи дархост барои ин дорем.

Мо befw-sync навиштем, як ҳалли оддӣ, ки ба интиқоли маълумот кӯмак мекунад. Аввалан, ба кукиҳои ҳамоҳангшуда тавассути puppetdb дастрасӣ пайдо мекунанд. Дар он ҷо API HTTP танзим карда шудааст: мо дархост мекунем, ки кадом хидматҳо дорем ва чӣ бояд кард. Сипас онҳо ба консул муроҷиат мекунанд.

Оё интегратсия вуҷуд дорад? Бале: онҳо қоидаҳоро навиштанд ва иҷозат доданд, ки дархостҳои кашидан қабул карда шаванд. Оё ба шумо порти муайян лозим аст ё ба ягон гурӯҳ мизбон илова кунед? Дархостро кашед, баррасӣ кунед - дигар нест "200 ACL-и дигарро пайдо кунед ва кӯшиш кунед, ки дар ин бора коре кунед."

Аҳамиятнокӣ

Пинг кардани localhost бо занҷири қоидаҳои холӣ 0,075 мсро мегирад.

Консул + iptables = :3

Биёед ба ин занҷир 10 суроғаи iptables илова кунем. Дар натиҷа, пинг 000 маротиба зиёд мешавад: iptables комилан хатӣ аст, коркарди ҳар як суроға каме вақт мегирад.

Консул + iptables = :3

Барои брандмауэр, ки мо ҳазорҳо ACL-ро интиқол медиҳем, мо қоидаҳои зиёде дорем ва ин таъхирро ҷорӣ мекунад. Ин барои протоколҳои бозӣ бад аст.

Аммо агар мо гузорем 10 суроғаҳо дар ipset Пинг ҳатто коҳиш хоҳад ёфт.

Консул + iptables = :3

Гап дар он аст, ки "O" (мураккабии алгоритм) барои ipset ҳамеша ба 1 баробар аст, новобаста аз он ки чӣ қадар қоида вуҷуд дорад. Дуруст, маҳдудият вуҷуд дорад - аз 65535 қоида зиёд буда наметавонад.. Ҳоло мо бо ин зиндагӣ мекунем: шумо метавонед онҳоро якҷоя кунед, васеъ кунед ва дар як ду ipset созед.

Нигоҳдорӣ

Идомаи мантиқии раванди такрорӣ нигоҳ доштани маълумот дар бораи муштариён барои хидмат дар ipset мебошад.

Консул + iptables = :3

Ҳоло мо ҳамон SSH дорем ва мо якбора 100 IP наменависем, балки номи ipsetеро, ки бо он бояд муошират кунем ва қоидаи зеринро муқаррар мекунем. DROP. Онро ба як қоида табдил додан мумкин аст "Кӣ дар ин ҷо нест, TROP", аммо ин равшантар аст.

Ҳоло мо қоидаҳо ва маҷмӯаҳо дорем. Вазифаи асосӣ ин аст, ки пеш аз навиштани қоида маҷмӯа созед, зеро дар акси ҳол iptables қоидаро наменависанд.

Нақшаи генералӣ

Дар шакли диаграмма, ҳама чизе, ки ман гуфтам, чунин менамояд.

Консул + iptables = :3

Мо ба Puppet ӯҳдадор мешавем, ҳама чиз ба мизбон фиристода мешавад, хидматҳо дар ин ҷо, ipset дар он ҷо ва ҳар касе, ки дар он ҷо сабти ном нашудааст, иҷозат дода намешавад.

Иҷозат ва рад

Барои зуд наҷот додани ҷаҳон ё зуд хомӯш кардани касе, дар оғози ҳама занҷирҳо мо ду ipset кардем: rules_allow и rules_deny. Он чӣ гуна кор мекунад?

Масалан, касе дар веби мо бо ботҳо бор эҷод мекунад. Пештар, шумо бояд IP-и ӯро аз гузоришҳо пайдо кунед, онро ба муҳандисони шабака баред, то онҳо манбаи трафикро пайдо кунанд ва ӯро манъ кунанд. Акнун он дигар хел менамояд.

Консул + iptables = :3

Мо онро ба консул мефиристем, 2,5 сония интизор шавед ва ин кор анҷом ёфт. Азбаски Консул тавассути P2P зуд паҳн мешавад, он дар ҳама ҷо, дар ҳама гӯшаи ҷаҳон кор мекунад.

Боре ман бо сабаби хатогӣ бо девори девор WOT-ро комилан қатъ кардам. rules_allow — ин сугуртаи мо аз чунин ходисахо мебошад. Агар мо дар ҷое бо брандмауэр хато карда бошем, чизе дар ҷое баста шудааст, мо ҳамеша метавонем шартӣ фиристем 0.0/0ки хама чизро зуд гундошта гиранд. Баъдтар ҳама чизро дастӣ ислоҳ мекунем.

Маҷмӯаҳои дигар

Шумо метавонед ягон маҷмӯи дигарро дар фазо илова кунед $IPSETS$.

Консул + iptables = :3

Барои чӣ? Баъзан касе ба ipset ниёз дорад, масалан, барои тақлид кардани қатъи баъзе қисмҳои кластер. Ҳар кас метавонад дилхоҳ маҷмӯа биёрад, онҳоро номбар кунад ва онҳо аз консул гирифта мешаванд. Дар айни замон, маҷмӯаҳо метавонанд ё дар қоидаҳои iptables иштирок кунанд ё ҳамчун даста амал кунанд NOOP: Мутобиқатиро демон нигоҳ медорад.

истифодабарандагони

Пештар, ин чунин буд: корбар ба шабака пайваст ва параметрҳоро тавассути домен қабул мекард. Пеш аз пайдоиши деворҳои насли нав, Cisco намедонист, ки чӣ гуна фаҳмидани корбар дар куҷост ва IP дар куҷост. Аз ин рӯ, дастрасӣ танҳо тавассути номи мизбони мошин дода шуд.

Мо чӣ кор кардем? Мо дар лаҳзаи гирифтани суроға дармондем. Одатан, ин dot1x, Wi-Fi ё VPN аст - ҳама чиз тавассути RADIUS мегузарад. Барои ҳар як корбар, мо гурӯҳеро аз рӯи номи корбар эҷод мекунем ва дар он IP-ро бо TTL, ки ба dhcp.lease-и он баробар аст, ҷойгир мекунем - баробари ба охир расидани мӯҳлати он қоида аз байн меравад.

Консул + iptables = :3

Акнун мо метавонем дастрасиро ба хидматҳо, ба монанди гурӯҳҳои дигар, бо номи корбар кушоем. Мо дарди номи ҳостҳоро ҳангоми тағир додани онҳо бартараф кардем ва бори гарони муҳандисони шабакаро бардоштем, зеро онҳо дигар ба Cisco ниёз надоранд. Ҳоло худи муҳандисон дастрасӣ ба серверҳои худро сабт мекунанд.

Ихтилофот

Дар баробари ин мо ба канда кардани изолятсия шуруъ кардем. Менеҷерони хидматрасонӣ инвентаризатсия карданд ва мо тамоми шабакаҳои худро таҳлил кардем. Биёед онҳоро ба ҳамон гурӯҳҳо тақсим кунем ва дар серверҳои зарурӣ гурӯҳҳо илова карда шуданд, масалан, барои рад кардан. Ҳоло ҳамон изолятсияи саҳнавӣ дар қоидаҳои_инкоркунии истеҳсолот анҷом меёбад, аммо на дар худи истеҳсолот.

Консул + iptables = :3

Нақша зуд ва содда кор мекунад: мо ҳама ACL-ро аз серверҳо хориҷ мекунем, сахтафзорро холӣ мекунем ва шумораи VLANҳои ҷудошударо кам мекунем.

Назорати беайбият

Пештар, мо як триггери махсус доштем, ки вақте касе қоидаи брандмауэрро дастӣ тағир дод, гузориш медод. Ман барои тафтиши қоидаҳои брандмауэр як линтери бузурге менавиштам, ин мушкил буд. Беайбӣ ҳоло аз ҷониби BEFW назорат карда мешавад. Ӯ бо ҷидду ҷаҳд кафолат медиҳад, ки қоидаҳои қабулкардааш тағир наёбанд. Агар касе қоидаҳои брандмауэрро тағир диҳад, он ҳама чизро бармегардонад. "Ман зуд прокси-прокси насб кардам, то ки аз хона кор кунам" - дигар чунин имконот вуҷуд надоранд.

BEFW ipset-ро аз хадамот ва рӯйхат дар befw.conf, қоидаҳои хадамот дар занҷири BEFW назорат мекунад. Аммо он дигар занҷирҳо ва қоидаҳо ва дигар ipsets назорат намекунад.

Муҳофизати садама

BEFW ҳамеша ҳолати хуби маълумро мустақиман дар сохтори бинарии state.bin нигоҳ медорад. Агар чизе хато кунад, он ҳамеша ба ин ҳолат бармегардад.bin.

Консул + iptables = :3

Ин суғурта аз амалиёти ноустувори консул аст, вақте ки он маълумот ирсол накардааст ё касе хато кардааст ва қоидаҳоеро истифода мебарад, ки татбиқ карда намешаванд. Барои он ки мо бе девор намонем, BEFW ба ҳолати охирин бармегардад, агар дар ягон марҳила хатогӣ рух диҳад.

Дар ҳолатҳои вазнин, ин кафолатест, ки мо бо девори корӣ боқӣ мемонем. Мо ҳама шабакаҳои хокистариро мекушоем бо умеди админ омада ислоҳ мекунад. Рӯзе ман инро дар танзимот ҷойгир мекунам, аммо ҳоло мо танҳо се шабакаи хокистарӣ дорем: 10/8, 172/12 ва 192.168/16. Дар доираи консули мо, ин як хусусияти муҳимест, ки ба рушди минбаъдаи мо кӯмак мекунад.

Намоиш: ҳангоми гузориш, Иван режими намоишии BEFW -ро нишон медиҳад. Намоишро тамошо кардан осонтар аст видео. Рамзи манбаи намоишӣ дастрас аст дар GitHub.

домҳо

Ман ба шумо дар бораи хатогиҳое, ки мо дучор шудаем, нақл мекунам.

ipset илова маҷмӯи 0.0.0.0/0. Агар шумо ба ipset 0.0.0.0/0 илова кунед, чӣ мешавад? Оё ҳама IP-ҳо илова карда мешаванд? Оё дастрасӣ ба интернет дастрас хоҳад буд?

Не, мо хатогие мегирем, ки ду соат бекористии мо арзиш дошт. Ғайр аз он, хато аз соли 2016 кор намекунад, он дар RedHat Bugzilla таҳти рақами №1297092 ҷойгир аст ва мо онро тасодуфан пайдо кардем - аз гузориши таҳиягар.

Ҳоло дар BEFW ин як қоидаи қатъӣ аст 0.0.0.0/0 ба ду суроға табдил меёбад: 0.0.0.0/1 и 128.0.0.0/1.

ipset барқарорсозии маҷмӯи < файл. Вақте ки шумо ба он мегӯед, ipset чӣ кор мекунад restore? Ба фикри шумо, оё он бо iptables кор мекунад? Оё он маълумотро барқарор мекунад?

Ҳеҷ чиз ба ин монанд нест - он муттаҳид мешавад ва суроғаҳои кӯҳна ба ҳеҷ ҷо намераванд, шумо дастрасиро манъ намекунед.

Ҳангоми санҷиши изолятсия мо хато пайдо кардем. Акнун системаи хеле мураккаб вуҷуд дорад - ба ҷои restore гузаронида мешавад create temp, он гоҳ restore flush temp и restore temp. Дар охири своп: барои атомӣ, зеро агар шумо ин корро аввал кунед flush ва дар айни замон ягон пакет меояд, он партофта мешавад ва чизе хато мекунад. Ҳамин тавр, дар он ҷо каме ҷодуи сиёҳ вуҷуд дорад.

consul kv get -datacenter=дигар. Тавре ки ман гуфтам, мо фикр мекунем, ки мо баъзе маълумотро талаб мекунем, аммо мо ё маълумот мегирем ё хатогӣ. Мо метавонем ин корро тавассути Консул ба таври маҳаллӣ иҷро кунем, аммо дар ин ҳолат ҳарду ях мекунанд.

Мизоҷи консули маҳаллӣ як бастаи HTTP API мебошад. Аммо он танҳо овезон аст ва ба Ctrl+C ё Ctrl+Z ё чизе ҷавоб намедиҳад, танҳо kill -9 дар консоли оянда. Мо бо ин ҳангоми сохтани кластери калон дучор шудем. Аммо мо то ҳол роҳи ҳалли худро надорем; мо барои ислоҳи ин хато дар консул омода ҳастем.

Роҳбари консул ҷавоб намедиҳад. Устоди мо дар маркази додаҳо ҷавоб намедиҳад, мо фикр мекунем: "Шояд алгоритми интихоб ҳоло кор кунад?"

Не, ин кор намекунад ва мониторинг чизе нишон намедиҳад: Консул мегӯяд, ки индекси ӯҳдадорӣ вуҷуд дорад, роҳбар пайдо шудааст, ҳама чиз хуб аст.

Мо бо ин чӣ гуна муносибат мекунем? service consul restart дар крон хар соат. Агар шумо 50 сервер дошта бошед, чизи муҳим нест. Вақте ки онҳо 16 ҳастанд, шумо мефаҳмед, ки он чӣ гуна кор мекунад.

хулоса

Дар натиҷа мо бартариҳои зеринро ба даст овардем:

  • 100% фарогирии ҳамаи мошинҳои Linux.
  • Суръат.
  • Автоматика.
  • Мо муҳандисони сахтафзор ва шабакаро аз ғуломӣ озод кардем.
  • Имкониятҳои ҳамгироӣ пайдо шуданд, ки қариб беохиранд: ҳатто бо Kubernetes, ҳатто бо Ansible, ҳатто бо Python.

Минусы: Консул, ки мо ҳоло бояд бо он зиндагӣ кунем, ва арзиши хеле баланди хато. Масалан, як маротиба соати 6:XNUMX (прайм-тайм дар Русия) ман дар рӯйхати шабакаҳо чизеро таҳрир мекардам. Он вақт мо дар BEFW танҳо изолятсия месохтем. Ман дар ҷое хато кардам, ба назарам ниқоби нодурустро нишон додам, аммо ҳама чиз дар ду сония афтод. Мониторинг фурӯзон мешавад, навбатдори ёрирасон давида меояд: "Мо ҳама чизро дорем!" Сардори шуъба вакте ки ба кор-хона сабаб шуд, ки ин вокеаро фахмонд, хокистарранг шуд.

Арзиши хато он қадар баланд аст, ки мо тартиби мураккаби пешгирии худро таҳия кардем. Агар шумо инро дар як сайти калони истеҳсолӣ амалӣ кунед, ба шумо лозим нест, ки аломати устои консулро ба ҳама диҳед. Ин бад анчом меёбад.

Арзиш Ман танҳо барои 400 соат код навиштам. Дастаи ман аз 4 нафар дар як моҳ 10 соатро барои дастгирии ҳама сарф мекунад. Дар муқоиса бо нархи ҳама гуна девори насли нав, он ройгон аст.

Нақшаҳо. Нақшаи дарозмуддат дарёфти нақлиёти алтернативӣ барои иваз ё пурра кардани консул мебошад. Шояд ин Кафка бошад ё чизе монанди он. Аммо дар солҳои наздик мо дар Консул зиндагӣ хоҳем кард.

Нақшаҳои фаврӣ: ҳамгироӣ бо Fail2ban, бо мониторинг, бо nftables, эҳтимолан бо дигар тақсимотҳо, ченакҳо, мониторинги пешрафта, оптимизатсия. Дастгирии Kubernetes низ ҷое дар нақшаҳост, зеро ҳоло мо якчанд кластер ва хоҳиш дорем.

Бештар аз нақшаҳо:

  • ҷустуҷӯи аномалияҳо дар ҳаракат;
  • идоракунии харитаи шабака;
  • Дастгирии Kubernetes;
  • васл кардани бастаҳо барои ҳама системаҳо;
  • Web-UI.

Мо пайваста барои тавсеаи конфигуратсия, баланд бардоштани ченакҳо ва оптимизатсия кор мекунем.

Ба лоиҳа ҳамроҳ шавед. Лоиҳа аҷиб баромад, аммо, мутаассифона, он ҳоло ҳам як лоиҳаи як шахс аст. Биё ба GitHub ва кӯшиш кунед, ки коре кунед: ӯҳдадор шавед, озмоиш кунед, чизе пешниҳод кунед, баҳои худро диҳед.

Дар ҳамин ҳол, мо омодагӣ мебинем Saint HighLoad++, ки рӯзҳои 6 ва 7 апрел дар Санкт-Петербург баргузор мешавад ва мо таҳиягарони системаҳои пурборро даъват мекунем. барои гузориш муроҷиат кунед. Нотикони ботаҷриба аллакай медонанд, ки чӣ кор кунанд, аммо барои онҳое, ки нав суханронӣ мекунанд, ҳадди аққал тавсия медиҳем кушиш мекунанд. Иштирок кардан дар конференция хамчун маърузачй як катор бартарихо дорад. Шумо метавонед кадоме аз онҳоро, масалан, дар охир хонед ин мақола.

Манбаъ: will.com

Илова Эзоҳ