์ผ์ด ๋‹จ์ˆœํ• ์ˆ˜๋ก ์‹ค์ˆ˜๋ฅผ ๋” ์ž์ฃผ ํ•˜๊ฒŒ ๋œ๋‹ค

์ผ์ด ๋‹จ์ˆœํ• ์ˆ˜๋ก ์‹ค์ˆ˜๋ฅผ ๋” ์ž์ฃผ ํ•˜๊ฒŒ ๋œ๋‹ค

์ด ์‚ฌ์†Œํ•œ ์ž‘์—…์€ ์–ด๋Š ๊ธˆ์š”์ผ ์˜คํ›„์— ๋ฐœ์ƒํ–ˆ์œผ๋ฉฐ 2~3๋ถ„ ์ •๋„ ์†Œ์š”๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์–ธ์ œ๋‚˜ ๊ทธ๋ ‡๋“ฏ์ด.

๋™๋ฃŒ๊ฐ€ ๋‚˜์—๊ฒŒ ์ž์‹ ์˜ ์„œ๋ฒ„์— ์žˆ๋Š” ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ˆ˜์ •ํ•ด ๋‹ฌ๋ผ๊ณ  ์š”์ฒญํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ํ•ด๋‚ด๊ณ  ๊ทธ์—๊ฒŒ ๊ฑด๋„ค์ฃผ๋‹ค๊ฐ€ ์‹ค์ˆ˜๋กœ ๋–จ์–ด๋œจ๋ ธ๋‹ค: "์‹œ๊ฐ„์€ 5๋ถ„ ๋น ๋ฅด๋‹ค." ์„œ๋ฒ„๊ฐ€ ๋™๊ธฐํ™” ์ž์ฒด๋ฅผ ์ฒ˜๋ฆฌํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. XNUMX๋ถ„, XNUMX์‹œ๊ฐ„์ด ์ง€๋‚ฌ์ง€๋งŒ ๊ทธ๋Š” ์—ฌ์ „ํžˆ ์ˆจ์„ ํ—๋–ก์ด๋ฉฐ ์กฐ์šฉํžˆ ์š•์„ค์„ ํผ๋ถ€์—ˆ๋‹ค.

"๋ฉ์ฒญํ•œ! โ€” ์„œ๋ฒ„ ์ฝ˜์†”๋กœ ์ „ํ™˜ํ•˜๋ฉด์„œ โ€” ์•Œ์•˜์–ด, ๋ช‡ ๋ถ„ ๋” ์‰ฌ๊ฒ ์Šต๋‹ˆ๋‹ค."

์šฐ๋ฆฌ๋Š” ๋ณธ๋‹ค ntp, rdate, sdwdate ์„ค์น˜๋˜์ง€ ์•Š์Œ ์‹œ๊ฐ„ ๋™๊ธฐํ™” ๋น„ํ™œ์„ฑํ™”๋˜์–ด ์‹คํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

# 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

์—ฌ๊ธฐ์„œ๋Š” ํ•˜๋“œ์›จ์–ด ์‹œ๊ฐ„์ด ์ •ํ™•ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์ฆ‰์‹œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋” ์‰ฝ๊ฒŒ ํƒ์ƒ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ๋ถ€ํ„ฐ ์ผ๋ จ์˜ ์‹ค์ˆ˜๊ฐ€ ์‹œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ฒซ ๋ฒˆ์งธ ์‹ค์ˆ˜. ์ž์‹ ๊ฐ

์ฐฐ์นต...

# 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

๋ชจ๋“  ๊ฒƒ์ด ์ •์ƒ์ด๊ณ  ์‹œ๊ฐ„์ด ๋™๊ธฐํ™”๋˜์—ˆ์œผ๋ฉฐ ์‹œ์Šคํ…œ ์‹œ๊ฐ„์ด ํ•˜๋“œ์›จ์–ด ์‹œ๊ฐ„๊ณผ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค. โ€œ๊ฐ€์ ธ๊ฐ€์„ธ์š”.โ€ ๋‚˜๋Š” ๋งํ•˜๊ณ  ์‚ฌ์—…์œผ๋กœ ๋Œ์•„๊ฐ”๋‹ค.

โ€œ๋ฌด์—‡์„ ๊ฐ€์ ธ๊ฐ€? - ๋™๋ฃŒ๊ฐ€ ๋ถ„๊ฐœํ–ˆ์Šต๋‹ˆ๋‹ค. โ€œ๊ฐ™์€ ์‹œ๊ฐ„์ด์—์š”!โ€

