امیرحسین کریم پور
مدیر ارشد توسینسو و متخصص سرویس های مایکروسافت

آموزش رفع مشکل به هم خوردن ساعت سیستم بعد از ری استارت (Restart)

در این مقاله میخواهیم علت بهم خوردن ساعت و تاریخ کامپیوتر ، سرور و یا یک لپ تاپ را بعد از Restart یا Shutdown شدن با هم بررسی کنیم. یکی از دلایل عمده بهم خوردن ساعت سرور کهنه شدن باتری CMOS است. از دلایل دیگر بوجود آمدن این مشکل نیز میتوان به نصب سیستم عامل های ویندوز و لینوکس بصورت Dual boot روی یک کامپیوتر و یا وجود یک Bug در Firmware سرور هایی نظیر HPE ProLiant G9 و یا سری G8 اشاره کرد. در ادامه با معرفی 5 راهکار به برطرف کردن این مشکل میپردازیم ...

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

ذخیره نشدن اطلاعات ساعت و تاریخ سیستم به دلیل ضعیف بودن باتری CMOS

همانطور که پیشتر نیز عنوان کردیم عمده دلیل بهم خوردن ساعت و تاریخ سیستم تمام شدن عمر باتری CMOS است. از این رو اکیدا پیشنهاد می کنم که باتری CMOS را تعویض کنید. این باتری مسئول نگهداری تنظیمات BIOS//UEFI در زمان روشن نبودن سیستم می باشد. تعویض این باتری نیاز به مهارت های تخصصی ندارد و در بیشتر سیستم های خانگی و حتی سازمانی از باتری 3 ولتی CR2032 برای BIOS استفاده می کنند.

اگر تعویض باتری CMOS مشکل را حل نکرد وضعیت Jumper که برای ریست کردن BIOS استفاده می شود را بررسی کنید. Jumper معمولا در کنار باتری CMOS قرار دارد و با اسامی CMOS ، CLEAR ، RESET نامگذاری می شود. بسیاری از افراد به اشتباه وضعیت این Jumper را بصورت RESET قرار میدهند و هر زمان که کامپیوتر روشن شد تنظیمات BIOS ریست می شود پس به این نکته باید توجه کنید و وضعیت Jumper را به حالت نرمال تنظیم کنید. راهکار بعدی برای برطرف کردن این مشکل آپدیت کردن فیرمور BIOS است.

همگام سازی ساعت ویندوز با time.windows.com

اگر ساعت و تاریخ سیستم ویندوزی تان مکررا عوض می شود اول از همه باید Time Zone ای که روی سیستم تنظیم شده است را بررسی کنید و همچنین پارامتر هایی که برای Sync کردن زمان با یک NTP server خارجی تنظیم شده است را نیز باید چک کنید. در ویندوز 10 برای دیدن تنظیمات زمان از مسیر Control Panel -> Clock and Region -> Date and Time میتوانید اقدام کنید. اگر سیستم شما به دامین اکتیودایرکتوری Join نشده است باید تنظیمات Time synchronization را از همین مسیر در تب Internet Time چک کنید. روی این تب کلیک کنید و مطمئن شوید که در کادر Server گزینه time.windows.com انتخاب شده است.

برطرف کردن مشکل بهم خوردن ساعت و تاریخ سیستم های کلاینت Join شده به دامین اکتیودایرکتوری

اگر سیستم تان به دامین اکتیودایرکتوری Join شده است برای برطرف کردن این مشکل باید با معماری و ساختار و عملکرد Time synchronization در Active Directory آشنایی داشته باشید. طرح کلی زیر ساختار Time synchronization در دامین Active Directory را تشریح می کند :

  1. دامین کنترلر root در ساختار Forest اکتیودایرکتوری و یا دامین کنترلر هایی که نقش PDC Emulator را بر عهده دارند نقش یک NTP server را برای سایر دامین کنترلر های دامین بازی می کنند.
  2. سایر Domain Controller ها را زمانشان را با PDC سرور Sync می کنند.
  3. Server ها و Workstation های عضو دامین زمان خودشان را با نزدیک ترین Domain Controller در شبکه با توجه به توپولوژی Active Directory همگام سازی می کنند.
  4. اولین Domain Controller ایجاد شده در دامین ( یا همان PDC خودمان ) که نقش PDC Emulator را بصورت پیش فرض بر عهده دارد زمان خود را هم با خودش میتواند Synchronize کند هم با یک NTP server خارجی با اجرای دستور زیر میتوانید بدانید چه دامین کنترلری نقش PDC Emulator را در دامین بر عهده دارد :
netdom /query fsmo

برای اینکه یک NTP server خارجی برای سرور PDC Emulator معرفی کنید دستور زیر را اجرا کنید :

w32tm /config /manualpeerlist:"0.nl.pool.ntp.org,0x1 1.nl.pool.ntp.org,0x1 2.nl.pool.ntp.org,0x1 3.nl.pool.ntp.org,0x1"

حالا با اجرای دستور زیر این دامین کنترلر را به یک منبع قابل اعتماد برای همگام سازی زمان کلاینت ها تبدیل کنید :

w32tm /config /reliable:yes

با اجرای دستور زیر نیز بایستی یکبار سرویس Windows Time را Restart کنید تا با NTP سرور اینترنتی nl.pool.ntp.org زمانش را Sync کند :

net stop w32time && net start w32time

