Перенос ejabberd на другой сервер(ip-адрес) или подменяем ip для одной записи из зоны через dnsmasq

Постановка задачи: перенести ejabberd с сервера 1.1.1.1 на сервер 2.2.2.2 так что-бы клиентам не пришлось менять ничего в настройках, а доступа к DNS у нас нет (их потом поправит специально обученный человек).

План действий:

1) Ставим такую же версию ejabberd на новый сервер, которая стоит на старом
2) На старый сервер ставим rinetd и «пишем» для него конгиф (как минимум порты 5222 и 5223, остальные по вкусу. Можно netstat -apn позырить)
3) Стопаем на старом и на новом серверах ejabberd, синкаем конфиги и БД (/var/lib/ejabberd/ если мы про debian и база «встроенная»)
4) Запускаем на новом сервере ejabber и видим что оно не запускается и ругается на что то там «fqdn failed»

Собственно проблема в том, что в конфиге ejabberd есть строчка типа такой: «{fqdn, «xmpp.example.com»}» и видет она на ip-шник, который не поднят на вашем локальном интерфейсе. Варианты решения:
1) Правильный — изменить запись в DNS, дождаться пока разъедеться, повторить «service ejabberd start»
2) Подкастылить через использование локального DNS-сервера. (правка в /etc/hosts не спасает, видимо ejabber сам ходит к DNS, а не через системный резолвер)
Собственно первый вариант мне был недоступен потому что у меня доступа в записям небыло, а среди ночи будить человека по такой фигне как то не хотелось.

Поэтому моя реализация второго варианта была такова:
[cc lang=’bash’]aptitude install dnsmasq

cat << EOF > /etc/dnsmasq.conf
resolv-file=/etc/resolv.conf.dnsmasq
address=/xmpp.example.com/2.2.2.2
listen-address=127.0.0.1
EOF

cat /etc/resolv.conf > /etc/resolv.conf.dnsmasq

cat << EOF > /etc/resolv.conf
nameserver 127.0.0.1
EOF

service dnsmasq restart && service ejabberd start[/cc]

После того как DNS-запись мне поправят планирую разобрать все в обратном порядке.

PS: на вопрос «А почему не BIND?» могу ответить лишь: потому что я не собираюсь держать всю зону, а нужно временно подменить ip-адрес одной записи.

UPD: не забываем что файл /etc/resolv.conf может быть перезаписан dhcp клиентом и костылим через /etc/resolvconf/update.d в случае необходимости.

You can leave a response, or trackback from your own site.

Leave a Reply

Subscribe to RSS Feed