Я пытаюсь сделать свою сеть малого бизнеса более надежной, добавив резервного провайдера. Я не могу понять, как управлять DNS для входящих подключений. В упрощенном виде моя сеть выглядит так:
+-------+ +-------+
| ISP 1 | | ISP 2 |
+-------+ +-------+
| |
+-----------------+
| Dual WAN Router |
+-----------------+
|
+----------+
| Server |
+----------+
Когда у меня был только один интернет-провайдер, у меня был только один WAN IP-адрес, о котором нужно было беспокоиться, и я просто обновлял свою запись DNS A каждый раз, когда мой динамический IP менялся. Я использую AWS (Route 53) для DNS, поэтому довольно легко написать сценарий, чтобы получить ваш текущий IP-адрес, а затем использовать их инструменты CLI для соответствующего обновления ваших записей DNS.
Теперь, когда у меня есть два IP-адреса в глобальной сети, я не совсем уверен, что делать дальше. У меня две основные проблемы:
Я хочу, чтобы ISP 1 был основным (у него лучшее соединение), но я хочу вернуться к ISP 2, если 1 недоступен. Я использую сервер для VoIP, а также HTTP и SSH. VoIP должен иметь довольно высокую доступность (отсюда и резервный ISP). Но я не знаю, как добиться такого переключения.
Как я могу поддерживать обе записи DNS в актуальном состоянии? Имея всего одного интернет-провайдера, я могу надежно определить IP-адрес WAN с сервера с помощью такой команды: dig +short myip.opendns.com @resolver1.opendns.com
. С двумя интернет-провайдерами я не могу представить, как бы получить IP-адреса для обоих с сервера.
Я читал о циклическом переборе DNS с несколькими записями A, но везде, где я нахожу упоминание, этого не рекомендуется. Другой вариант - это BGP, но я его не понимаю, и мне кажется, что у меня нет того, что мне нужно для его реализации (эта почта вроде применяется).
Другим решением для №1 может быть балансировщик нагрузки с одним IP-адресом, на который указывают домены. Затем этот балансировщик нагрузки выбирает, к какому интернет-провайдеру направлять трафик на основе некоторой проверки работоспособности. Проблема в том, что это должно быть независимым от протокола (то есть работать без проблем с трафиком VoIP, а также с HTTP и т. Д.). Вот почему решение на уровне DNS показалось привлекательным.
Я наткнулся на это сообщение в блоге AWS что выглядело многообещающе, но моя голова взорвалась, когда я попытался выяснить, как я буду поддерживать динамические IP-адреса в актуальном состоянии при проверках работоспособности и различных соответствующих записях DNS.
После прочтения эта почта, "правильный" способ сделать это на моем уровне кажется балансировщиком ссылок как это, но самая дешевая модель в этой линейке стоит около 1200 долларов, что немного больше, чем я искал. Кроме того, я все еще немного не понимаю, как указать серверы имен для моих доменов на мой балансировщик ссылок, когда он получает динамические IP-адреса от интернет-провайдеров.
Я думаю, что могу настроить свой Dual WAN Router на позвонить в вебхук когда IP-адреса меняются, но это было бы сложно реализовать.
Есть ли какое-то волшебное решение, которое мне не хватает?
я использую AWS Route53 проверки работоспособности для разрешения входящего DNS и переключения при отказе в Интернете.
Создайте проверку работоспособности.
Создайте общедоступную запись DNS для каждой службы.
Свяжите проверку работоспособности с записью DNS.
Это зависит от функций вашего двойного маршрутизатора WAN, но я считаю, что наиболее простым решением может быть использование маршрутизатора ISP / WAN 2 только тогда, когда он обнаруживает, что ISP / WAN 1 не работает. Таким образом, вы можете иметь сервер и его динамический DNS-скрипт как есть; он обновит ту же запись, чтобы преобразовать ее в общедоступный IP-адрес WAN2, когда WAN1 выйдет из строя.
Конечно, это займет TTL
секунд, пока он не станет эффективным, но с коротким TTL
лайк 300
это не должно приводить к слишком длительному простою в процентах.