์ „ํ˜•์ ์ธ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ฉด ํ• ์ˆ˜๋ก ์ƒ๊ฐ์€ ์ ์  ๋” ํ๋ ค์ง€๊ณ  ๋ฐฑ ๋ฒˆ์งธ, ์ฒœ ๋ฒˆ์งธ ์ƒํ™ฉ์€ ๋‹ฌ๋ผ์งˆ ๊ฒƒ์ด๋ผ๊ณ  ๋” ์ด์ƒ ์ƒ๊ฐํ•˜์ง€ ์•Š์ง€๋งŒ ์ด๋ฒˆ์—๋Š” ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

# 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

์‹œ์Šคํ…œ ์‹œ๊ฐ„์ด ๋˜ ํ‹€๋ ธ์–ด์š”.

๋‹ค์‹œ ํ•ด๋ณด์ž:

# 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

๋‹ค๋ฅด๊ฒŒ ํ•ด๋ณด์ž:

# 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

๊ทธ๋ž˜์„œ :

# 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

์‹œ๊ฐ„์€ XNUMX์ดˆ ๋‹จ์œ„๋กœ ์„ค์ •๋˜๊ณ  ์ฆ‰์‹œ ๋‹ค์‹œ "๋Œ์ง„"ํ•˜๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

๋™์‹œ์— ๋กœ๊ทธ์—๋Š” ์ด๋Ÿฌํ•œ ์ˆ˜๋™ ๋ณ€๊ฒฝ ์‹œ ์‹œ๊ฐ„์ด ๊ฐ๊ฐ ์˜ฌ๋ฐ”๋ฅธ/์ž˜๋ชป๋œ ๋ฐฉํ–ฅ์œผ๋กœ ๋ณ€๊ฒฝ๋˜์—ˆ๋‹ค๋Š” ์‹œ์Šคํ…œ ๋ณด๊ณ ์„œ๋งŒ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์žฌ๋™๊ธฐํ™” ์ค‘ 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

์—ฌ๊ธฐ์—

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

์ด ์‹œ์ ์—์„œ ์ด๋ฏธ ์›์ธ์„ ์ฐพ์•„์•ผํ–ˆ์ง€๋งŒ 18 ๋…„ ๋™์•ˆ ํˆฌ์—ฌํ•˜๋ฉด์„œ ๋‡Œ๋Š” "์‹œ๊ฐ„"์˜ค๋ฅ˜์— ๋Œ€ํ•œ ํ†ต๊ณ„๋ฅผ ์ถ•์ ํ–ˆ์œผ๋ฉฐ ์Šต๊ด€์ ์œผ๋กœ ๋‹ค์‹œ ๋™๊ธฐํ™”๋ฅผ ๋น„๋‚œํ•ฉ๋‹ˆ๋‹ค.
์™„์ „ํžˆ ๋„์ž.

# 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

๊ทธ๋ฆฌ๊ณ  ๋กœ๊ทธ์—๋Š”

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

์žฌ๋™๊ธฐํ™” ์ค‘ ์‚ฌ๋ผ์ง€๊ณ  ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋กœ๊ทธ๊ฐ€ ๊นจ๋—ํ•ด์ง‘๋‹ˆ๋‹ค.

๊ฒฐ๋ก  ํ™•์ธ TCP ๋คํ”„ ๋ชจ๋“  ์ธํ„ฐํŽ˜์ด์Šค์˜ ํฌํŠธ 123์—์„œ. ์š”์ฒญ์€ ์—†์ง€๋งŒ ์•„์ง ์‹œ๊ฐ„์ด ํ๋ฅด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ค๋ฅ˜ XNUMX. ์„œ๋‘๋ฅด๋‹ค

