Дублирующий сервер ISP Go
Выполните установку второго (подчиненного) сервера SkyDNS ISP Go аналогично установке первого (главного) сервера. При этом isp-go-api
должен быть запущен только на главном сервере и все запросы должны идти к нему. Чтобы запретить запуск isp-go-api
на подчиненном сервере и проксирование запросов на него, выполните команды:
service isp-go-api stop update-rc.d isp-go-api disable rm -f /etc/nginx/sites-enabled/isp-go-api service nginx restart
Настройте репликацию между серверами Redis. Для этого нужно разрешить главному серверу слушать на сетевых адресах, отличных от 127.0.0.1, при помощи настройки параметра bind в /etc/redis/redis.conf
. Этот параметр надо выставить в 0.0.0.0
bind 0.0.0.0
или, если на то есть особые причины, в IP-адрес или адреса сервера.
bind 127.0.0.1 192.168.5.100 10.0.0.100
Для применения настроек необходимо перезапустить Redis:
service redis-server restart
Внимание: порт tcp/6379, на котором слушает Redis, необходимо закрыть средствами iptables, оставив только доступ с loopback-интерфейса (это нужно для isp-go-dnsproxy
и isp-go-blockpage
) и с подчиненного сервера. Атакующий, имея доступ к redis-серверу по tcp, смог бы изменить любую настройку любого пользователя, или, что еще хуже, заставить Redis занять всю доступную память.
Рассмотрим пример, когда главный сервер имеет IP-адрес 192.168.5.100, а подчиненный - 192.168.5.200. В этом случае безопасность на главном сервере обеспечивается таким правилом iptables:
iptables -A INPUT ! -s 192.168.5.200 -p tcp --dport 6379 ! -i lo -j DROP
Для сохранения этого правила, чтобы оно восстановилось после перезагрузки, следует выполнить команду:
service netfilter-persistent save
В настройках Redis на подчиненном сервере в файле /etc/redis/redis.conf
в конце указать:
slaveof <masterip> <masterport>
и перезапустить Redis:
service redis-server restart