با استفاده از دستور زیر نیز میتوانید Synchronization source یا بعبارتی منبعی که دامین کنترلر با آن زمانش را همگام سازی می کند را مشاهده کنید :

w32tm /query /peers

با اجرای دستور زیر میتوانید بصورت دستی زمان سرور دامین کنترلر را با NTP server خارجی Sync کنید :

w32tm /resync /rediscover

برطرف کردن مشکل بهم خوردن زمان در سیستم های ویندوزی و لینوکسی زمانی که بصورت Dual Boot روی یک سیستم نصب شده اند.زمانی که شما بعد از بوت شدن سیستم عامل ویندوز به سیستم عامل لینوکس سوئیچ می کنید و آنرا برای استفاده بوت می کنید با این مشکل روبرو می شوید و ساعت سیستم چند ساعت به جلو و یا عقب کشیده می شود. در این گونه مواقع ما باید بصورت جداگانه این مشکل را روی سیستم عامل های ویندوز و لینوکس بررسی کنیم. ویندوز و لینوکس بصورت جداگانه با تایم BIOS کار می کنند. این دو سیستم عامل Time format های جداگانه ای دارند.

لینوکس از فرمت UTC و ویندوز از فرمت localtime استفاده می کند. سیستم عامل های خانواده GNU//Linux ( همچنین سیستم عامل MAC OS X ) زمانش را در BIOS به فرمت UTC یا GMT در نظر میگیرد. زمانی که سیستم عامل لینوکس بوت می شود UTC time را با اضافه کردن آفست Time zone ای که توسط کاربر روی سیستم تنظیم شده است تبدیل می کند. این به این معنی است که برای دریافت زمان محلی یا localtime برای مثال Time zone ایران (UTC+3:30) ، لینوکس 3 و نیم ساعت به این زمان اضافه خواهد کرد.

سیستم عامل ویندوز همانطور که پیشتر نیز عنوان کردیم زمان خود را در BIOS با فرمت local time در نظر میگیرد. و اگر شما یک Time zone جدید یا یک NTP server خارجی به سیستم معرفی کرده اید سیستم تغییرات را مطابق با local time بایوس صورت خواهد داد. الان فکر می کنم متوجه شدید که چرا زمانی که از لینوکس به ویندوز یا برعکس سوئیچ می کنید زمان سیستم بهم میخورد. برای برطرف کردن این مشکل شما باید سیستم عامل ویندوز را مجبور کنید تا از فرمت UTC استفاده کند. برای انجام این کار دستور زیر را با سطح دسترسی ادمین در Command Prompt اجرا کنید :

reg add "HKLMACHINE\System\CurrentControlSet\Control\TimeZoneInformation" /v RealTimeIsUniversal /t REG_DWORD /d 1 /f

توجه کنید که در ویندوز های 64 بیتی به جای DWORD باید QWORD ایجاد کنید. دستور زیر را اجرا کنید :

reg add HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /t REG_QWORD /d 1

حالا با دستور زیر بایستی نگذارید ویندوز با NTP server اینترنتی زمانش را Sync کند زیرا با انجام این کار UTC time ریست می شود و به Local time تبدیل می شود :

sc config w32time start= disabled

دستور فوق سرویس Windows Time را Disable می کند. سیستم را یکبار Restart کنید. البته به جای این کار میتوانید لینوکس را مجبور کنید تا از Local time استفاده کند. برای انجام این کار دستور زیر را در ترمینال اجرا کنید :

sudo timedatectl set-local-rtc 1 

دستور فوق در سیستم عامل Ubuntu نسخه 15.04 و نسخه های بالاتر کار می کند.

  • برطرف مشکل بهم خوردن زمان در سرور های HP که روی آن ویندوز سرور نصب شده است

مشکلی که در این گونه مواقع پیش می آید وقتی Time zone یا System time سرور HP را تغییر می دهید تنظیمات ذخیره نمی شود. همچنین زمانی که ویندوز سرور در حالت Legacy mode بوت می شود این مشکل بوجود نمی آید. زمانی که این مشکل بوجود می آید در Event Viewer لاگ زیر ثبت می شود :

The system time has changed to ‎2019‎-‎01‎-‎29T12:12:28.500000000Z from ‎2019-‎01‎-‎29T13:12:27.923115700Z.
Change Reason: System time synchronized with the hardware clock

در این گونه مواقع HP پیشنهاد می کند که نسخه ROM سرور را حداقل به نسخه 1.5 آپدیت کنید. برای برطرف کردن این مشکل شما باید سیستم عامل ویندوز را مجبور کنید تا از فرمت UTC استفاده کند. برای انجام این کار دستور زیر را با سطح دسترسی ادمین در Command Prompt اجرا کنید :

reg add HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /t REG_QWORD /d 1

امیدوارم مورد توجه شما قرار گرفته باشد.


امیرحسین کریم پور
امیرحسین کریم پور

مدیر ارشد توسینسو و متخصص سرویس های مایکروسافت

امیرحسین کریم پور ، مدیر ارشد توسینسو ، متخصص شبکه ، تخصص در حوزه سیستم عامل های کلاینت و سرور مایکروسافت و سرویس های مربوطه ، سیستم عامل لینوکس و... ، سابقه کار با سازمان ها و شرکت های مختلف در زمینه سرویس های مایکروسافت در قالب پروژه ، مشاوره و آموزش. علاقه مند به حوزه امنیت اطلاعات و تست نفوذ سنجی

نظرات