Наши партнеры








Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

Создаем VPN на основе vtun (стр.2)

Итак разобравшись с основной теорией работы туннеля давайте перейдем к настройке хоста vpn_shop.

Машина vpn_shop работает под управлением Solaris 2.7. Для нее установка програмного обеспечения будет немного отличаться. Кроме упомянутых раньше LZO и vtun нам понадобятся исходные коды универсального TUN/TAP драйвера и библиотеки OpenSSL.

Процедура установки универсального TUN/TAP драйвер хорошо автоматизирована и довольно таки проста:

# tar zxvf tun-1.0.tar.gz
# cd tun-1.0
# ./configure
# make install

В стандартной поставке Solaris 2.7 OpenSSL отсутствует так же, как и библиотека LZO, поэтому будем ставить их сами. Взять дистрибутив OpenSSL можно на сайте проекта openssl.org. С помощью ключей указываем что библиотеки должны установиться в /usr/local/lib, заголовочные файлы по умолчанию в /usr/local/include/openssl, а все отсальное в /usr/local/openssl.

# tar openssl-0.9.5a.tar.gz
# cd openssl-0.9.5a
# ./configure --prefix=/usr/local --openssldir=/usr/local/openssl
# make 
# make test
# make install

Пришло время собрать LZO. Как всегда делаем это в ручном режиме.

# tar zxvf lzo-1.08.tar.gz
# cd lzo-1.08
# ./configure
# make
# make check
# make test
# make install

Постепенно мы добрались и до vtun, Обратите особое внимание на ключи команды configure.

# tar zxvf vtun-2.5.tar.gz
# cd vtun
# ./configure --with-lzo-headers=/usr/local/include/ --with-lzo-lib=/usr/local/lib --with-ssl-lib=/usr/local/lib --with-ssl-headers=/usr/local/include/openssl
# make
# make install

Если компиляция прошла без ошибок, значит мы сделали все правильно и можем переходить к конфигурированию vtun. Файл настроек vtun находится в /usr/local/etc/vtund.conf. Вносим в него вот это:

options {
port 5000;
ifconfig /usr/sbin/ifconfig;
route /usr/sbin/route;
}


default {
compress lzo:9;
speed 0;
}


shop {
    pass secret;
    type tun;
    proto udp;
    encr yes;
    keepalive yes;


# обратите внимание на синтаксис команд ifconfig и route

# есть отличия от FreeBSD в обозначении сетей 
# а так же в создании и разрушении роутинга


up {
ifconfig "%% 192.168.0.3 netmask 255.255.255.0 192.168.0.2  up";
route "add net 192.168.30.0 192.168.0.2 1";
};

down {
ifconfig "%% down";
route "delete net 192.168.30.0 192.168.0.2 1";
};
}

Для того что бы при первом соединении с другими машинами команда route отработала корректно нужно добавить в файл /etc/netmasks запись такого вида:

192.168.30.0 255.255.255.0

Покончив с Solaris примемся за работу над Linux. К сожалению с ним все не так просто как с двумя предыдущими системами. Перед тем как воспользоваться услугами vtun нужно вручную создать устойство tun, в стандартной поставке оно отсутствует. Наш Linux работает на ядре версии 2.4. Значит файл устройства будет находиться в /dev/net/tun. Создадим нужное нам устройство с помощью команды:

# mknod /dev/net/tun c 10 200
 

Установка програмного обеспечения под Debian длилась дольше всего и для меня превратилась в долгую и мучительную процедуру. С помошью apt-get ставим пакет vtun поставлявшийся вместе с Debian. Заставить его работать мне так и не удалось. Но ставить все равно стоит, потому что он разложит необходимые файлы по местам и создаст между ними нужные взаимосвязи.

# apt-get install vtun

Путем чтения документации и общения с друзьями было выяснено что, для того что бы се заработало необходимо установить пакеты разработчика liblzo-dev и libssl-dev. Что мы с радостью и выполняем.

# apt-get install liblzo-dev
# apt-get install libssl-dev

Колосального сдвига это не принесло и я принялся рыскать в поисках решения по Интернет. Постепенно пришло понимание, что таких бедолаг как я довольно много. После более тшательного расследования выяснилось, что из-за изменений внесенных в ядро на пути к версии 2.4, vtun пакет от Debian и не должен был работать. Теперь нам нужно установить пакет демона vtund.

# apt-get install vtund

После всех этих приключений берем стандартный дистрибутив vtun использованый нами для остальных систем и компилируем его с настройками по умолчанию. Скомпилировав исходный код команду make install не выполняем. Вместо нее вручную заменяем старый выполняемый файл находящийся в директории /usr/local/sbin/ своим новым файлом.

Для ядра 2.4 необходимо что бы модуль поддержки tun был загружен в оперативную память. Такого результата можно добиться с помощью команды modprobe tun. После этого нам необходимо включить поддержку vtun в ядре. Ишем в тексте ядра строку Universal TUN/TAP device driver (CONFIG_TUN). Я думаю Вы знаете что нужно делать что бы пересобрать ядро. После этого в конфигруационный файл vtun нужно внести такой текст.