์ด๋ฒˆ์ฃผ ํ‡ด๊ทผ๊นŒ์ง€ ํ•œ์‹œ๊ฐ„ ๋‚จ์•˜๋Š”๋ฐ, ์‚ฌ์†Œํ•œ ๋ฌธ์ œ๋กœ ์ฃผ๋ง์„ ๋– ๋‚˜๊ธฐ ์‹ซ๋‹ค. ).
๊ทธ๋ฆฌ๊ณ  ์—ฌ๊ธฐ์„œ๋„ ์ด์œ ๋ฅผ ์ฐพ๋Š” ๋Œ€์‹  ๊ฒฐ๊ณผ์— ๋Œ€ํ•œ ์„ค๋ช…์„ ์ƒ๊ฐํ•ด ๋‚ด๋ ค๊ณ  ๋…ธ๋ ฅํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ "๋ฐœ๋ช…ํ•˜๋‹ค"๊ณ  ๋งํ•˜๋Š” ์ด์œ ๋Š” ๊ฒฐ๊ณผ์— ๋Œ€ํ•œ ์„ค๋ช…์ด ์•„๋ฌด๋ฆฌ ๋…ผ๋ฆฌ์ ์ด๋”๋ผ๋„ ๋ฌธ์ œ ํ•ด๊ฒฐ์— ์žˆ์–ด์„œ๋Š” ๊ฒฐํ•จ์ด ์žˆ๋Š” ์ ‘๊ทผ ๋ฐฉ์‹์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ด ์„œ๋ฒ„๋Š” ์ŠคํŠธ๋ฆฌ๋ฐ ์„œ๋ฒ„์ด๋ฉฐ DVB-S2 ์ŠคํŠธ๋ฆผ์„ IP๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค. DVB-S ์ŠคํŠธ๋ฆผ์—๋Š” ํƒ€์ž„์Šคํƒฌํ”„๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ์ˆ˜์‹ ๊ธฐ, ๋ฉ€ํ‹ฐํ”Œ๋ ‰์„œ, ์Šคํฌ๋žจ๋ธ”๋Ÿฌ ๋ฐ TV๋Š” ์ข…์ข… ์ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹œ์Šคํ…œ ํด๋Ÿญ์„ ๋™๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค. DVB-S ๋ณด๋“œ ๋“œ๋ผ์ด๋ฒ„๋Š” ์ปค๋„์— ๋‚ด์žฅ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ DVB-S2 ์ŠคํŠธ๋ฆผ์„ ์ œ๊ฑฐํ•˜๋Š” ๊ฐ€์žฅ ๋น ๋ฅธ ๋ฐฉ๋ฒ•์€ "ํ”Œ๋ ˆ์ดํŠธ"์—์„œ ๋‚˜์˜ค๋Š” ์ผ€์ด๋ธ”์„ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹คํ–‰์Šค๋Ÿฝ๊ฒŒ๋„ ์„œ๋ฒ„๋Š” ๋ฒฝ ๋’ค์— ์žˆ์œผ๋ฏ€๋กœ ๊ทธ๋ ‡๊ฒŒ ํ•˜์‹ญ์‹œ์˜ค.

๋ฌผ๋ก , ๋กœ๊ทธ์— ์žˆ์–ด์•ผ ํ•  ๋‚ด์šฉ์ด ํฌํ•จ๋˜์–ด ์žˆ์—ˆ๋‹ค๋ฉด ์ด๋Ÿฐ ์ผ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š์•˜์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๊ธฐ์‚ฌ ๋๋ถ€๋ถ„์—์„œ ๋‹ค์‹œ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

๊ธ€์Ž„, ์šฐ๋ฆฌ๋Š” ์ด๋ฏธ ๋ชจ๋“  ์œ„์„ฑ ์‹ ํ˜ธ๋ฅผ ์ œ๊ฑฐํ–ˆ์œผ๋ฏ€๋กœ ์ง€์ƒํŒŒ ์‹ ํ˜ธ๋„ ์ œ๊ฑฐํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋™์‹œ์— ๋ชจ๋“  ๋„คํŠธ์›Œํฌ ์ผ€์ด๋ธ”์„ ๋ฝ‘์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„๋Š” ์™ธ๋ถ€ ์„ธ๊ณ„์™€ ๋‹จ์ ˆ๋˜์–ด ์™„์ „ํžˆ ์ž์œจ์ ์œผ๋กœ ์ž‘๋™ํ•˜์ง€๋งŒ ์‹œ์Šคํ…œ ์‹œ๊ณ„๋Š” ์—ฌ์ „ํžˆ ์„œ๋‘๋ฅด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ผ์ฃผ์ผ ๊ทผ๋ฌด๋Š” ๋๋‚ฌ๊ณ  ๋‚ ์งœ/์‹œ๊ฐ„ ๋ฌธ์ œ ์ž์ฒด๋Š” ํฌ๊ฒŒ ์ค‘์š”ํ•˜์ง€ ์•Š์œผ๋‹ˆ ๊ทธ๋ƒฅ ์ง‘์— ๊ฐ€๋„ ๋˜์ง€๋งŒ ์—ฌ๊ธฐ์„œ ๋˜ ์ƒˆ๋กœ์šด ์‹ค์ˆ˜๋ฅผ ๋ฒ”ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์˜ค๋ฅ˜ XNUMX. ๊ณ ๋ฌธ

