Что вижу - о том пою (aragont) wrote,
Что вижу - о том пою
aragont

Змея кусает свой хвост или о пользе точного времени

Все знают, что в компьютере есть часы - циферки в нижнем правом углу. Некоторых даже раздражает, что в бумажных книгах в этом углу ничего нет. Но далеко не все представляют, насколько это время важно для работы в интернете.

Если отбросить крайние случаи (Гражданин, вы утверждаете, что 3.08.2013 с 17:00 по 19:00 у вас в квартире никого не было, а компьютерная экспертиза обнаружила на вашем диске файл, который редактировали в 17:25. Как вы можете пояснить это обстоятельство?), то точное время на компьютере необходимо для работы различных систем безопасности.

Все сайты связанные с торговлей и интернет-банками запоминают, когда вы в последний раз совершили какое-то действие на странице (нажали на кнопку, перешли по ссылке и т.п.). Если вы ничего не делаете в течение нескольких минут, то программа считает, что вы отошли от компьютера и "забывает" ваш пароль. Это означает, что если во время вашего отсутствия к компьютеру подойдет кто-то другой, то он уже не сможет без пароля снять ваши деньги или заказать что-то на свой адрес. Хорошо, если сервер работает только по своим часам, а что произойдет, если он запомнит показания своих часов, а сравнивать будет с вашими?

Однажды мне пришлось бороться с компьютером, которому на сайте (запрограммированном не очень грамотно) сразу после ввода пароля сообщали: "Срок вашего сеанса истёк. Введите пароль" - и так без конца. Оказалось, что когда компьютер привезли из Москвы в Екатеринбург, то вместо смены часового пояса (как полагается по науке) на нем оставили московское время, но подвели часы на два часа вперед. Сайт, на котором было 12:00 по Москве, запоминал время ввода пароля и тут же переспрашивал у компьютера его текущее время. Компьютер честно сообщал что у него 14:00 по Москве. "Значит пароль ввели уже два часа назад" - думал сайт - "и с тех пор страницу не обновляли. Это подозрительно, надо переспросить пароль!".

Другая область компьютерной безопасности, которая требует точных часов - это шифрование. Любой шифр можно расшифровать, вопрос, сколько часов, дней, лет это займет. Поскольку расшифровка любого современного шифра требует заметного времени, разработчики систем безопасности стараются на этом сыграть и добавляют в зашифрованные сообщения время их создания. Если злодей перехватит сообщение, потратит время на расшифровку, а потом доставит сообщение адресату, то адресат увидит, что с момента отправки до момента получения прошло неправдоподобно много времени и догадается, что сообщение побывало в чужих руках. Одна из самых известных систем, поступающая именно так - система проверки паролей в домене Windows. Домашним пользователям она не знакома, а вот вход компьютера в сеть предприятия, как правило без такой проверки не обходится. Предположим, что вы пришли на работу с домашним ноутбуком и пытаетесь войти в сеть со своим именем и паролем. Если на ноутбуке время отличается от времени на сервере хотя бы на пять минут - вас в сеть не пустят и выдадут сообщение о недопустимо большом рассогласовании часов.

Откуда же компьютер должен брать точное время?

Во-первых, в каждый компьютер встроены электронные часы с батарейкой. Эти часы используются Windows, чтобы выводить время в уголке экрана и для прочих программных нужд. К сожалению, эти часы, как и любой бытовой прибор могут спешить или отставать, так что Windows позволяет подвести эти часы вручную. Когда мы меняем время в Windows, оно меняется именно в часах на материнской плате.

Для корпоративных сетей настройка каждого компьютера вручную слишком трудоёмка, поэтому все компьютеры в домене получают время с центрального сервера - контроллера домена.

Наконец, контроллеры домена (и домашние компьютеры, на которых установлена Виста или более свежая версия Windows) постоянно сверяют свои часы со специальными серверами точного времени, которые в свою очередь, сверяются с национальными службами времени, использующими атомные сверхточные часы.

У меня в Висте экран настроек выглядит так
time

Протокол синхронизации времени называется NTP (network time protocol - протокол сетевого времени). Cписок общедоступных серверов NTP можно найти на сайте ntp.org или воспользоваться специальным именем - pool.ntp.org - под которым прячутся с полдюжины очень надёжных серверов. Так что если в настройках какого-нибудь устройства вы встретите страничку настройки сетевого времени - не поленитесь, впишите свой часовой пояс и сервер точного времени - вдруг пригодится. На моем домашнем роутере страничка настроек выглядит так:
time1

Кстати, про роутеры. Несколько лет назад некий датчанин решил сделать доброе дело для интернета - настроил на своём домашнем компьютере сервер точного времени и добавил его в список на ntp.org. Через некоторое время он обнаружил, что подвергается сетевой атаке - к его серверу начали подключаться десятки, а потом и сотни тысяч клиентов. Когда счёт дошёл до полумиллиона, он практически лишился выхода в интернет, поскольку канал связи был полностью забит. Оказалось, что фирма D-Link, выпуская очередной домашний роутер, вписала в настройки точного времени компьютер несчастного датчанина. Остальное понятно - D-Link продаёт очень много недорогих роутеров, и всем им нужно точное время.

Наконец, последняя история, которая дала название заметке.

В понедельник мне пожаловался один из пользователей, что у него на компьютере часы отстают на три минуты. Он их подводит, а они тут же возвращаются обратно. Я сравнил проверил часы на своем компьютере - та же история, значит отстало время на сервере. До конца рабочего дня я менял на сервере настройки NTP, подводил часы в ручную, перепроверял время которое приходит из интернета. Всё безнадёжно - сервер получает точное время, но часы выставляет с опозданием на три минуты. На следующее утро один мой сотрудник напомнил, что сервер запущен на виртуальной машине... Точно! Для всех виртуальных машин используются одни часы на материнской плате и менять их может только сервер виртуальных машин (иначе все виртуалки начнут гадить друг другу, подводя общие часы по своему усмотрению).

Дальше началось самое интересное. Откуда берёт время сервер виртуальных машин? Как полагается в корпоративной сети с сервера домена. Где находится сервер домена? Как сейчас модно - на виртуальной машине!!!

Получился классический порочный круг: Сервер домена получает точное время из интернета, но не может подвести часы. Сервер виртуальных машин может подвести часы, но он получает время от сервера домена, который поневоле берёт его с этих же часов. Ситуация ещё более осложняется тем, что виртуальные машины запускаются на кластере и контроллер домена может попадать на разные физические компьютеры, у каждого из которых свои физические часы.

Мы справились! Мы настроили все серверы виртуальных машин на получение точного времени с сервера, установленного на реальном компьютере и в течении часа всё потихоньку вошло в норму.
Tags: байки, программы
Subscribe

  • Дюна

    Все смотрят "Дюну" и я посмотрел "Дюну". Мне понравилось, но фильм своеобразный. Такое ощущение, что Вильнёв снял не самостоятельный фильм а…

  • Can't bye me love

    Поискал в интернете русский текст на музыку Can't bye me love, который у нас в Свердловске пели в середине 1970-х, и выяснил, что почти все…

  • Моделинг

    Из передачи на "Культуре": "Я три года занималась моделингом, а это жизнь по съёмным квартирам. По сути, быть гастарбайтером." Заниматься моделингом…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 0 comments