Я арендую набор выделенных серверов, и у них есть только один интерфейс с Интернетом.
Однако во многих случаях я хотел бы, чтобы мои серверы обменивались данными через частную IP-сеть. Например, это позволило бы мне предоставлять внутренние службы (ldap, puppet master, apt repository, bind) только для локальной сети.
В идеале я хотел бы иметь оверлейную сеть, которая выглядела бы как частная сеть (каждая машина будет иметь новый виртуальный интерфейс с локальным IP-адресом), но работающая в Интернете.
Я предварительно использовал для этого freelan, который работает как шарм, за исключением того, что я больше не хочу использовать такой экзотический стек.
Я задавался вопросом, возможно ли это с GRE / IPSec? Из того, что я видел, мне пришлось бы настроить один интерфейс GRE для каждого однорангового узла на каждом хосте, чтобы получить полную сетку. Есть ли решение попроще? Похоже, это не очень хорошо сочетается с количеством пиров.
Да. Вы можете настроить интерфейсы gre, а затем зашифровать межсерверный трафик gre с помощью ipsec. То же самое достигается с помощью ipip (некоторые системы UNIX называют этот тип интерфейса гифка). Но на самом деле это старый устаревший способ. Что еще более унаследовано - это настройка IPsec без использования gre, потому что в этом случае его будет сложно поддерживать и почти невозможно маршрутизировать, потому что никакие протоколы динамической маршрутизации не могут работать поверх устаревшего IPsec без интерфейса.
В то же время существует технология, которую Cisco называет VTI (Виртуальный туннельный интерфейс), а можжевельник называет ул (безопасный туннель). В то же время это немного сложнее (вам нужно создать особый тип интерфейса, способный обрабатывать IP-трафик. и terminate ipsec), но в то же время проще, потому что он не добавляет промежуточный IP-заголовок (впрочем, как и gre с ipsec в транспортном режиме). Современная Linux поддерживает эту технологию, а также совместима с оборудованием Cisco и Juniper.
Итак, в основном у вас есть следующие варианты, я перечисляю их в порядке возрастания сложности:
Кроме того, есть много программного обеспечения, которое создает VPN на уровне пользователя. Их главный недостаток - ограниченная совместимость - они могут взаимодействовать только с одним и тем же программным обеспечением. Однако на самом деле он лучше, чем устаревший ipsec, потому что он ближе к приличной маршрутизации. Однако, если мы говорим о протоколах динамической маршрутизации, применяются некоторые ограничения, и я не рекомендую использовать их в среде, которая должна масштабироваться:
И напоследок отмечу, что если говорить о выделенных серверах, расположенных в один датацентр, VPN немного излишне. Правильным решением было бы настроить для них VLAN с частной адресацией, добавить этот vlan в магистраль 802.1q, которую будет обрабатывать ваш сервер, и создать интерфейс vlan. Таким образом, по-прежнему будет использоваться один интерфейс (однако, большинство современных серверных платформ имеют как минимум два гигабита медного кабеля, поэтому я не вижу проблемы с включением еще одного простого интерфейса Ethernet - это просто самая простая вещь).