์ ˆ๋Œ€! ๋‹ต๋ณ€์ด Google์˜ ์ฒซ ๋ฒˆ์งธ ํŽ˜์ด์ง€๋ฅผ ์—ฐ๊ตฌํ•˜๊ณ  ๋งจ ํŽ˜์ด์ง€ ํ•˜๋‚˜๋ฅผ ์ฝ๋Š” ๊ฒƒ ์ด์ƒ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ํฌ๋Ÿผ ๋ฐ ์ผ๋ฐ˜ ์ „๋ฌธ(la stackoverflow) ์‚ฌ์ดํŠธ์— ์งˆ๋ฌธํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

๊ทธ๋“ค์€ ๋‹น์‹ ์„ ๋‹ค์‹œ ๊ตฌ๊ธ€๋กœ ๋ณด๋‚ด๊ณ , ๊ฐ™์€ ์‚ฌ๋žŒ์„ ์ฝ๊ณ , ํฌ๋Ÿผ/์‚ฌ์ดํŠธ์˜ ๊ทœ์น™์„ ๋Œ€์ค‘์ ์œผ๋กœ ์„ค๋ช…ํ•  ๊ฒƒ์ด์ง€๋งŒ ๋‹น์‹ ์—๊ฒŒ ๋Œ€๋‹ต์„ ์ฃผ์ง€๋Š” ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ๋ช‡ ๊ฐ€์ง€ ๊ฐ๊ด€์ ์ธ ์š”์†Œ์ž…๋‹ˆ๋‹ค.

  • ๋‹น์‹  ์™ธ์—๋Š” ๋ˆ„๊ตฌ๋„ ๋ฌธ์ œ๋ฅผ ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  • ๋ˆ„๊ตฌ๋„ ๋‹น์‹ ๊ณผ ๊ฐ™์€ ์กฐ๊ฑด์—์„œ ํ…Œ์ŠคํŠธ๋ฅผ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค

๊ทธ๋ฆฌ๊ณ  ์ฃผ๊ด€์ :

  • ์ด๋ฏธ '์˜ฌ๋ฐ”๋ฅธ' ๋ฐฉํ–ฅ์„ ์ œ์‹œํ•˜๊ณ  ์ด์— ์ดˆ์ ์„ ๋งž์ถฐ ๋ฌธ์ œ์˜ ๋ณธ์งˆ์„ ์ œ์‹œํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ์œ„ํ•œ ๋ชจ๋“  ์˜๊ฒฌ์„ ์ œ์‹œํ•˜์ง€ ๋ชปํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ฐ๋…(๋ชจ๋”๋ ˆ์ดํ„ฐ, ๊ตฌ์ง์ž, ๊ด€๋ฆฌ์ž)์€ ํ•ญ์ƒ ์˜ณ์Šต๋‹ˆ๋‹ค. ๊ฐ๋…์ด ํ‹€๋ฆฌ๋ฉด... ๊ธ€์Ž„์š”...

๋Œ“๊ธ€์— ๋‹ตํ•  ๋•Œ ๊ฒ€์—ด๋œ ์–ดํœ˜์˜ ํ•œ๊ณ„ ๋‚ด์— ๋จธ๋ฌผ๋ €๋‹ค๋ฉด ๋‹น์‹ ์€ ๊ฐ•ํ•œ ์‹ ๊ฒฝ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ฒฐ์ •

์ž‘์—…์„ ๋‹จ์ˆœํ•˜๊ณ  ๋ณต์žกํ•˜๊ฒŒ ๋‚˜๋ˆŒ ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ๊ฒฝํ—˜, ํ†ต๊ณ„, ์กฐ์–ธ์ž์— ๋Œ€ํ•œ ์˜์กด์„ ์ค‘๋‹จํ•˜๊ณ  ์ตœ์ข… ๊ฒฐ๊ณผ๋ฅผ "์„ค๋ช…"ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ง€์†์ ์œผ๋กœ ์ด์œ ๋ฅผ ์ฐพ๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์‹œ๊ฐ„์„ ์„ค์ •ํ•ด ๋†“์•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‹น ์‹œ์Šคํ…œ ์ฝœ์ด ๋ฐœ์ƒํ•ด์•ผ ํ•œ๋‹ค.

์†Œํ”„ํŠธ์›จ์–ด ๋ฌธ์„œ์—์„œ ๊ฐ€์žฅ ์ข‹์€ ๋ฌธ์„œ๊ฐ€ ์†Œ์Šค์ธ ๊ฒƒ์ฒ˜๋Ÿผ ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์—์„œ ๊ฐ€์žฅ ์ข‹์€ ์กฐ๋ ฅ์ž๋Š” ๊ฐ์‚ฌ์ž…๋‹ˆ๋‹ค. ๊ฐ์‚ฌ.

