Библиотека сайта 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 |