Рейтинг@Mail.ru
[Войти] [Зарегистрироваться]

Наши друзья и партнеры

UnixForum
Беспроводные выключатели nooLite

Lines Club

Ищем достойных соперников.

Свежая информация коттеджный городок на нашем сайте.


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

Библиотека сайта или "Мой Linux Documentation Project"

Создаем 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

 


Эта статья еще не оценивалась
Вы сможете оценить статью и оставить комментарий, если войдете или зарегистрируетесь.
Только зарегистрированные пользователи могут оценивать и комментировать статьи.

Комментарии отсутствуют