Hadba sida ay hawshu u fududaato, marar badan ayaan khaladaad sameeyaa

Hadba sida ay hawshu u fududaato, marar badan ayaan khaladaad sameeyaa

Hawshan yar ayaa soo baxday hal galab oo Jimce ah waxayna ahayd inay qaadato 2-3 daqiiqo oo wakhti ah. Guud ahaan, sida had iyo jeer.

Saaxiibkii ayaa iga codsaday inaan ku hagaajiyo qoraalka serverkiisa. Waan sameeyay, oo u dhiibay oo si badheedh ah u tuuray: "Waqtigu waa 5 daqiiqo degdeg ah." U ogolow adeeguhu inuu qabto isku-xidhka laftiisa. Nus saac, saacad ayaa dhaaftay, weli wuu fuushan yahay oo si deggan u habaaray.

“Doqon! - Waxaan u maleeyay, inaan u wareego console-ka server-ka - waayahay, waxaan qaadan doonaa nasasho dhowr daqiiqo oo kale.

Aan aragno ntp, rdate, sdwdate lama rakibin timesyncd naafo ah oo aan soconayn.

# timedatectl
      Local time: Sun 2019-08-25 20:44:39 +03
  Universal time: Sun 2019-08-25 17:44:39 UTC
        RTC time: Sun 2019-08-25 17:39:52
       Time zone: Europe/Minsk (+03, +0300)
     NTP enabled: no
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a

Halkan waxaan isla markiiba ogaan doonaa in waqtiga qalabku uu sax yahay: way sahlanaan doontaa in la sii socdo.

Waa halka ay ka bilaabmeen khaladaadkii isdaba jooga ahaa.

Qaladka koowaad. Isku kalsoonaanta

Riix-clack...

# systemctl enable systemd-timesyncd.service && systemctl start systemd-timesyncd.service && ntpdate 0.ru.pool.ntp.org && timedatectl set-ntp on && timedatectl
25 Aug 21:00:10 ntpdate[28114]: adjust time server 195.210.189.106 offset -249.015251 sec
      Local time: Sun 2019-08-25 21:00:10 +03
  Universal time: Sun 2019-08-25 18:00:10 UTC
        RTC time: Sun 2019-08-25 18:00:10
       Time zone: Europe/Minsk (+03, +0300)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
      DST active: n/a

Wax kastaa way fiican yihiin, wakhtiga waa la wada shaqaynayaa, wakhtiga nidaamku waxa uu la mid yahay midka qalabka. "Qaado," ayaan ku idhi oo ku soo noqday meheraddaydii.

“Maxay qaado? - saaxiibkii wuu xanaaqay. "Waa isku waqti!"

Inta badan oo aad xalliso mashaakilaadka caadiga ah, fikirkaagu wuu baaba'ayaa oo uma malaynaysid in xaalada boqolaad ama kunaad ay ka duwanaan doonto, laakiin maaha markan.

# timedatectl
      Local time: Sun 2019-08-25 21:09:15 +03
  Universal time: Sun 2019-08-25 18:09:15 UTC
        RTC time: Sun 2019-08-25 18:05:04
       Time zone: Europe/Minsk (+03, +0300)
     NTP enabled: yes
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a

Wakhtiga nidaamka waa khalad mar kale.

Aan mar kale isku dayno:

# ntpdate 0.ru.pool.ntp.org && timedatectl && sleep 1 && timedatectl
25 Aug 21:07:37 ntpdate[30350]: step time server 89.175.20.7 offset -249.220828 sec
      Local time: Sun 2019-08-25 21:07:37 +03
  Universal time: Sun 2019-08-25 18:07:37 UTC
        RTC time: Sun 2019-08-25 18:07:37
       Time zone: Europe/Minsk (+03, +0300)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
      DST active: n/a
      Local time: Sun 2019-08-25 21:11:46 +03
  Universal time: Sun 2019-08-25 18:11:46 UTC
        RTC time: Sun 2019-08-25 18:07:37
       Time zone: Europe/Minsk (+03, +0300)
     NTP enabled: yes
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a

Aynu u samayno si ka duwan:

# date -s "2019-08-25 21:10:30" && date && sleep 1 && timedatectl
Sun Aug 25 21:10:30 +03 2019
Sun Aug 25 21:10:30 +03 2019
      Local time: Sun 2019-08-25 21:14:36 +03
  Universal time: Sun 2019-08-25 18:14:36 UTC
        RTC time: Sun 2019-08-25 18:10:30
       Time zone: Europe/Minsk (+03, +0300)
     NTP enabled: yes
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a

