• Линуксоиды спасайте, без мускула не могу зайти в админку

  • SMB vs. iSCSI: как дела у Hyper-V? Результаты неожиданны.


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

    В OpenWrt для решения этой задачи применяется утилита rdate. В принципе, она способна выполнять возложенные на нее обязанности в определенных пределах, но после нескольких месяцев использования я насчитал у нее три основных недостатка:

    1. Относительно низкая точность синхронизации, что просто связано с самим протоколом rdate.

    2. Серверов-источников точного времени для rdate мало, и расположены они... скажем так, географически далековато.
    3. Запуск синхронизации происходит только по hotplug-событию поднятия связи на внешнем интерфейсе роутера, и если вам повезло подключиться к провайдеру, где месяцами не падает линк, у вас месяцами не будет синхронизироваться время.

    Это привело к тому, что однажды, спустя пару дней после одной из перезагрузок роутера, я обнаружил, что по мнению системы сейчас на дворе 1970-й год. Т.е. синхронизация один раз по какой-то причине обломалась, а перепроверки запланировано не было. В общем, как-то некрасиво получилось.

    Итак, на замену rdate, разумеется, мы выберем ntpd - наиболее распространенного демона для работы с наиболее распространенным протоколом времени - Network Time Protocol (NTP). Широкая известность данного протокола обеспечивает нам наличие бесконечного большого количества источников точного времени, а демоничность говорит о том, что ntpd будет непрерывно висеть в памяти роутера и при необходимости выравнивать время ежедневно. Как бонус - мы получаем на базе ntpd еще один локальный источник времени, с которым можно настроить синхронизацию часов домашних компьютеров.

    Процесс замены пакетов совершенно неинтересен. При сборке прошивки в настройках компонентов Busybox убираем метку с rdate, после чего в категории Network -> Time synchronization помечаем ntpd и ntpdate. Файл настроек этого демона на роутере окажется по адресу /etc/ntp.conf. В принципе, его содержимое можно оставить неизменным, а можно и поменять на приведенное ниже.

    # разрешение синхронизации и запрет внесения изменений - для удаленных подключений
    restrict default nomodify notrap noquery nopeer
    
    # разрешение всего - для localhost
    restrict 127.0.0.1
    
    # путь к файлу с информацией о дрифте часов
    driftfile  /tmp/ntp.drift
    
    # источники точного времени во ВНИИФТРИ, с точностью stratum 1
    server ntp1.vniiftri.ru prefer
    server ntp2.vniiftri.ru prefer
    server ntp3.vniiftri.ru prefer
    
    # пул источников времени из набора по умолчанию
    server 0.openwrt.pool.ntp.org iburst
    server 1.openwrt.pool.ntp.org iburst
    server 2.openwrt.pool.ntp.org iburst
    server 3.openwrt.pool.ntp.org iburst
    
    # резервный встроенный сервер для использования при отсутствии связи с внешним миром
    server 127.127.1.0
    fudge 127.127.1.0 stratum 10

    Вот и всё. Через некоторое время на роутере часы будут выравнены, и его можно будет использовать как источник точного времени для домашних компьютеров. При желании открыть его в интернет - в файрволе необходимо повесить ACCEPT на доступ к роутеру по порту 123. В настоящее время мой ntpd-сервер доступен для синхронизации по адресу time.erinome.net, его точность - stratum 2.


  • Линуксоиды спасайте, без мускула не могу зайти в админку

  • SMB vs. iSCSI: как дела у Hyper-V? Результаты неожиданны.