Tere! Esiteks pisut lĂŒĂŒrikat. Vahel kadestan kolleege, kes töötavad kaugelt â see on tĂ”eliselt suurepĂ€rane, et saab töötada mistahes maailma nurgast, kus internet on olemas, vĂ”tta puhkust igal ajal, kanda vastutust projektide ja tĂ€htaegade eest, mitte istuda kontoris kella 8â17. Minu ametikoht ja töökohustused praktiliselt kĂ”rvaldavad vĂ”imaluse pikka aega andmekeskuses eemal olla. Siiski juhtub vahel huvitavaid juhtumeid, nagu allpool kirjeldatud, ja ma mĂ”istan, et on vĂ€ga vĂ€he ametikohti, kus on nii suur loominguline vabadus sisemise troubleshooterâi jaoks.
Kere lĂŒhiĂŒlevaade â artikli kirjutamise ajal pole juhtum tĂ€ielikult lahendatud, kuid arvestades tarnijate vastamise kiirus, vĂ”ib tĂ€ielik lahendus vĂ”tta veel kuid, kuid tahan oma leidudega juba nĂŒĂŒd jagada. Loodan, kallid lugejad, et andestate mulle selle kiirustamise. Aga piisavalt juttu â mis on juhtumiga?
Alustame sissejuhatusega: on ettevĂ”te (koht, kus töötan vĂ”rgusĂŒsteemide insenerina), mis majutab kliendilahendusi privaatse VMWare pilve keskkonnas. Enamik uusi lahendusi ĂŒhendatakse VXLAN-segmentidega, mida haldab NSX-V â ei hakka hindama, kui palju aega see lahendus mulle sÀÀstis, lĂŒhidalt öeldes â palju. Olen suutnud isegi koolitada kolleege NSX ESG seadmes ja vĂ€iksed kliendilahendused seadistatakse minu osaluseta. TĂ€htis mĂ€rkida, et meie juhtimistasand töötab unicast-replikatsiooniga. HĂŒbriidserverid on ĂŒhendatud redundantsete kahe liidese kaudu erinevatesse fĂŒĂŒsilistesse Juniper QFX5100 lĂŒlititesse (kokku pandud Virtual Chassis) ja marsruutimise pĂ”hjaliku poliitika kaudu, mis pĂ”hineb algse virtuaalse porte â see on informatsiooni tĂ€iendamiseks.
Kliendilahendused on vĂ€ga mitmekesised: alates Windows IIS-st, kus kĂ”ik veebiserveri komponendid on ĂŒhel masinal, kuni ĂŒsna suurteni â nĂ€iteks tasakaalustatud Apache veebifront + LB MariaDB Galera + jagamisserverid, mis on sĂŒnkroonitud GlusterFS-i abil. Praktiselt igat serverit tuleb jĂ€lgida eraldi, ja mitte kĂ”igil komponentidel pole avalikke aadresse â kui olete selle probleemiga kokku puutunud ja teil on elegantsem lahendus, oleksin tĂ€nulik soovituste eest.
Minu jĂ€lgimislahendus seisneb tulemĂŒĂŒri (Fortigate) âĂŒhendamisesâ iga sisemise kliendivĂ”rguga (+SNAT ja muidugi ranged piirangud lubatud liikluse tĂŒĂŒbi osas) ning sisemiste aadresside jĂ€lgimises - nii saavutatakse teatud ĂŒhtlustamine ja jĂ€lgimise lihtsustamine. JĂ€lgimine toimub PRTG serverite klastri kaudu. JĂ€lgimisskeem on umbes selline:

Kuni kasutasime ainult VLAN-e, toimis kĂ”ik ĂŒsna tavaliselt ja ennustatavalt, nagu kell. PĂ€rast NSX-V ja VXLAN rakendamist seisisime kĂŒsimuse ees - kas on vĂ”imalik jĂ€tkata jĂ€lgimist vanaviisi? Selle kĂŒsimuse ajal oli kĂ”ige âkiiremâ lahendus NSX ESG juurutamine ja VXLAN trunk-liidese ĂŒhendamine VTEP vĂ”rguga. Kiire, aga kahtluse alla - kuna GUI kasutamine kliendivĂ”rkude, SNAT-i ja tulemĂŒĂŒri reeglite seadistamiseks vĂ”ib kĂŒll ĂŒhtlustada haldust ĂŒhes vSphere liideses, kuid minu arvates on see ĂŒsna mahukas ja lisaks piirab see tĂ”rkeotsingu tööriistade komplekti. Need, kes on kasutanud NSX ESG-d âpĂ€risâ tulemĂŒĂŒri asendajana, arvan, et nĂ”ustuvad. Kuigi selline lahendus oleks ilmselt stabiilsem - sest kĂ”ik toimub ĂŒhe tarnija raames.
Teine lahendus on kasutada NSX DLR-i sillereĆŸiimis VLAN ja VXLAN vahel. Siin on kĂ”ik selge - kasulikkus VXLAN-i kasutamisel kaob, kuna selles olukorras tuleb ikkagi VLAN-i tĂ”mmata monitoorimise paigalduseni. Muide, selle lahenduse töötamise kĂ€igus kohtasin probleemi, kui DLR-sild ei saatnud pakette virtuaalmasinale, mis asus samal hostil. Tean, tean - NSX-V raamatutes ja juhendites on selgelt öeldud, et NSX Edge jaoks peab olema eraldatud klaster, aga need on ju vaid raamatud... Igal juhul ei lahendanud me pĂ€rast paari kuud toega probleemi. LĂ”ppkokkuvĂ”ttes sain aru, kuidas asjad toimivad - hĂŒperviisori tuumamoodul, mis vastutab VXLAN-i kapseldamise eest, ei aktiveerunud, kui DLR ja jĂ€lgitav server asusid samal hostil, kuna liiklus ei lahkunud hostist ja loogika jĂ€rgi pidi olema ĂŒhendatud VXLAN-segmendiga - kapseldamine ei olnud vajalik. Toega jĂ”udsime koos virtualiseeritud liidese vdrPortini, mis loogiliselt ĂŒhendab ĂŒlesvoolud ja teostab sildamise/kapseldamise - seal mĂ€rgati sissetuleva liikluse puhul vastuolu, millega ma hakkasin selles olukorras tegelema. Kuid nagu öeldud, ei viime selleni lĂ”puni, kuna mind suunati teisele projektile ja see teema oli algusest peale ummiktee, seega polnud erilist soovi selle arendamiseks. Kui ma ei eksi, siis probleemi tĂ€heldati NSX-i versioonides 6.1.4 ja 6.2.
Ja siin - bingo! Fortinet kuulutab vĂ€lja natiivse . Ja mitte lihtsalt point-to-point vĂ”i VXLAN-over-IPSec, mitte tarkvaraline VLAN-VXLAN sillaga - seda hakati rakendama juba versioonist 5.4 (ja see on esitatud ka teiste ), ja tegelikku unicast control plane'i tuge. Lahenduse rakendamisel kohtasin veel ĂŒhte probleemi â kontrollimiseks mĂ”eldud serverid kadusid perioodiliselt jĂ€lgimisest, kuigi virtuaalmasin ise töötas. PĂ”hjuseks oli see, et ma unustasin lubada Ping'i VXLAN-liideses. Klastrite taaskirjastamise kĂ€igus liikusid virtuaalmasinad ringi, ja Ping lĂ”petas vMotion'i, et tĂ€histada uut ESXI hosti, kuhu masin ĂŒle viidi. Rumalus, aga see probleem viis veel kord tootja â seekord Fortinet â toetuseks usalduse kadumisele. Ma ei mainigi, et iga VXLAN-iga seotud juhtum algab kĂŒsimusega
VĂ”ttes edukalt testi liikluse, otsustati lahendust rakendada. Prodaktsioonis selgus, et pĂ€rast pĂ€eva vĂ”i kahte lakkab kĂ”ik, mida VXLAN-i kaudu jĂ€lgitakse, jĂ€rk-jĂ€rgult töötamast. Liidese deaktiveerimine/aktiveerimine aitas, kuid ainult ajutiselt. MĂ€letades tootja toe aeglust, alustasin probleemide lahendamist ise â lĂ”puks on minu ettevĂ”te, minu vĂ”rk â minu vastutus.
Probleemide lahendamise kĂ€ik. Kes on tĂ€hed ja uhkustamisest vĂ€sinud â jĂ€tke vahele ja minge post-analĂŒĂŒsi juurde.
Probleemide lahendamise kĂ€ikAitĂ€h, et jĂ€tkasite lugemist â jĂ€tkame!
Nii et jĂ€lgimine töötab mĂ”nda aega, siis kaob see ise. See tĂ€hendab, et tulemĂŒĂŒripoliitikates ei ole tĂ”enĂ€oliselt probleeme. Siiski, kuna olen kokku puutunud sĂŒsteemi protsesside peatumise probleemidega Fortigate versioonides 5.6+, vaatame esmalt 'diagnose debug flow' â ootuspĂ€raselt lahendatakse liiklus ja see liigub liidese kaudu, kuid vastust ei tule. TĂ€hendab, kaevume edasi virna. Kahjuks tuleb peita aadresse isegi RFC1918, kuid loodan, et protsess on piisava selgitusega varustatud arusaamiseks. Server VXLAN-i sees on aadress x.x.x.15, Fortigate'i liidese aadress x.x.x.254, kĂ”ik teised aadressid kuuluvad VTEP-vĂ”rku.
VXLAN-iga kapseldatud pakettide edastamiseks on vajalik korrektne teave mitmes tabelis. Overlay jaoks on need ARP ja OVSDB, underlay puhul ARP ja CAM. Fortigate'i puhul on VXLAN FDB ja OVSDB sama asi. Alustame sealt:
fortigate (root) #diag sys vxlan fdb list vxlan-LS
mac=00:50:56:8f:3f:5a state=0x0002 flags=0x00 remote_ip=Ń.Ń.Ń.47 port=4789 vni=5008 ifindex=7
Asjad on siin ĂŒsna lihtsad â virtuaalmasina MAC-aadress peab olema VTEP-is, mille aadress on Ń.Ń.Ń.47. Kontrollides ESXI klastrite sisu ja seadeid, leian, et virtuaalmasina MAC on Ă”ige, samuti VTEP aadress. Kontrollin CAM/ARP tabelit Fortigate'il â kĂ”ik sobib ESXI hosti seadistustega:
fortigate (root) #get sys arp | grep Ń.Ń.Ń.47
Ń.Ń.Ń.47 0 00:50:56:65:f6:2c dmz
Tabelid on Ă”iged ja liiklus lĂ€heb vĂ€lja â Ă€kki probleem ei ole Fortigate'is? Olin tahtlikult vahele jĂ€tnud liikluse lĂŒlitamise analĂŒĂŒsi Juniper'is â loogika ĂŒtleb, et jĂ€rgmine tĂ”rkeotsimise samm peaks olema seal, kuid minu vĂ”rk on lihtne â ainult ĂŒks VLAN VTEP jaoks ja kĂ”ik komponendid on otseselt ĂŒhendatud. Lisaks tuletan meelde juhtumit DLR-sillaga, VDR ja kadunud liiklusega â lĂ€hen snuffima ESXI hostis, samal ajal loon juba juhtumi VMWare'ile. Allpool oleva MAC aadress 97:6e kuulub Fortigate'ile, vmnic1 on liides, millel on VTEP aadressiga Ń.Ń.Ń.47; snuffin mĂ”lemast suunast "âdir 2":
pktcap-uw --uplink vmnic1 --vni 5008 --mac 90:6c:ac:a9:97:6e --dir 2 -o /tmp/monitor.pcap