Oo sida tan:

# hwclock --hctosys && timedatectl && sleep 1 && timedatectl
      Local time: Sun 2019-08-25 21:11:31 +03
  Universal time: Sun 2019-08-25 18:11:31 UTC
        RTC time: Sun 2019-08-25 18:11:31
       Time zone: Europe/Minsk (+03, +0300)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
      DST active: n/a
      Local time: Sun 2019-08-25 21:15:36 +03
  Universal time: Sun 2019-08-25 18:15:36 UTC
        RTC time: Sun 2019-08-25 18:11:32
       Time zone: Europe/Minsk (+03, +0300)
     NTP enabled: yes
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a

Wakhtiga waxa loo dejiyay ilbiriqsiyo kala qaybsanaan ah, oo isla markiiba bilaabay inuu "degdejiyo" mar kale.

Isla mar ahaantaana, diiwaanka, wakhtiga isbeddelka buug-gacmeedka, waxaan aragnaa kaliya warbixinnada nidaamka ee sheegaya in wakhtigu isbeddelay, siday u kala horreeyaan, jihada saxda ah / khaldan iyo marmar. Dib u habayn laga bilaabo systemd-timesyncd.

Aug 25 21:18:51 wisi systemd[1]: Time has been changed
Aug 25 21:18:51 wisi systemd-timesyncd[29258]: System time changed. Resyncing.
Aug 25 21:18:51 wisi systemd[1187]: Time has been changed
Aug 25 21:18:51 wisi systemd[1]: Time has been changed
Aug 25 21:18:51 wisi systemd[1187]: Time has been changed

halkan

# ps afx | grep "[1]187"
 1187 ?        Ss     0:02 /lib/systemd/systemd --user

Halkaa marka ay marayso, waxa ay mar hore ahayd lagama maarmaan in la raadiyo sababta, laakiin in ka badan 18 sano ee maamulka, maskaxdu waxay ururisay tirakoob ku saabsan khaladaadka "waqtiga" iyo, ka baxsan caadadii, mar kale eedayn wada shaqaynta.
Aynu si buuxda u daminno.

# timedatectl set-ntp off && systemctl stop systemd-timesyncd.service
# hwclock --hctosys && timedatectl && sleep 1 && timedatectl
      Local time: Sun 2019-08-25 21:25:40 +03
  Universal time: Sun 2019-08-25 18:25:40 UTC
        RTC time: Sun 2019-08-25 18:25:40
       Time zone: Europe/Minsk (+03, +0300)
     NTP enabled: no
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a
      Local time: Sun 2019-08-25 21:29:31 +03
  Universal time: Sun 2019-08-25 18:29:31 UTC
        RTC time: Sun 2019-08-25 18:25:41
       Time zone: Europe/Minsk (+03, +0300)
     NTP enabled: no
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a

iyo in loda

Aug 25 21:25:40 wisi systemd[1]: Time has been changed
Aug 25 21:25:40 wisi systemd[1187]: Time has been changed
Aug 25 21:29:30 wisi systemd[1]: Time has been changed
Aug 25 21:29:30 wisi systemd[1187]: Time has been changed

Dib u habayn waa la waayay oo haddii kale logu waa daahir.

Hubinta gunaanadka tcpdump on dekedda 123 on dhammaan interfaces. Ma jiraan wax codsiyo ah, laakiin wakhtigu weli wuu sii socdaa.

Khalad laba Degdeg

Saacad ayaa ka hartay dhamaadka usbuuca shaqada, mana rabo in aan ka tago dhamaadka wiigga iyada oo ay jirto dhibaato yar oo aan la xalin (ha u fiirsan wakhtiga code-ka, maqaalka waxaa la qoray maalmaha soo socda). ).
Oo halkan mar labaad, halkii aan raadin lahaa sababta, waxaan bilaabay inaan isku dayo inaan la imaado sharaxaad natiijada. Waxaan leeyahay "ikhtiraac" sababtoo ah si kasta oo macquul ah sharaxaadda natiijadu, waa hab khaldan oo lagu xalliyo dhibaatada.

