Сетевое железо - статьи

       

Установка 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"; }; }

Возможные значения опций при настройке Vtun
Опция Описание
Секция 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 дождаться завершения работы программы. Шаблоны могут быть следующими:
  • ' (одиночная кавычка) - группа аргументов;
  • \ (обратная косая черта) - символ escape;
  • %d - устройство TUN или TAP или имя TTY-порта;
  • %% - то же, что и %d;
  • %A - локальный IP-адрес;
  • %P - локальный порт TCP или UDP;
  • %a - удаленный IP-адрес;
  • %p - удаленный порт TCP или UDP
<


Большинство параметров обычно настраивается автоматически, прибегать к ручной настройке придется только в крайнем случае. Рассмотрим пример файла для одного из клиентских компьютеров. В нем убраны лишние параметры из секции сервера и изменены значения 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
options { port 5000; timeout 60; ifconfig /sbin/ifconfig; route /sbin/route; firewall /sbin/ipchains; }

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-сети можно считать законченным.


Содержание раздела