Установка VTun
Кроме собственно дистрибутива VTun, для установки понадобятся также пакет OpenSSL и библиотеки zlib и lzo. Впрочем, без последних можно обойтись - но тогда поток не будет сжиматься. В дистрибутивах FreeBSD или OpenBSD все это устанавливается отдельно. В ОС RedHat9, с которой мне пришлось работать, дело обстоит так: # rpm -qa | grep openssl openssl-0.9.7a-2 openssl-devel-0.9.7a-2 # rpm -qa | grep zlib zlib-devel-1.1.4-8 zlib-1.1.4-8 [root@grinder sergej]# rpm -qa | grep lzo
Как видим, все готово, кроме библиотек lzo. Если чего-то не хватает, то последние версии zlib можно найти по , lzo - на , а OpenSSL - на ее . Пользователям же систем BSD удобнее найти все это в системе портов.
После того как все необходимые программы установлены, приступаем к установке VTun: # tar xvfz vtun-2.6.tar.gz # cd vtun #./configure
Иногда, если программа при конфигурировании не нашла некоторые файлы, она выдает примерно следующее сообщение об ошибке: checking for ZLIB Library and Header files... checking for deflate in -lz... yes checking for LZO Library and Header files... checking for lzo1x.h... no configure: error: headers not found.
Другими словами, программа не нашла заголовочные файлы библиотек LZO. Если эти библиотеки установлены, нужно просто указать место их расположения вручную при помощи опций --with-lzo-headers=DIR и --with-lzo-lib=DIR: #./configure with-lzo-headers=/usr/local/include/ --with-lzo-lib=/usr/local/lib/
Если сообщение об ошибке продолжает появляться или если библиотека не установлена, то для продолжения работы без поддержки библиотеки LZO используем ключ --disable-lzo, для библиотек ZLIB - --disable-zlib, для отключения шифрования - --disable-ssl. После этого выполняем компиляцию и установку программы, как обычно: # make # make install
Если все прошло без ошибок, то перед запуском необходимо внести изменения в конфигурационные файлы серверов и клиентов. Файл /usr/local/etc/vtun.conf, созданный при установке, хорошо комментирован и содержит готовые шаблоны для работы VTun как в качестве сервера, так и клиента.
Наша задача состоит в том, чтобы убрать лишнее и подставить нужные для работы параметры.
Типичный файл сервера выглядит так: options { port 5000; syslog daemon;
# В этом блоке описываются пути # к используемым программам ppp /usr/sbin/pppd; ifconfig /sbin/ifconfig; route /sbin/route; firewall /sbin/ipchains; ip /sbin/ip; }
default { compress lzo:9; speed 0; }
Разделы options и default являются общими. Их содержимое распространяется на все последующие секции. Однако при дальнейшей настройке значение опций из раздела default можно переопределить для каждого клиента. Ниже описывается настройка отдельных клиентов. Обратите внимание, что названия всех опций можно сократить до 4-х знаков. mashine1 { passwd Ma;;*TU; type tun; proto udp; encrypt yes; keepalive yes;
up {
ifconfig "%% 192.168.0.1 pointopoint 192.168.0.3 mtu 1450"; }; }
mashine2 { passwd Ma&^TU; type ether; device tap0; proto udp; compress zlib:5; speed 256:128; encrypt yes; stat yes; keepalive yes;
up { ifconfig "%% 192.168.0.2 192.168.0.1 netmask 255.255.255.0"; route "add -net 192.168.0.0 netmask 255.255.255.0"; firewall "-A forward -s 192.168.0.0/24 -d 0.0.0.0/0 -j MASQ"; };
down {
ifconfig "%% down"; route "delete 192.168.0.0"; firewall "-D forward -s 192.168.0.0/24 -d 0.0.0.0/0 -j MASQ"; }; }
Опция | Описание |
Секция options | |
type | Способ запуска демона vtund: как самостоятельной программы (по умолчанию) или через inetd. Возможные значения - stand, inetd |
рort | Номер порта, который прослушивает сервер в ожидании входящих сообщений |
рersist | Возможные значения - yes, no. При значении yes клиент будет повторно пытаться соединиться с сервером в случае обрыва. Игнорируется сервером |
timeout | Время ожидания для клиента. Игнорируется сервером |
Секция default и секции клиентов | |
рassword | Пароль для соединения сервера с клиентом. Одинаков для файлов настройки на обоих компьютерах. Поскольку пароль хранится в открытом виде, доступ к содержащему его файлу должен иметь только root |
type | Тип используемого туннеля. Игнорируется клиентом. Возможные значения: tun (IP tunnel, пo PPP, Ether), ether (Ethernet), tty (serial tunnel, по PPP, SLIP, используется по умолчанию) и pipe (pipe tunnel) |
device | Используемое сетевое устройство. Обычно vtund правильно распознает устройство автоматически, так что эту опцию можно не трогать |
proto | Возможные значения: tcp, udp. Используемый протокол. По умолчанию - ТСР. UDP может применяться только для ether и tun. Игнорируется клиентом |
сompress | Метод и степень компрессии. Возможные значения - no (без компрессии), yes (компрессия по умолчанию), zlib и lzo (если система откомпилирована с поддержкой этих библиотек). Через двоеточие указывается степень компрессии от 1 до 9. Чем больше число, тем выше степень компрессии. При этом нужно помнить, что более высокие степени сжатия потребляют больше системных ресурсов. Игнорируется клиентом |
encrypt | Включение/выключение шифрования. Возможные значения - yes, no. Игнорируется клиентом |
keepalive | Возможные значения - yes, no. Определяет, нужно ли пытаться восстановить соединение в случае обрыва. Игнорируется клиентом |
stat | Включение/выключение режима ведения статистики. Возможные значения - yes, no. Если эта опция включена, то сервер каждые 5 минут заносит статистические данные в файл /var/log/vtund/host_X |
speed | Ограничение скорости для особо "прожорливых" клиентов. Параметры задаются в Кб/с. Допустимыми значениями являются 8, 16, 32, 64, 128, 256 и т.д. По умолчанию параметр равен 0, что означает максимально возможную скорость. Можно задать скорость в форме in:out, где in - скорость передачи данных клиенту, out - от клиента. Одна цифра означает одинаковую скорость в обоих направлениях. Игнорируется клиентом |
srcaddr | Жесткая связь с абсолютным адресом и портом |
Multi | Управление параллельными соединениями. Значения yes и allow разрешают параллельные соединения, no и deny - запрещают, killold разрешает новое соединение, запрещая старые. Игнорируется клиентом |
up, down | Указывают на инструкции, которые выполняются при удачном соединении и разрыве связи. Используются, чтобы инициализировать протоколы, устройства, маршрутизацию и firewall. Кроме запускаемых программ, могут задаваться шаблоны и аргумент wait, позволяющий vtund дождаться завершения работы программы. Шаблоны могут быть следующими:
|
Большинство параметров обычно настраивается автоматически, прибегать к ручной настройке придется только в крайнем случае. Рассмотрим пример файла для одного из клиентских компьютеров. В нем убраны лишние параметры из секции сервера и изменены значения IP-адресов на поднимаемых интерфейсах (Адреса интерфейсов, используемых в примере, приведены в таблице).
Компьютер | Внешний IP | IP внутренней сети | Виртуальный интерфейс |
Сервер | 1.2.3.4 | 192.168.10.0 | 192.168.0.1 |
Клиент mashine2 | 10.20.30.40 | 192.168.20.0 | 192.168.0.2 |
mashine2 { pass Ma&^TU; type ether; up { ifconfig "%% 192.168.0.2 netmask 255.255.255.0"; }; down { ifconfig "%% down"; }; }
Обратите внимание: синтаксис параметров ifconfig, firewall и общая настройка сетевых интерфейсов в приведенных примерах будут отличаться для различных операционных систем.
После того как все файлы готовы, запускаем на компьютере, исполняющем роль сервера, демон vtund в режиме сервера: Server# vtund -s
На компьютерах-клиентах запускаем vtund с указанием имени хоста, фигурирующего в конфигурационном файле, и IP-адрес или имя сервера: mashine2# vtund -р mashine2 1.2.3.4
За ошибками при этом наблюдаем в другой консоли: # tail -f /var/log/message
Если ничего подозрительного не появилось, создание VPN-сети можно считать законченным.