Seerarkani waa adeegaha qulqulka leh wuxuuna u beddelaa qulqulka DVB-S2 IP. Dulmiga DVB-S waxa uu ka kooban yahay shaambad-beegyo, sidaa awgeed qaata-qaadayaasha, kuwa badan-ka-qaadayaasha, kuwa is-daba-mareenka ah iyo telefishinnada ayaa inta badan isticmaala si ay u wada shaqeeyaan saacadda nidaamka. Dareewalada guddiga DVB-S waxaa lagu dhex dhisay kernel-ka, marka sida ugu dhaqsiyaha badan ee lagu hubin karo in durdurrada DVB-S2 la saaro waa in la gooyo fiilooyinka ka imaanaya "taarikada". Nasiib wanaag, server-ka ayaa ka dambeeya gidaarka, sidaas darteed ha ahaato.

Dabcan, haddii logu ay ka kooban yihiin waxa ay tahay in ay jiraan, tani ma dhicin, laakiin wax badan oo ku saabsan taas, mar kale, dhamaadka maqaalka.

Waa hagaag, maadaama aan mar hore ka saarnay dhammaan calaamadaha dayax-gacmeedka, waxaan sidoo kale ka saari doonaa kuwa dhulka - isla mar ahaantaana waxaan soo saareynaa dhammaan fiilooyinka shabakadda. Seerfarku waxa uu noqdaa mid ka go'a dunida dibadda waxana uu si buuxda u shaqeeyaa, laakiin saacadda nidaamku weli waa degdeg.

Toddobaadkii shaqadu wuu dhammaaday, arrinta taariikhda/wakhtiga lafteedana maaha mid muhiim ah, markaa waxaad kaliya tagi kartaa guriga, laakiin halkan waxaan sameeyaa khalad cusub.

Khalad saddex La taliyayaal

Marna! Weligaa ha weydiin su'aalo ku saabsan golayaasha iyo goobaha gaarka ah (a la stackoverflow) haddii jawaabta ay u baahan tahay wax ka badan barashada bogga koowaad ee Google iyo akhrinta hal bog oo nin ah.

Waxay dib kuugu soo diri doonaan Google, akhriyi doona isla nin isku mid ah waxayna si caan ah u sharxi doonaan xeerarka madasha/site, laakiin kuma siin doonaan jawaab.

Waa kuwan qaar ka mid ah qodobbada ujeeddada:

  • ma jiro qof aan adiga ahayn oo ogaan kara dhibaatada sidoo kale;
  • Qofna ma samayn karo imtixaano la mid ah xaaladahaaga

iyo shakhsi ahaan:

  • waxaa laga yaabaa inaadan bixin dhammaan fikradaha lagu xallinayo dhibaatada, sababtoo ah waxaad horay ula timid jihada "saxda ah" oo waxaad soo bandhigaysaa nuxurka arrinka diiradda saaraya;
  • Horjoogaha (Moderator, old-timer, admin) had iyo jeer waa sax, haddii horjooguhu khaldan yahay... si fiican, waad ogtahay...

Haddii, marka aad ka jawaabayso faallooyinka, aad ku sii jirto xadka erayada faafreebka ah, markaa waxaad leedahay neerfo adag.

go'aanka

Looma baahna in hawlaha loo qaybiyo mid fudud oo adag.

Waxaan joojineynaa ku tiirsanaanta khibradeena, tirakoobyada, lataliyeyaasha waxaanan bilaabeynaa inaanan "sharaxin" natiijada kama dambaysta ah, laakiin inaan si joogto ah u raadino sababta.

Maaddaama uu qof cayimay wakhtiga, nidaamka u dhigma wacitaanka waa inuu dhacaa.

Sida dukumeentiyada software-ka dukumeentiyada ugu fiican yihiin ilaha, sidaas oo kale maamulka nidaamka kaaliyaha ugu fiican waa hantidhawrka, kiiskeena hantidhawr.

Daqiiqad shaki ahWaxaan dhex maray mana, laakiin si buuxda uma hubin in waqtiga Linux la dejin karo oo keliya saacada_saacda и maalinta sabtida, markaa imtixaankii ugu horreeyay waxaan doortay dhammaan wicitaannada "ku habboon":

