Kubva kuGoogle Blog Editor: Wakambozvibvunza here kuti mainjiniya eGoogle Cloud Technical Solutions (TSE) anobata sei zvikumbiro zvako zvekutsigira? TSE Technical Support Engineers vane basa rekuona nekugadzirisa zvitubu zvinoshumwa nemushandisi zvematambudziko. Mamwe ematambudziko aya ari nyore, asi dzimwe nguva unosangana netikiti rinoda kutariswa kwemainjiniya akati wandei kamwechete. Muchinyorwa chino, mumwe wevashandi veTSE achatiudza nezve dambudziko rimwe rinonyengerera kubva mukuita kwake kwazvino -
Troubleshooting zvose sainzi uye unyanzvi. Izvo zvose zvinotanga nekuvaka fungidziro pamusoro pechikonzero chekusazvibata kwemaitiro ehurongwa, mushure mezvo inoedzwa simba. Zvisinei, tisati tagadzira fungidziro, tinofanira kunyatsotsanangura uye kunyatsogadzira dambudziko racho. Kana mubvunzo uchiita seusina kujeka, saka iwe uchafanirwa kuongorora zvese nemazvo; Iyi ndiyo "unyanzvi" hwekugadzirisa matambudziko.
Pasi peGoogle Cloud, maitiro akadai anowedzera kuoma, sezvo Google Cloud inoedza nepainogona napo kuvimbisa kuvanzika kwevashandisi vayo. Nekuda kweizvi, mainjiniya eTSE haakwanise kugadzirisa masisitimu ako, kana kugona kuona zvigadziriso zvakafara sezvinoita vashandisi. Naizvozvo, kuti tiedze chero yekufungidzira kwedu, isu (mainjiniya) hatigone kukurumidza kugadzirisa sisitimu.
Vamwe vashandisi vanotenda kuti isu tichagadzirisa zvese semakanika musevhisi yemotokari, uye ingotitumira id yemuchina chaiwo, asi muchokwadi maitiro acho anoitika muchimiro chekutaura: kuunganidza ruzivo, kuumba uye kusimbisa (kana kuramba) fungidziro, uye, pakupedzisira, matambudziko echisarudzo anobva pakukurukurirana nemutengi.
Dambudziko riripo
Nhasi tine nyaya ine magumo akanaka. Chimwe chezvikonzero zvekugadzirisa kwakabudirira kwenyaya yakarongwa irondedzero yakadzama uye yakarurama yedambudziko. Pazasi unogona kuona kopi yetikiti rekutanga (rakapepetwa kuvanza zvakavanzika ruzivo):
Iyi meseji ine ruzivo rwakawanda runobatsira kwatiri:
- Specific VM yakataurwa
- Dambudziko pacharo rinoratidzwa - DNS haishande
- Inoratidzwa apo dambudziko rinozviratidza - VM uye mudziyo
- Matanho atorwa nemushandisi kuona dambudziko anoratidzwa.
Chikumbiro ichi chakanyoreswa se "P1: Critical Impact - Sevhisi Isingashandiswe mukugadzirwa", zvinoreva kugara uchitarisa mamiriro ezvinhu 24/7 maererano ne "Tevera Zuva" chirongwa (unogona kuverenga zvakawanda nezve.
Pakasvika tikiti kuZurich, takanga tatova neruzivo rwunotevera paruoko:
- Zvemukati
/etc/hosts
- Zvemukati
/etc/resolv.conf
- mhedziso
iptables-save
- Yakaunganidzwa neboka
ngrep
pcap file
Neiyi data, isu takanga takagadzirira kutanga "yekuferefeta" uye kugadzirisa dambudziko.
Matanho edu ekutanga
Chekutanga pane zvese, takatarisa matanda uye chimiro chemetadata server uye takaita shuwa kuti yaishanda nemazvo. Iyo metadata server inopindura kune IP kero 169.254.169.254 uye, pakati pezvimwe zvinhu, ine basa rekutonga mazita emadomasi. Isu takaongororawo kaviri kuti firewall inoshanda nemazvo neVM uye haivharidzi mapaketi.
Yakanga iri imwe mhando yedambudziko risinganzwisisike: iyo nmap cheki yakaramba fungidziro yedu huru nezvekurasika kwemapaketi eUDP, saka isu mupfungwa takauya nedzimwe sarudzo dzakati wandei uye nzira dzekudzitarisa:
- Mapakiti anodonhedzwa zvakasarudzwa here? => Tarisa iptables mitemo
- Haisi idiki here?
MUNHU ? => Tarisa zvabudaip a show
- Dambudziko rinokanganisa chete UDP mapaketi kana TCP zvakare? => Dzinga kure
dig +tcp
- Mapaketi akacherwa anodzoswa here? => Dzinga kure
tcpdump
- Libdns inoshanda nemazvo here? => Dzinga kure
strace
kutarisa kutapurirana kwemapaketi mumativi ese
Pano isu tinosarudza kufonera mushandisi kugadzirisa matambudziko live.
Panguva yekufona tinokwanisa kutarisa zvinhu zvakati:
- Mushure mekutarisa kwakati wandei isu tinobvisa iptables mitemo kubva pane rondedzero yezvikonzero
- Isu tinotarisa network interfaces uye routing matafura, uye kaviri-tarisa kuti MTU ndeyechokwadi
- Tinozviona izvozvo
dig +tcp google.com
(TCP) inoshanda sezvainofanira, asidig google.com
(UDP) haishande - Vachidzinga
tcpdump
ichiri kushandadig
, tinoona kuti mapepa eUDP ari kudzorerwa - Tinodzinga
strace dig google.com
uye tinoona kuti kuchera sei kufona nenzira kwayosendmsg()
ΠΈrecvms()
, zvisinei yechipiri inovhiringwa nekufamba kwenguva
Nehurombo, kupera kwekuchinja kunosvika uye isu tinomanikidzwa kuwedzera dambudziko kune inotevera nguva zone. Chikumbiro ichi, zvisinei, chakamutsa kufarira muchikwata chedu, uye waanoshanda naye anokurudzira kugadzira iyo yekutanga DNS package uchishandisa scrapy Python module.
from scapy.all import *
answer = sr1(IP(dst="169.254.169.254")/UDP(dport=53)/DNS(rd=1,qd=DNSQR(qname="google.com")),verbose=0)
print ("169.254.169.254", answer[DNS].summary())
Ichi chidimbu chinogadzira DNS packet uye chinotumira chikumbiro kune metadata server.
Mushandisi anomhanyisa kodhi, iyo DNS mhinduro inodzoserwa, uye application inoigamuchira, ichisimbisa kuti hapana dambudziko padanho retiweki.
Mushure meimwe "rwendo rwepasirese," chikumbiro chinodzokera kuchikwata chedu, uye ndinochiendesa kwandiri zvachose, ndichifunga kuti zvichava nyore kumushandisi kana chikumbiro chikamira kutenderera kubva panzvimbo nenzvimbo.
Zvichakadaro, mushandisi anobvuma nemutsa kupa mufananidzo weiyo system system. Idzi inhau dzakanaka kwazvo: kugona kuyedza iyo sisitimu pachangu kunoita kuti dambudziko rikurumidze, nekuti ini handichafanira kubvunza mushandisi kuti aite mirairo, nditumire mhinduro uye ndizviongorore, ndinogona kuita zvese ini!
Vandinoshanda navo vave kundiitira shanje zvishoma. Pakudya kwemasikati tinokurukura nezvekutendeuka, asi hapana anoziva zviri kuitika. Neraki, mushandisi pachake akatotora matanho ekudzikisa mhedzisiro uye haana kukurumidza, saka isu tine nguva yekuparadzanisa dambudziko. Uye sezvo tine mufananidzo, tinogona kumhanya chero bvunzo dzinotifadza. Hukuru!
Kutora nhanho kumashure
Imwe yemibvunzo yakakurumbira yekubvunzurudza yezvinzvimbo zveinjiniya ndeye: "Chii chinoitika kana iwe uchirira
Ini ndinosarudza kushandisa uyu mubvunzo weHR kune dambudziko razvino. Zvichireva kutaura, paunoyedza kuona zita reDNS, zvinotevera zvinoitika:
- Chishandiso chinodaidza raibhurari yehurongwa senge libdns
- libdns inotarisa masisitimu ehurongwa kune iyo DNS server yainofanirwa kubata (mudhayagiramu iyi 169.254.169.254, metadata server)
- libdns inoshandisa masystem ekufona kugadzira UDP socket (SOKET_DGRAM) uye kutumira UDP mapaketi ane DNS mubvunzo mumativi ese.
- Kuburikidza neiyo sysctl interface unogona kugadzirisa iyo UDP stack padanho re kernel
- Iyo kernel inodyidzana nehardware kufambisa mapaketi pamusoro petiweki kuburikidza netiweki interface
- Iyo hypervisor inobata uye inotumira pakiti kune metadata server paunosangana nayo
- Iyo metadata server, nemashiripiti ayo, inosarudza zita reDNS uye inodzosera mhinduro uchishandisa nzira imwechete
Rega ndikuyeuchidze kuti ndedzipi fungidziro dzatatoongorora:
Hypothesis: Maraibhurari akaputswa
- Muedzo 1: mhanyisa strace musystem, tarisa kuti dig inodaidza iyo chaiyo system mafoni
- Mhedzisiro: Chaiyo system inofona inodanwa
- Muedzo 2: kushandisa srapy kutarisa kana isu tichigona kuona mazita nekupfuura system library
- Mhedzisiro: tinogona
- Muedzo 3: mhanya rpm -V pane libdns package uye md5sum raibhurari mafaera
- Mhedzisiro: iyo raibhurari kodhi yakafanana zvachose nekodhi mune inoshanda sisitimu yekushandisa
- Muedzo wechina: isa mufananidzo wemudzi wemushandisi paVM isina maitiro aya, mhanyisa chroot, ona kana DNS ichishanda
- Mhedzisiro: DNS inoshanda nemazvo
Mhedziso yakavakirwa pabvunzo: dambudziko harisi mumaraibhurari
Hypothesis: Pane kukanganisa muDNS marongero
- Muedzo 1: tarisa tcpdump uye ona kana DNS mapaketi akatumirwa uye akadzoserwa nemazvo mushure mekumhanya dig
- Mhedzisiro: mapaketi anofambiswa nemazvo
- Muedzo 2: tarisa kaviri pane server
/etc/nsswitch.conf
ΠΈ/etc/resolv.conf
- Mhedzisiro: zvese zvakanaka
Mhedziso yakavakirwa pabvunzo: dambudziko harisi neiyo DNS kumisikidzwa
Hypothesis: musimboti wakakuvadzwa
- Muedzo: isa kernel nyowani, tarisa siginecha, tangazve
- Mhedzisiro: maitiro akafanana
Mhedziso yakavakirwa pabvunzo: kernel haina kukuvara
Hypothesis: maitiro asina kunaka emushandisi network (kana hypervisor network interface)
- Muedzo 1: Tarisa zvigadziriso zvako zvefirewall
- Mhedzisiro: iyo firewall inopfuura DNS mapaketi pane ese ari maviri anotambira uye GCP
- Muedzo 2: bvisa traffic uye tarisa iko kurongeka kwekufambisa uye kudzoka kweDNS zvikumbiro
- Mhedzisiro: tcpdump inosimbisa kuti muenzi agamuchira mapepa ekudzoka
Mhedziso yakavakirwa pabvunzo: dambudziko harisi munetwork
Hypothesis: metadata server haisi kushanda
- Muedzo wekutanga: tarisa metadata server logs yeanomalies
- Mhedzisiro: hapana anomalies mumatanda
- Muedzo wechipiri: Bvisa metadata server kuburikidza
dig @8.8.8.8
- Mhedzisiro: Kugadziriswa kwakatyoka kunyangwe pasina kushandisa metadata server
Mhedziso yakavakirwa pabvunzo: dambudziko harisi nemetadata server
Chinonyanya kukosha: takaedza ese subsystems kunze Runtime settings!
Kunyura muKernel Runtime Settings
Kugadzirisa kernel execution nharaunda, unogona kushandisa command line sarudzo (grub) kana iyo sysctl interface. Ndakatarisa mukati /etc/sysctl.conf
uye ingofunga, ndakawana akati wandei etsika marongero. Ndichinzwa sekunge ndakanga ndabata pane chimwe chinhu, ndakarasa ese asiri-network kana asiri-tcp marongero, ndichisara nemakomo. net.core
. Ipapo ndakaenda kwaive nemvumo yevaenzi yaive muVM ndokutanga kushandisa zvigadziriso imwe neimwe, imwe neimwe, neVM yakatyoka, kudzamara ndawana muparadzi:
net.core.rmem_default = 2147483647
Hezvino izvo, DNS-kutyora gadziriro! Ndakawana chombo chemhondi. Asi nei izvi zviri kuitika? Ndakanga ndichiri kuda chinangwa.
Iyo yakakosha DNS packet buffer size inogadziriswa kuburikidza net.core.rmem_default
. Yakajairika kukosha kune imwe nzvimbo yakatenderedza 200KiB, asi kana sevha yako ikagamuchira akawanda eDNS mapaketi, ungangoda kuwedzera buffer saizi. Kana iyo buffer yakazara kana pakiti nyowani yasvika, semuenzaniso nekuti iyo application haisi kuigadzirisa nekukurumidza zvakakwana, ipapo iwe unotanga kurasikirwa mapaketi. Mutengi wedu akawedzera saizi yebhafa nemazvo nekuti aitya kurasikirwa nedata, sezvo aishandisa application yekuunganidza metrics kuburikidza neDNS mapaketi. Mutengo waakaisa ndiwo wakanyanya kukwanisika: 231-1 (kana yakaiswa ku231, kernel ichadzoka "INVALID ARGUMENT").
Pakarepo ndakaziva kuti nei nmap uye scapy yakashanda nemazvo: ivo vaishandisa zvigadziko zvakabikwa! Zvigadziko zvakasvibirira zvakasiyana nezvigadziko zvenguva dzose: zvinodarika iptables, uye hazvina buffer!
Asi nei "buffer yakakura kwazvo" ichikonzera matambudziko? Zviri pachena kuti hazvishande sezvakarongwa.
Panguva ino ndaigona kuburitsa dambudziko pane dzakawanda kernels uye kugovera kwakawanda. Dambudziko rakatoonekwa pa 3.x kernel uye ikozvino rakaonekwawo pa 5.x kernel.
Chokwadi, pakutanga
sysctl -w net.core.rmem_default=$((2**31-1))
DNS yakamira kushanda.
Ndakatanga kutsvaga maitiro ekushanda kuburikidza neakareruka bhinari yekutsvaga algorithm uye ndakaona kuti sisitimu yakashanda ne2147481343, asi iyi nhamba yaive isina zvazvinoreva seti yenhamba kwandiri. Ndakakurudzira mutengi kuti aedze nhamba iyi, uye akapindura kuti sisitimu yakashanda negoogle.com, asi yakapa chikanganiso nemamwe madomasi, saka ndakaenderera mberi nekuferefeta kwangu.
Ndakaisa udp_queue_rcv_skb
. Ndakatora zvinyorwa zve kernel uye ndakawedzera zvishoma printk
if
, uye akangotarisa pairi kwenguva yakati, nokuti panguva iyo zvinhu zvose zvakazosangana pamwe chete mumufananidzo wose: 231-1, nhamba isina maturo, nzvimbo isingashandisi ... Yakanga iri chidimbu chekodhi mukati. __udp_enqueue_schedule_skb
:
if (rmem > (size + sk->sk_rcvbuf))
goto uncharge_drop;
Tapota cherechedza:
rmem
ndeye type intsize
ndeyemhando u16 (isina kusaina gumi nematanhatu-bit int) uye inochengeta saizi yepakitisk->sk_rcybuf
ndeyemhando int uye inochengeta saizi yebhafa iyo, netsanangudzo, yakaenzana nekukosha mukatinet.core.rmem_default
When sk_rcvbuf
inosvika 231, kupfupisa saizi yepakiti inogona kukonzera
Iko kukanganisa kunogona kugadziriswa nenzira diki: nekukanda unsigned int
. Ndakashandisa kugadzirisa uye ndakatangazve system uye DNS yakashanda zvakare.
Kuravira kukunda
Ndakaendesa zvandainge ndawana kuclient ndokutumira
Izvo zvakakosha kuti tizive kuti nyaya yacho yakave isingawanzo, uye nerombo rakanaka isu hatiwanzogashira zvikumbiro zvakaoma kudaro kubva kuvashandisi.
Source: www.habr.com