Eedukus â snuffimisel nĂ€en ARP pĂ€ringut ja saabuvat vastust. Toon vĂ€lja ainult ARP vastuse ja seal on kĂ”ik Ă”ige. Ma ei maininud, kuid kogu selle aja jĂ€lgib monitooringuserver aadressi Ń
.Ń
.Ń
.15 â kus on ICMP liiklus? Tuletan meelde, et mul on kaks uplinki. Siin vĂ”ib vaielda ja öelda, et virtuaalse allika port on sama (minu teaming policy), ehk siis sama vNIC peab valima sama uplinki, kuid kuna ma olen hostis, ei ole teise uplinki kontrollimine probleem:
pktcap-uw --uplink vmnic4 --vni 5008 --mac 90:6c:ac:a9:97:6e --dir 2 -o /tmp/monitor.pcap

KĂŒsimused tulevad Fortigate'ilt, kuid vastust pole. See tĂ€hendab, et probleem ei ole Fortigate'is. Noh, mĂ”tlen ma â jĂ€lle sama probleem kaotatud liiklusega VDR-is, jĂ€lle paar kuud juhtumiga Ă”igesse suunda liikuda. Paar pĂ€eva hiljem jaotasin end maha ning soovides mitte leppida seisu jĂ€tkumisega, otsustasin leida rohkem sniffereid tugiteenusele, et protsessi kiirendada. Ja siis satub mu pilk 'juhuslikult' Ethernet'i kapseldamise underlay peale. Keiser pole tĂ”eline ja VTEP MAC-aadress ei kattu tema IP-ga. LĂŒkkan nulli, sniffin, kaevan â tĂ”esti, et vale. Too ARP tabel kĂ€ele, et oleks mugavam vĂ”rrelda. Pange tĂ€hele, et ĂŒlemises pildis on esimene Ethernet'i kapseldamine:
fortigate (root) #get sys arp | grep x.x.x.47
x.x.x.47 0 00:50:56:65:f6:2c dmz
fortigate (root) #get sys arp | grep x.x.x.42
x.x.x.42 0 00:50:56:6a:78:86 dmz
Nii et, mis meil kokkuvĂ”ttes on â pĂ€rast virtuaalse masina migreerimist proovib Fortigate suunata liiklust VTEP-le (korrektse) VXLAN FDB-st, kuid kasutab vale DST MAC-i ja liiklus visatakse ootuspĂ€raselt tagasi hĂŒpervisorit vastu vĂ”tva liidese poolt. Tegelikult kuuest ĂŒhest neljast juhtumisse kuulus see MAC algsele hĂŒpervisorile, millelt masina migreerimist alustati.
Eile sain Fortinet'i tehniliselt toelt kirja â minu juhtumi kohta avati vea 615586. Ma ei tea, kas rÔÔmustada vĂ”i kurvastada: ĂŒhelt poolt â probleem ei ole seadetes, teiselt â fikseerimine tuleb ainult koos tarkvara uuendusega, parimal juhul jĂ€rgmisel. Samuti soojendab mu ĂŒhte viga, mille avastasin eelmisel kuul, tĂ”si, siis HTML5 GUI vSphere'is. TĂ”eline kohalik tarnija QA osakond...
Riskin jÀreldada jÀrgmist:
1 â multicast'i kontrollplaan ei pruugi tĂ”enĂ€oliselt olla kirjeldatud probleemile vastuvĂ”tlik â MAC-aadressid VTEP-st on saadud grupi IP-aadressist, millele liides on allkirjastatud.
2 â tĂ”enĂ€oliselt on Fortigate'i probleem seansside laadimisega Network Processor'ile (umbes CEF analoog) â kui jagada iga pakett lĂ€bi CPU, kasutatakse tabeleid, mis sisaldavad Ă”iget â vĂ€hemalt visuaalselt â teavet. Selle oletuse kasuks nĂ€itab see, et aitab sulgeda/avamise liidest vĂ”i oodata mĂ”nda aega â rohkem kui 5 minutit.
3 â meeskonnapoliitika muutmine, nĂ€iteks selge ebaĂ”nnestumine, vĂ”i LAG-i rakendamine ei lahenda probleemi, kuna jĂ€lgitud on 'jÀÀmist' MAC-i algsest hĂŒpervisorist kapseldatud pakettides.
Selle valguses saan jagada, et avastasin hiljuti , kus ĂŒhe artikli kohaselt vĂ€ideti, et stetfull tulemĂŒĂŒrid ja vahemĂ€lutavad andmeedastusmeetodid on toimetused. Noh, ma ei ole IT-s nii kogenud, et selliseid vĂ€iteid teha, pealegi ei ole ma kohe kĂ”igega, mida blogiartiklid vĂ€idavad, nĂ”us. Kuid midagi ĂŒtleb mulle, et Ivanil on tĂ”de oma sĂ”nades.
AitĂ€h tĂ€helepanu eest! Oleksin rÔÔmus vastata kĂŒsimustele ja kuulda konstruktiivset kriitikat.
Allikas: habr.com
