Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
Андрей Бешков
Компания, в которой я работаю, довольно быстро развивается, появляются новые филиалы, соответственно, увеличивается количество внутренних сетей. Настал момент, когда появилась необходимость соединить эти разрозненные сети в единое пространство. Нам нужна надежная, безопасная и защищенная от «подглядывания» система связи. Единственной возможностью выполнить все предъявленные требования является создание своей корпоративной VPN. В сети так много сайтов, объясняющих каждому, как престижно иметь в своем распоряжении VPN. Но ни один из них не публикует детального описания, как этого добиться. Побродив несколько дней по просторам Интернета, но так и не найдя подробного описания процесса развертывания VPN, решил написать об этом сам.
Я буду использовать vtun, написанный Максимом
Краснянским на основе пакета VPPP. Главная страница проекта vtun находится по
адресу:
Поддерживаются разнообразные типы туннелей IP, Ethernet, PPP, SLIP. В качестве туннеля можно использовать даже pipe и TTY. Для шифрования потока данных используется OpenSSL. Доступны алгоритмы blowfish с ключом в 128 бит или MD5 с ключом той же длины. Компрессия потока производится с помощью библиотек lzo или zlib. Следует отметить, что zlib работает только с tcp-туннелями. Если в вашей операционной системе нет библиотек zlib или lzo, и вы не смогли установить их самостоятельно, значит придется отключить компрессию. Это снизит скорость передачи данных. Но все же не окажет решающего влияния на работу vtun. Официально vtun работает на следующих операционных системах: Linux, Solaris, FreeBSD, NetBSD, OpenBSD и другие BSD-клоны. В принципе vtun должен работать на любой платформе, для которой есть универсальный драйвер tun/tap. Устройство tun используется для туннелирования IP-фреймов, а tap соответственно для Ethernet-фреймов. С помощью tun/tap пользовательские программы получают возможность самостоятельно обрабатывать IP-пакеты. Для некоторых операционных систем необходимо перекомпилировать ядро с поддержкой tun/tap-устройств. Vtun работает на основе клиент-серверной модели. Соответственно, для создания туннеля на одном из хостов, демон vtun должен быть запущен как сервер, а на другом как клиент.
Если между клиентом и сервером находится брандмауэр, значит необходимо разрешить прохождение пакетов, адресованных на порт 5000. Попытки провести vpn-туннель через систему с NAT, скорее всего, завершатся фатально. Проблема в том, что NAT изменяет содержимое проходящих пакетов. Поэтому ни один пакет не пройдет проверку контрольной суммы.
После запуска демон, выполняющий роль сервера, по умолчанию начинает слушать порт 5000. При попытке подсоединиться на этот порт происходит аутентификация клиента на основе пароля, записанного в конфигурационном файле /usr/local/etc/vtund.conf. Пароль применяется для аутентификации клиента всего лишь один раз на протяжении всей сессии. После успешной аутентификации сервер с помощью функции fork запускается еще один демон vtun, которому передается клиентское соединение. Новый демон будет существовать до тех пор, пока соединение не будет разорвано. В то же время родительский демон продолжает ждать новых соединений. Это значит, что единственный демон может обслуживать множество одновременных подключений. Количество поддерживаемых соединений зависит только от мощности процессора и наличия оперативной памяти.
С помощью ключей командной строки можно указать другое местоположение конфигурационного файла. Это дает нам возможность запустить на одном хосте несколько демонов vtun, ожидающих соединений на разных портах. Каждый из демонов будет использовать собственные настройки. Соответственно, некоторые из них могут быть серверами, а другие клиентами. Это дает нам возможность развернуть множество не пересекающихся между собой VPN.
Давайте представим, что у нас есть филиал, магазин и офис, использующие адреса из пространства частных сетей. Необходимо эти подразделения соединить с помощью VPN. Для этих целей мы будем использовать реальные IP-адреса, выданные нам провайдером из сети 80.80.20.0. Для соединения сетей нам понадобятся три компьютера. На каждом из них будет по три сетевых интерфейса. Два реальных и один виртуальный. Более подробно это показано в приведенной ниже таблице.
|
Система |
Имя машины |
Внутренняя подсеть |
Внутренний интерфейс |
Внешний интерфейс |
Виртуальный интерфейс tun |
||
Офис |
FreeBSD 4.5 |
vpn_office |
192.168.30.0 |
192.168.30.251 |
ed0 |
80.80.20.2 |
ed1 |
192.168.0.2 |
Филиал |
Debian Linux 3.0 |
vpn_filial |
192.168.20.0 |
192.168.20.251 |
eth0 |
80.80.20.1 |
eth1 |
192.168.0.1 |
Магазин |
Solaris 2.7 |
vpn_shop |
192.168.40.0 |
192.168.40.251 |
le0 |
80.80.20.3 |
le1 |
192.168.0.3 |