понедельник, 4 июня 2012 г.

Несколько ssh-ключей одного хоста

Собственно проблема: имеется несколько серверов, управляемых pacemaker'ом. Если мастер-сервер вышел из строя его IP-адрес подхватывает другой, но в этом случае его ssh-ключ (ключ хоста) изменяется и при попытке подключиться по этому публичному адресу мы получаем примерно следующее сообщение:
 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@  
 @  WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!   @  
 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@  
 IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!  
 Someone could be eavesdropping on you right now (man-in-the-middle attack)!  
 It is also possible that a host key has just been changed.  
 The fingerprint for the RSA key sent by the remote host is  
 [...].  
 Please contact your system administrator.  
 Add correct host key in /home/user/.ssh/known_hosts to get rid of this message.  
 Offending RSA key in /home/user/.ssh/known_hosts:86  
 RSA host key for [...] has changed and you have requested strict checking.  
 Host key verification failed.  
Имеется 2 варианта решения:
  1. Отказаться от уникального ключа на каждом сервере, сделать один и раскидать по серверам. Имхо, это не очень правильно.
  2. Объяснить ssh-клиенту что у одного хоста может быть несколько ключей
Собственно реализация второго варианта
  • Получаем ключ сервера:
    $ ssh-keyscan server_ip
    # server_ip SSH-2.0-OpenSSH_5.9p1
    server_ip ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDir2790....
    
  • Полученную строчку добавляем в наш ~/.ssh/know_hosts
Теперь при подключении к одному и тому же адресу, но уже к другому серверу, ssh-клиент ругаться не будет, а сделает то что от него хотели. Эффект достигнут.

пятница, 1 июня 2012 г.

Reload ACLs (allow-from) в PowerDNS

Чтобы изменить настройки acl в конфиге PowerDNS Recursor'е, раньше приходилось делать рестарт всего сервиса. С версии 3.1.7.1 (в debian squeeze - 3.2) обновить acl можно не перезагружая сервис с помощью утилиты rec_control:
rec_control reload-acls
Непосредственно параметры отвечающие за acl:
  • allow-from-file - когда список сетей хранятся в отдельном файле, по одной сети на строчку
  • allow-from - список сетей через запятую

Жесткая перезагрузка из консоли без reboot/shutdown.

Иногда требуется проверить поведение систем/кластера при жёстких перезагрузках, которые могут быть вызваны прекращением электропитания ДЦ, выходом из строя блока питания, случайное нажатие ресета (бывает и такое!). Самый простой вариант имитации это воспользоваться MagicKeys (alt+sysrq+key), но далеко не всегда есть возможность работать с сервером на прямую. Однако sysrq можно послать ядру программно.
Для перезагрузки:
 echo 1 > /proc/sys/kernel/sysrq   
 echo b > /proc/sysrq-trigger  
Для выключения, правда в этом случае нужно будет включать сервер через IPMI или дежурного инженера ДЦ:
 echo 1 > /proc/sys/kernel/sysrq  
 echo o > /proc/sysrq-trigger  
Однако не стоит забывать о том что кеши не будут сброшены и вы можете получить на диске неконсистентные данные, однако именно этого я и добивался :)