Виртуальный IP на одном сервере

Виртуальный IP на одном сервере

Я хочу настроить как показано ниже

У меня есть два интернет-провайдера с разными статическими IP, подключенных к одному серверу с двумя сетевыми картами, я делаю виртуальный IP для этой сетевой карты, хочу привязать свой локальный веб-сервер к этому виртуальному IP, чтобы если какой-либо интернет-провайдер выйдет из строя, это не повлияло на доступ моего веб-сервера извне. Как это сделать с Linux?

решение1

Для одного IP-адреса вы не сможете сделать то, что задумали.

Чтобы это работало на уровне IP-адреса, вам понадобитсяНомер автономной системы (ASN)и запустить протокол динамической маршрутизации BGP, который сообщит всем магистральным маршрутизаторам Интернета в мире, как достичь вашего виртуального IP-адреса.

К сожалению, на практике один IP-адрес — это слишком маленький фрагмент, чтобы динамически маршрутизировать его таким образом. Большинство интернет-провайдеров не принимают входящие объявления BGP от домашних клиентов/клиентов малого бизнеса, и даже если вы преодолеете это препятствие, маршрутизаторы Интернета будут игнорировать объявления BGP для отдельных IP-адресов. Чтобы поддерживать производительность маршрутизации и не допускать абсурдного роста таблиц маршрутизации магистральных маршрутизаторов, магистральные маршрутизаторы захотят иметь дело только с большими фрагментами пространства IP-адресов.

Чтобы действительно иметь такие виртуальные IP, вам нужно быть довольно крупной организацией с существенным блоком (/24 будет соответствовать) публичных IP-адресов. Возможность взаимно принимать трафик других организаций для маршрутизации через ваши сетевые соединения также поможет.

Конечно, если бы оба ваших интернет-провайдера были клиентами одного и того же магистрального интернет-провайдера, и вы были бы готовы договориться и заплатить за индивидуальное решение, то, вероятно, что-то можно было бы организовать... но для большинства людей это было бы пустой тратой денег и усилий по сравнению с тем, чего можно было бы достичь гораздо проще, выбрав другой подход.


Более реалистичной стратегией для реализации отказоустойчивости ISP для одного сервера было бы использование любой доступной динамической службы DNS. У вас будет один публичный (не обязательно статический) IP-адрес для каждого из ваших восходящих соединений, и вы будете использовать клиент DDNS для обновления записи DNS A для полного имени хоста вашего веб-сервера, чтобы указать на текущий активный IP-адрес.

Если восходящий канал отключается, вы просто обновляете запись A, ждете, пока истечет время жизни старой записи (большинство динамических DNS-сервисов сохраняют TTL довольно короткими — около 60 секунд) и снова становитесь доступным. Конечно, если вы сделаете это таким образом, все существующие соединения будут разорваны, так как ваш IP-адрес изменится при отказе. Но если ваши интернет-провайдеры вообще используют какой-либо брандмауэр с отслеживанием состояния, это все равно произойдет при отказе, даже если у вас будет ваш виртуальный IP.

В качестве альтернативы вы можете просто арендовать облачный сервер у любого крупного оператора облачных услуг и позволить им заниматься избыточными сетевыми соединениями и всей этой сложностью — учитывая их масштабы, им, по сути, придется делать это как нечто само собой разумеющееся.

Связанный контент