์˜์‹ฌ์˜ ์ˆœ๊ฐ„๋งˆ๋‚˜๋ฅผ ์‚ดํŽด๋ดค์ง€๋งŒ Linux์—์„œ๋งŒ ์‹œ๊ฐ„์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์™„์ „ํžˆ ํ™•์‹ ํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. clock_settime ะธ ์˜ค๋Š˜์˜ ์„ค์ • ์‹œ๊ฐ„, ๊ทธ๋ž˜์„œ ์ฒซ ๋ฒˆ์งธ ํ…Œ์ŠคํŠธ์—์„œ๋Š” "์ ์ ˆํ•œ" ํ˜ธ์ถœ์„ ๋ชจ๋‘ ์„ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค.

# 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

๊ทธ๋ฆฌ๊ณ  ํ๊ธฐ s390_runtime_instr, stime, timerfd_create์–ด๋Š ์ชฝ auditctl ์ด๋ฅผ ์ธ์‹ํ•˜์ง€ ๋ชปํ•˜๊ณ  ์ฒ˜์Œ์—๋Š” ๋‹ค์Œ ํ˜•์‹์œผ๋กœ ๊ฐ์‚ฌ๋ฅผ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

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

๋‚ด๊ฐ€ ๊ด€์‹ฌ ์žˆ๋Š” ๋กœ๊ทธ ์œ„์น˜์— ๋‹ค๋ฅธ ๋กœ๊ทธ๊ฐ€ ์—†๋Š”์ง€ ํ™•์ธํ•œ ํ›„ ์‹œ์Šคํ…œ ํ˜ธ์ถœ ์ด ๋‘ ๊ฐ€์ง€ ์™ธ์—๋Š” ์ด๊ฒƒ๋“ค๋งŒ ๋” ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

์‹œ์Šคํ…œ ํ˜ธ์ถœ ๊ฐ์‚ฌ ์‹คํ–‰ clock_settime ะธ ์˜ค๋Š˜์˜ ์„ค์ • ์‹œ๊ฐ„ ๋‚ ์งœ๋ฅผ ๋ณ€๊ฒฝํ•ด ๋ณด์„ธ์š”.

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

์šฐ๋ฆฌ์˜ '๊ธฐ์ƒ์ถฉ'์ด ์‹œ๊ฐ„์„ ์ •ํ™•ํ•˜๊ฒŒ ๋งž์ถœ ์ˆ˜ ์žˆ๋„๋ก XNUMX์ดˆ์˜ ์ง€์—ฐ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋ณด๊ณ ์„œ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค:

# 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

์—ฌ๊ธฐ์„œ ์šฐ๋ฆฌ๋Š” ์šฐ๋ฆฌ์˜ ๋ฐ์ดํ„ฐ ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ์—๊ฒŒ ์•Œ๋ ค์ง€์ง€ ์•Š์€ chkcache_processes. aureport๊ฐ€ ๋ฐ”์ด๋„ˆ๋ฆฌ์—์„œ ๋ณ€ํ™˜ํ•  ๋•Œ ์ถœ๋ ฅ์„ ๋‚ ์งœ๋ณ„๋กœ ์ •๋ ฌํ•˜๊ณ  ์šฐ๋ฆฌ๊ฐ€ ์„ค์ •ํ•œ ์‹œ๊ฐ„์— ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์œ„ ๋ณด๊ณ ์„œ์— ํ‘œ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚ ์งœ -s "2019-08-22 12:10:00".
๊ทธ๋ฅผ ๋‚ณ์€ ์‚ฌ๋žŒ์€ ๋ˆ„๊ตฌ์ž…๋‹ˆ๊นŒ?

# 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 - ์šฐ๋ฆฌ ๊ธฐ์ƒ์ถฉ์ด ๋ฐœ๊ฒฌ๋์–ด์š”. "์•…์˜์ ์ธ" ํ–‰์œ„์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์กฐ๊ฑด๋ถ€ ์ ‘๊ทผ ์‹œ์Šคํ…œ์„ ๊ฑฐ๋ถ€ํ•˜๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ๊ทธ๋ž˜๋„ ์•Œ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์˜ค์บ , ๋ฌด์Šจ ์ผ์ด์•ผ?

๋‹ต์€ ๋‹ค์Œ์—์„œ ๋น ๋ฅด๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ถœ์ฒ˜:

#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");
}

์—ฌ๊ธฐ ์™ค์ผ€ ๊ท€์—ฝ๊ฒŒ ์ƒ๊ฒผ์–ด ์ฃผ์„ ์ฒ˜๋ฆฌ๋จ ์„  ๊ฒฝ๊ณ ...

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€