options {
port 5000;
ifconfig /sbin/ifconfig;
route /sbin/route;
}


default {

compress lzo:9;
speed 0;
}


filial {
    pass secret;
    type tun;
    proto udp;
    encr yes;
    keepalive yes;


up {

ifconfig "%% 192.168.0.1 pointopoint 192.168.0.2 mtu 1450";
route "add -net 192.168.30.0/24 192.168.0.2";
};

down {
ifconfig "%% down";
route "delete -net 192.168.30.0";
};
}  

Скачать все конфигурационные файлы можно здесь.

В связи с тем, что в файлах vtund.conf находится пароль соединения, доступ к ним должен иметь только пользователь root. После всех этих манипуляций можно запускать vtun. На машине vpn_office запускаем демон в режиме сервера.

vpn_office# vtund -s

На другой консоли смотрим на сообщения об ошибках.

vpn_office# tail -f /var/log/messages 


Если ошибок не появилось, значит все у нас хорошо. Соответственно, на хостах vpn_shop и vpn_filial запускаем демоны в режиме клиента.

vpn_shop# vtund -p shop 80.80.20.2
vpn_filial# vtund -p filial 80.80.20.2


Снова ждем ошибок. Не дождавшись, смотрим, какие сетевые интерфейсы у нас подняты на каждой из машин. Больше всего нас интересуют интерфейсы vtun0 и vtun1. У Вас должны получиться примерно такие данные.

vpn_office# ifconfig -u

ed0: flags=8843 mtu 1500
        inet 192.168.30.251 netmask 0xffffff00 broadcast 192.168.30.255
        inet6 fe80::280:48ff:fedf:66f7%ed0 prefixlen 64 scopeid 0x1 
        ether 00:80:48:df:66:f7
ed1: flags=8843 mtu 1500
        inet 80.80.20.2 netmask 0xffffff00 broadcast 80.80.20.255
        inet6 fe80::240:95ff:fe45:9ce2%ed1 prefixlen 64 scopeid 0x2 
        ether 00:40:95:45:9c:e2
lo0: flags=8049 mtu 16384
        inet6 ::1 prefixlen 128 
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x5 
        inet 127.0.0.1 netmask 0xff000000 
tun0: flags=8051 mtu 1450
        inet6 fe80::280:48ff:fedf:66f7%tun0 prefixlen 64 scopeid 0x8 
        inet 192.168.0.2 --> 192.168.0.3 netmask 0xffffffff 
        Opened by PID 1143
tun1: flags=8051 mtu 1450
        inet6 fe80::280:48ff:fedf:66f7%tun1 prefixlen 64 scopeid 0x9 
        inet 192.168.0.2 --> 192.168.0.1 netmask 0xffffffff 
        Opened by PID 1150 



vpn_shop# ifconfig -a
lo0: flags=849 <UP,LOOPBACK,RUNNING,MULTICAST> mtu 8232
        inet 127.0.0.1 netmask ff000000 
le0: flags=863<UP,BROADCAST,NOTRAILERS,RUNNING,MULTICAST> mtu 1500
        inet 192.168.40.251 netmask ffffff00 broadcast 192.168.40.255
        ether 00:80:48:b6:43:5f
le1: flags=863<UP,BROADCAST,NOTRAILERS,RUNNING,MULTICAST> mtu 1500
        inet 80.80.20.3 netmask ffffff00 broadcast 80.80.20.255
        ether 00:02:b3:65:0f:47
tun0: flags=8d1<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST> mtu 1500
        inet 192.168.0.3 --> 192.168.0.2 netmask ffffffff 
        ether 0:0:0:0:0:0



vpn_filial#  /sbin/ifconfig
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Bcast:127.255.255.255  Mask:255.0.0.0
          UP BROADCAST LOOPBACK RUNNING  MTU:3584  Metric:1
          RX packets:13072 errors:0 dropped:0 overruns:0 frame:0
          TX packets:23921 errors:0 dropped:0 overruns:0 carrier:0
          Collisions:0

eth0    Link encap:Ethernet  HWaddr  00:80:48:c7:c7:9b
          inet addr:192.168.20.251      Bcast:192.168.20.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:78 errors:0 dropped:0 overruns:0 frame:10
          TX packets:13 errors:0 dropped:0 overruns:0 carrier:0
          Collisions:0
          Interrupt:3

eth1    Link encap:Ethernet  HWaddr  00:02:2e:f1:17:26
          inet addr:80.80.20.1       Bcast:80.80.20.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:49 errors:1 dropped:0 overruns:0 frame:15
          TX packets:22 errors:0 dropped:0 overruns:0 carrier:0
          Collisions:1
          Interrupt:4

tun0:   Link encap:Point-to-Point Protocol
          inet addr:192.168.0.1 P-t-P: 192.168.0.2    Mask:255.255.255.0
          UP POINTPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:155 errors:0 dropped:0 overruns:0 frame:15
          TX packets:162 errors:0 dropped:0 overruns:0 carrier:0
          Collisions:0

страницы 1, 2, 3