# Дублирующий сервер 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
```