# man syscalls | col | grep -F '(2)' | grep -vE '(:|;)' | grep -E '(time|date|clock)' | sed "s/(2).*//" | xargs -I SYSCALL echo "-S SYSCALL " | xargs echo
-S adjtimex -S clock_adjtime -S clock_getres -S clock_gettime -S clock_nanosleep -S clock_settime -S futimesat -S getitimer -S gettimeofday -S mq_timedreceive -S mq_timedsend -S rt_sigtimedwait -S s390_runtime_instr -S setitimer -S settimeofday -S stime -S time -S timer_create -S timer_delete -S timer_getoverrun -S timer_gettime -S timer_settime -S timerfd_create -S timerfd_gettime -S timerfd_settime -S times -S utime -S utimensat -S utimes

iyo tuurid s390_runtime_instr, stime, timerfd_create, kaas auditctl ma aqoonsanin, markii hore waxa uu bilaabay xisaab xidhka foomka:

auditctl -a exit,always -S adjtimex -S clock_adjtime -S clock_getres -S clock_nanosleep -S clock_settime -S futimesat -S getitimer -S gettimeofday -S mq_timedreceive -S mq_timedsend -S rt_sigtimedwait -S semtimedop -S setitimer -S settimeofday -S time -S timer_create -S timer_delete -S timer_getoverrun -S timer_gettime -S timer_settime -S timerfd_gettime -S timerfd_settime -S times -S utime -S utimensat -S utimes

Ka dib markii aan hubiyay in aysan jirin qoraallo kale oo ku yaala goobaha log ee aan xiiseynayo qaylodhaan Labadan ka sokow, iyaga kaliya ayaan u sii isticmaalay.

Samaynta nidaamka xisaab xidhka wicitaanka saacada_saacda и maalinta sabtida iskuna day inaad bedesho taariikhda:

# auditctl -a exit,always -S clock_settime -S settimeofday && date -s "2019-08-22 12:10:00" && sleep 5 && auditctl -D

Dib u dhac shan ilbiriqsi ah ayaa lagu daraa si "parasite-kayaga" loo dammaanad qaado inuu saxo waqtiga.

Bal aan eegno warbixinta:

# aureport -s -i

Syscall Report
=======================================
# date time syscall pid comm auid event
=======================================
Warning - freq is non-zero and incremental flushing not selected.
1. 08/22/2019 12:10:00 settimeofday 3088 chkcache_proces root 479630
2. 08/26/2019 09:37:06 clock_settime 1538 date root 479629

Halkan waxaan ku aragnaa our taariikhda oo aan la garanayn chkcache_processes. Waxay ku dhammaatay warbixinta kor ku xusan sababtoo ah aureport waxay soo saartay taariikhda marka laga beddelayo binary, dhacdadana waxay dhacday waqtigii aan dejinay taariikhda -s "2019-08-22 12:10:00".
Yaa dhalay?

# ausearch -sc settimeofday --comm "chkcache_proces"
----
time->Thu Aug 22 12:10:00 2019
type=PROCTITLE msg=audit(1566465000.000:479630): proctitle="/usr/local/bin/oscam"
type=SYSCALL msg=audit(1566465000.000:479630): arch=c000003e syscall=164 success=yes exit=0 a0=7fde0dfc6e60 a1=0 a2=136cf a3=713ba56 items=0 ppid=3081 pid=3088 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts20 ses=68149 comm="chkcache_proces" exe="/usr/local/bin/oscam" key=(null)

/usr/local/bin/oscam - dulinkayaga waa la helay. Inkasta oo ay jirto habdhaqankeeda "xaasidnimo", waa wax aan suurtagal ahayn in la diido nidaamka gelitaanka shuruudaha, laakiin weli waxaan jeclaan lahaa inaan ogaado oscam, WTF?

Jawaabta si degdeg ah ayaa looga helaa codes isha:

#if defined(CLOCKFIX)
if (tv.tv_sec > lasttime.tv_sec || (tv.tv_sec == lasttime.tv_sec && tv.tv_usec >= lasttime.tv_usec)) // check for time issues!
{
  lasttime = tv; // register this valid time
}
  else
{
  tv = lasttime;
  settimeofday(&tv, NULL); // set time back to last known valid time
  //fprintf(stderr, "*** WARNING: BAD TIME AFFECTING WHOLE OSCAM ECM HANDLING, SYSTEMTIME SET TO LAST KNOWN VALID TIME **** n");
}

Sidee u qurux badan halkan ka faallooday line digniin...

Source: www.habr.com

Add a comment