Назад | Перейти на главную страницу

Создание VPN на основе UNIX: указатели, рекомендации и подводные камни?

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

в Linux у вас есть два основных варианта:

  • ipsec совместимый vpn - используйте Freeswan/openswan/сильный лебедь. насколько я помню, было довольно сложно создать ...
  • нестандартный [но действительно хороший] sslvpn - openvpn. очень легко настроить.

Второй действительно великолепен, я уже пару лет использую его в продакшене. он доступен в debian как стандартный пакет. он работает достаточно хорошо для пропускной способности в десятки мегабит [тоже сотни, но у меня нет такого быстрого интернет-соединения между офисами]

несколько советов по openvpn:

  • для большей безопасности не используйте 'поделился секретом' тип ключей, создать центр сертификации и использовать подписанные им ключи вместо.
  • если возможно, используйте режим tun вместо tap [маршрутизируйте трафик через vpn вместо соединения двух сегментов Ethernet через него]
  • Если вы выберете решение с центром сертификации - помните, что срок действия ключей истекает. установите себе пару напоминаний, чтобы заново сгенерировать ключи.
  • на всякий случай используйте программный сторожевой таймер, встроенный в opensvn [параметр ping-restart] + добавьте дополнительный простой сценарий bash, который циклически проверяет, запущен ли процесс openvpn. openpn умирал у меня ~ 2 раза за последние 3 года.
  • по возможности используйте туннелирование через UDP [вместо TCP]. У меня была проблема с vpn из офиса за nat [где Linux-бокс находился за дешевым маршрутизатором dlink, который я не мог контролировать], где udp-пакеты через некоторое время были заблокированы - в этом случае я был вынужден использовать tcp.
  • наслаждайтесь openvpn из-за брандмауэров / натсов .. пока одна сторона имеет общедоступный IP-адрес и может быть достигнута через tcp или udp на одном порту - вы можете установить vpn для него, другой узел не должен иметь общедоступный IP-адрес!

Настоящий IPsec - не что иное, как головная боль. Протокол натыкается на разные топологии сети. Клиенты отсутствуют везде, независимо от того, какая ОС. Если вам не требуются аппаратные конечные точки, которые будут выполнять только IPsec, избегайте его любой ценой.

Однако OpenVPN прост в настройке, надежен в использовании и имеет очень интуитивно понятные клиенты для Linux, Windows и Mac.

Подумайте, как вы собираетесь управлять новыми пользователями и отзывать старых. Это будет зависеть от того, сколько пользователей вы планируете поддерживать. Лично мы используем сертификаты x509, размещенные на двухфакторных токенах, которые очень хорошо масштабируются, но требуют некоторого способа управления PKI, если вы растете.

Два инструмента, на которые я могу порекомендовать взглянуть, - это OpenVPN (упомянутый ранее) и Adito (который недавно был переименован в OpenVPN ALS). http://sourceforge.net/projects/adito/ http://adito.wiki.sourceforge.net/

Еще одно голосование за OpenVPN здесь. Мы использовали его на моей предыдущей работе, и он был как скала, и у нас было меньше проблем с ним по сравнению с туннелями PPTP и IPSEC VPN, которые мы используем на моей текущей работе. Также трудно превзойти гибкость, которую предлагает OpenVPN. Но, на мой взгляд, у OpenVPN есть одно слабое место. В настоящее время он не поддерживается многими смартфонами. На самом деле я ничего такого не знаю. Я знаю, что есть люди, пытающиеся перенести его на iPhone, но я не уверен, где находится этот проект.

Вы не упомянули, какого типа клиенты должны поддерживать ваше решение vpn. Имея это в виду, если вам нужно избегать сторонних клиентов или вам нужна поддержка смартфонов, то PPTP может быть лучше. Windows, OSX и многие смартфоны имеют собственные клиенты PPTP. Poptop - это проект Linux, реализующий PPTP.

Одно очень гибкое и хорошо документированное решение - OpenVPN (http://openvpn.net/) Это доступно как пакет из стандартного репозитория в Ubuntu и также должно быть в Debian.

Я использую OpenVPN в своей компании около 2 лет. Было очень мало проблем с этим.

Мы используем индивидуальную для клиента конфигурацию для назначения IP-адресов пользователей в разных подсетях. С этого момента мы можем ограничить доступ к внутренним ресурсам благодаря брандмауэру.

Менее комфортно управление PKI (мы используем сертификат для аутентификации клиентов). Но с 2 или 3 сценариями это становится терпимым.