
Apple je stekao reputaciju ponudom stabilni, sigurni i visokoperformansni računariAli čak ni macOS nije nepogrešiv. Grupa istraživača otkrila je prilično nezgodan nedostatak: ako Mac ostane uključen bez ponovnog pokretanja nekoliko sati... 49,7 dana za redomMožda ćete izgubiti mogućnost otvaranja novih internetskih veza.
Ovaj bug utiče na macOS TCP/IP mrežni stek Ovo se dešava i na desktop i na laptop računarima, od Mac mini i Mac Studio do MacBook Air i MacBook Pro. Računar i dalje izgleda povezano, odgovara na pingove, pa čak i održava neke sesije, ali prestaje uspostavljati nove veze, što je posebno zabrinjavajuće u serveri, razvojni timovi i profesionalna okruženja u Evropi gdje se Mac računari koriste kao mašine koje su uvijek uključene.
Kvar koji se dogodi nakon 49 dana, 17 sati, 2 minute i 47 sekundi
Otkriće dolazi iz Photon, američka kompanija koja integriše AI agenti u servisima za razmjenu poruka i koristi Mac farme za praćenje iMessagea i implementaciju svoje OpenClaw agentske platforme. Nakon nekoliko sedmica neprekidnog rada, neki od njegovih Mac mini i Mac Studio Odjednom su prestali prihvatati mrežne veze, iako su nastavili odgovarati na osnovne provjere.
Nakon istrage, otkrili su da se problem uvijek pojavljuje kada se dostigne vrlo specifično vrijeme rada: 49 dana, 17 sati, 2 minuta i 47 sekundi od posljednjeg pokretanja. Baš u tom trenutku, timovi koji su stalno stvarali nove veze jednostavno Prestali su to raditi bez ikakve vidljive greške.Ponovno pokretanje je sve vratilo u normalu, ali se greška ponovo pojavila nakon još 49,7 dana rada.
Ono što je upečatljivo je da je buba Ne zavisi od određene verzije macOS-aPrema objavljenim analizama, to utiče na modernu liniju računara zasnovanu na Unixu, od novijih verzija do trenutnog macOS-a. Nije bitno da li se radi o MacBooku najnovije generacije ili starijem iMac-u. Bitno je koliko dugo je uključeno bez ponovnog pokretanja..
Za mnoge kućne korisnike u Španiji i ostatku Evrope, to se čini malo vjerovatnim, ali stvarnost je da je vrlo lako akumulirati sedmice aktivnosti ako Samo zatvorite poklopac laptopaStavite ga u stanje mirovanja ili odložite ažuriranja. Milioni ljudi jedva isključuju svoje MacBookove, i tu može nastati problem.
Uzrok: prepunjeni interni 32-bitni TCP brojač
Korijen problema leži u načinu na koji macOS mjeri vrijeme unutar svog mrežnog sistema. XNU kernel koristi internu varijablu pod nazivom tcp_now da bi se pratilo vrijeme u milisekundama od pokretanja sistema. Ova vrijednost se pohranjuje kao 32-bitni neoznačeni cijeli broj, što znači da može ići samo do 4.294.967.295.
Ako se ta brojka prevede u stvarno vrijeme, matematika se slaže s onim što je uočeno u testovima:
4.294.967.295 ms ≈ 49 dana, 17 sati, 2 minute i 47 sekundi
Kada brojač dostigne svoju maksimalnu vrijednost, povratak na nulu bi trebao biti ispravno obrađen, ali na macOS-u ponašanje nije očekivano. Prema Photonu i drugim programerima, greška uzrokuje... Interni sat TCP-a se "zamrzava" ili počinje praviti pogrešna poređenja vremenatako da logika koja odlučuje kada veze ističu prestane ispravno funkcionirati.
Ovaj brojač se koristi za više zadataka, uključujući čišćenje starih veza i upravljanje tajmerima povezanim s protokolom. prekoračenje 32-bitnog cijelog brojaTCP stek gubi svoju vremensku referencu i prestaje smatrati određene komunikacije isteklim, iako su one zapravo završile prije nekog vremena.
Analize ukazuju na pogrešna implementacija TCP standarda, posebno RFC 7323koji reguliše, između ostalog, upravljanje tajmerom i visokoperformansna proširenja. Umjesto pravilnog recikliranja brojača i nastavka čišćenja veza u redovnim intervalima, sistem održava aktivne unose koji više ne bi trebali biti tu.
Šta se dešava u praksi: TIME_WAIT, kratkotrajni portovi i nove veze
Da biste razumjeli pravi utjecaj greške, morate pogledati stanje VRIJEME_ČEKANJA TCP protokola. Kada se veza prekine, ona ne nestaje iznenada: ona ulazi u ovu fazu čekanja na neko vrijeme (obično nekoliko minuta) kako bi se osiguralo da nijedan paket ne ostane neaktivan i kako bi se izbjeglo miješanje starih komunikacija s novima.
Pod normalnim uslovima, kernel macOS-a ide periodično uklanjanje veza za TIME_WAIT koji su već dostigli svoj rok, čime se oslobađaju resursi i, prije svega, tzv. efemerne luke, što su privremeni portovi koje sistem koristi za iniciranje odlaznih veza.
Kada interni sat povezan sa tcp_now pređe granicu, ovo čišćenje prestaje ispravno raditi. Sistem tada interpretira ove veze kao zatvorene. Još im nije istekao rok trajanjaStoga se ne brišu. Unosi se akumuliraju u tabeli konekcija, zauzimajući sockete i portove na neodređeno vrijeme.
macOS obično ima neke 16.000 privremenih portova u njihovom zadanom rasponu (otprilike između portova 49.152 i 65.535). Nakon što se ovi portovi popune TIME_WAIT vezama koje nikada ne ističu, Sistem ne može otvoriti nove TCP vezeOdatle se pojavljuju simptomi: greške prilikom povezivanja na web stranice, API-je, baze podataka, SSH tunele i bilo koju uslugu koja ovisi o TCP-u.
Zanimljivo je da, paralelno s tim, i druge funkcije, kao što su ping (ICMP) Mogu nastaviti funkcionirati. Zato se, brzom provjerom, čini da je Mac online: reagira na lokalnu mrežu, može održavati sve otvorene sesije, a ikona Wi-Fi ili Etherneta ne pokazuje probleme, ali iz praktičnih razloga Ne postoji način za započinjanje nove komunikacije..
Stari poznanik: "greška od 49,7 dana" i druge greške u vremenu
Ono što se dešava na macOS-u nije izolovan fenomen. To je klasičan slučaj... Prelijevanje od 32-bitnog cijelog broja u brojačima vremena, porodici grešaka koja decenijama muči softversku industriju.
U 90-ima, Windows 95 i Windows 98 Patili su od gotovo identične greške: nakon otprilike 49,7 dana rada, sistem bi počeo da otkazuje zbog 32-bitnog milisekundnog brojača koji koriste određeni drajveri. Proračun je bio isti: 2³² milisekunde jednako je tih 49,7 sudbonosnih dana. Microsoft je na kraju riješio problem u kasnijim verzijama kao što je Windows XP.
Također su uočene varijacije ovog obrasca s drugim intervalima: u nekim modernijim Windows sistemima, brojači u djelićima sekunde uzrokovali su slične kvarove nakon 497 dana neprekidnog radai poznati problem godine 2038 U 32-bitnom Unixu, reaguje na isti koncept, u ovom slučaju sa sekundama iz 1970. koje se prelivaju i generišu nemoguće datume.
Na macOS-u, detektovano ponašanje pokazuje jasnu paralelu. Brojač tcp_now, nakon dostizanja svog 32-bitnog ograničenja, Ne reciklira se na siguran način i na kraju utiče na upravljanje vremenom TCP podsistema. Mali detalj u dizajnu mrežnog steka koji se, nakon mjesec i po dana neprekidnog rada, pretvara u kritičan kvar za bilo koju infrastrukturu koja zavisi od interneta.
Za inženjerske i operativne timove, slučaj je već postao školski primjer: tiha, vremenski osjetljiva greška, teško dijagnosticirana bez konteksta i sposobna za isključiti cijele usluge bez generiranja gotovo ikakvih alarma u sloju aplikacije.
Ko to najviše primjećuje: od macOS servera do laptopa koji se nikad ne isključuju
U svakodnevnoj rutini tipičnog korisnika, koji često isključuje svoj Mac ili instalira sistemska ažuriranja, greška će vjerovatno proći nezapaženo. Međutim, u profesionalno okruženje u Španiji i Evropi Tamo gdje se macOS koristi kao dugoročni operativni sistem, utjecaj može biti ozbiljan.
Među najosjetljivijim scenarijima su Mac mini i Mac Studio koriste se kao serveriOvi uređaji su veoma popularni u studijima za razvoj aplikacija, kreativnim agencijama, softverskim kompanijama ili podatkovnim centrima kojima je potreban Apple hardver za izradu i testiranje aplikacija za iPhone, iPad i Mac. Ovi uređaji su često uključeni sedmicama ili mjesecima.
Oni takođe ističu CI/CD trkači Na platformama poput GitHub Actions, GitLab CI ili vlasničkih rješenja za kontinuiranu integraciju, koja se oslanjaju na uređaje s Apple Silicon čipovima (M1, M2, M3…) za generiranje nativnih verzija, ako jedan od ovih čvorova dostigne 49,7 dana neprekidnog rada bez ponovnog pokretanja, može prestati uspostavljati veze s repozitorijima, vanjskim API-jima ili bazama podataka usred važnih implementacija.
Još jedan čest slučaj je radne stanice za razvoj, dizajn, video ili audio montažu koji se rijetko isključuju. U mnogim produkcijskim studijima ili tehničkim odjeljenjima, Mac noću prelazi u stanje mirovanja, ali se ne ponovo pokreće sedmicama, što olakšava da se dođe do greške, a da to niko ne primijeti.
I naravno, tu su i MacBook za svakodnevnu upotrebuNevjerovatno je praktično zatvoriti poklopac, staviti laptop u stanje mirovanja i ponovo ga pokrenuti sljedećeg dana s istog mjesta. Dodajte tome i određenu nevoljkost prema primjeni ažuriranja koja zahtijevaju ponovno pokretanje, i ne čudi što laptop, nakon mjesec i po korištenja, počinje pokazivati znakove habanja. naizgled nasumični prekidi veze: aplikacije koje prestaju učitavati sadržaj, web stranice koje se zamrzavaju ili usluge u oblaku koje prestaju raditi bez ikakvog vidljivog razloga.
Simptomi: Mac "ima pristup internetu", ali ne otvara ništa novo
Za one koji naiđu na grešku, situacija je prilično zbunjujuća. S jedne strane, sistem pokazuje da je povezani na Wi-Fi mrežu ili putem kablaLampice na ruteru su upaljene i kada pingate drugu mašinu, dobijate odgovor. Čak i neke postojeće veze, poput otvorene SSH sesije ili tekućeg toka podataka, mogu nastaviti funkcionirati neko vrijeme.
Istovremeno, osnovne radnje počinju da ne uspijevaju: web stranice koje se ne učitavajuE-mail klijenti koji se zaglave prilikom sinhronizacije, aplikacije koje zavise od eksternih API-ja koje izbacuju greške zbog isteka vremena i interni servisi koji prestaju primati novi saobraćaj.
U serverima i produkcijskim okruženjima, ovo se prevodi u probleme raznolike kao što su Web platforme koje prestaju slati zahtjeveRedovi čekanja koji se ne prazne, integracije trećih strana koje se prekidaju i cjevovodi implementacije koji ne uspijevaju pri pokušaju preuzimanja zavisnosti ili otpremanja artefakata.
Alati za praćenje mreže koje koriste neke kompanije pokazuju jasan obrazac: odmah nakon kritične granice od 49,7 dana, broj konekcija u državi VRIJEME_ČEKANJA Brzina veze počinje stalno rasti, dok se skup dostupnih privremenih portova smanjuje sve dok se potpuno ne napuni. Sistem ne upozorava korisnika ni o čemu od ovoga; jednostavno... Prestaje moći otvarati nove sockete.
Nije neuobičajeno da je, u ovoj situaciji, prvi osumnjičeni ruter ili veza internet provajdera. Međutim, kada se provjere drugi uređaji na istoj mreži (mobilni telefoni, tableti, drugi računari), čini se da sve radi normalno. Tada se obično pojavi najjednostavnije i, paradoksalno, najefikasnije rješenje: Ponovo pokrenite Mac i provjerite kako sve ponovo funkcioniše glatko..
Koja su rješenja trenutno dostupna: ponovni pokretanja i mjere ublažavanja
Od danas, i prema Photonu i drugim programerima i sistem administratorima koji su analizirali problem, jedini zaista efikasan način za vraćanje normalnog rada mreže je Ponovo pokrenite sistemOvo ponovno pokretanje resetuje brojač tcp_now, briše veze akumulirane u TIME_WAIT i omogućava ponovno otvaranje TCP veza bez ograničenja.
Ovo pretvara bubu u neku vrstu sat za odbrojavanje Za bilo koju infrastrukturu zasnovanu na macOS-u: ako se sistemu dozvoli da radi duže od 49,7 dana neprekidnog rada, nove veze će na kraju prestati raditi. Prevencija je ključna dok Apple ne objavi zakrpu koja mijenja ponašanje kernela.
Među mjerama ublažavanja koje se preporučuju u profesionalnim okruženjima, kako u Španiji tako i u ostatku Evrope, ističe se nekoliko praksi:
- Zakažite periodična ponovna pokretanja Na macOS serverima, na primjer, svakih 30 ili 40 dana, kako bi se izbjeglo približavanje kritičnom pragu.
- Praćenje vremena rada opreme i konfigurirati upozorenja kada vrijeme rada premaši određena ograničenja, tako da se ponovno pokretanje može planirati unutar vremenskog okvira za održavanje.
- Prati broj konekcija u TIME_WAIT i korištenje efemernih portova s mrežnim alatima, kao dio rutinskog praćenja sistema.
- U mješovitim arhitekturama, Premještanje serverskih opterećenja na Linux ili druge sisteme kada nije neophodno koristiti macOS, rezervirajući Mac računare za verzije, specifične testove ili zadatke na radnoj površini.
Za kućne korisnike, preporuke su mnogo manje drastične. Dovoljno je da povremeno ponovo pokrenite MacNa primjer, jednom mjesečno ili tokom ažuriranja sistema. Osim što sprječava grešku, ova navika pomaže u čišćenju pozadinskih procesa i malih curenja memorije koja se akumuliraju tokom vremena.
Je li to problem sigurnosti ili stabilnosti?
Za sada, konsenzus među tehničkom zajednicom je da tzv. „49-dnevna greška na internetu u macOS-u“ To je prvenstveno problem stabilnosti i dostupnosti, a ne ranjivosti koja omogućava direktnu kontrolu nad opremom.
Nema naznaka da bi napadač mogao iskoristiti ovu ranjivost za izvršavanje proizvoljnog koda ili povećanje privilegija. Greška se ponaša više kao... stanje prisilnog uskraćivanja uslugeKada brojač pređe granicu i TCP stek prestane reciklirati veze, sam sistem ostaje bez kapaciteta za prihvatanje novih komunikacija.
To ne znači da je uticaj manji. Za kompanije koje posluju Usluge dostupne 24/7 na macOS-uNestanak novih mrežnih veza može dovesti do prekida usluge, poremećaja u kritičnim procesima i gubitka povjerenja kupaca i korisnika. Čak i ako je rješenje jednostavno poput ponovnog pokretanja, šteta je već učinjena ako se ne otkrije na vrijeme.
Problem je prijavljen Appleu od strane Photona i drugih zainteresovanih strana, ali, za sada, nije javno dokumentovano specifičan flaster Ovo je obrađeno u bilješkama o ažuriranju macOS-a. Među mogućim osnovnim rješenjima koja se spominju su korištenje 64-bitnih brojača ili značajnije promjene kernela, ali svaka takva modifikacija zahtijeva vrijeme, testiranje i temeljitu validaciju.
Dok čekaju moguće službeno rješenje, mnogi administratori su odlučili tretirati ovu grešku kao još jedan operativni rizik: nešto što je ublažava procedurama i praćenjembaš kao što se radi i s drugim ograničenjima kapaciteta ili planiranim prozorima za održavanje.
Ova mana u konačnici služi kao podsjetnik da čak i sistemi uglađeni poput macOS-a imaju skrivene nedostatke. naslijeđena tehnička ograničenja i dizajnerske odluke Ovi problemi se javljaju samo u vrlo specifičnim scenarijima, kao što je održavanje računara u radu gotovo 50 dana bez prekida. Za većinu korisnika, ovo će biti malo više od anegdote, ali za one koji se oslanjaju na Mac računare kao servere ili kritične radne stanice, praćenje vremena rada i zakazivanje ponovnog pokretanja postalo je bitan dio njihove strategije kako bi izbjegli iznenađenja s internetskom vezom.



