VTun: организация VPN между двумя точками
Имеем задачу: организовать безопасное соединение между двумя удаленными узлами сети. Сделать это можно с помощью VPN между этими узлами. Для решения подобных задач существует множество протоколов, таких как PPTP, GRE, L2TP, IPSec, PPPoE, OpenVPN и т.п..
Лично мне для решения этой задачи знакомый сисадмин посоветовал использовать VTun. Так как на обоих узлах в качестве ОС установлен Linux, то VTun будет удобным и простым решением.
В возможности VTun входит шифрование трафика, шейпинг, компрессия. Из вариантов туннелирования VTun поддерживает IP (tun), Ethernet (ether), tty и pipe туннели. Всего вышеперечисленного более чем достаточно для решения задачи. В дополнении к возможностям, VTun крайне прост в настройке, которая состоит из одного единственного конфигурационного файла.
И так, приступим. Первый узел — компьютер с Debian 5.0 на борту, на втором установлена Ubuntu Server 10.04. И там, и там в репозиториях есть VTun версии 3.0.2 и ядро, включающее в себя драйвер виртуального tun-интерфейса.
Установим vtun на обеих машинах консольной командой
~$ sudo aptitude install vtun
Теперь сконфигурируем один компьютер как vtun-сервер, а другой как vtun-клиент. Первому условно дадим имя «SERVER», второму «CLIENT», — так будет понятнее.
SERVER
Файл конфигурации /etc/vtund.conf
# глобальные настройки
options {
ifconfig /sbin/ifconfig; # путь до утилиты ifconfig
}
# конфигурация хоста (client - название)
# название хоста на клиенте и сервере должны совпадать
client {
encrypt yes; # включаем шифрование соединения
compress no; # отключаем сжатие трафика
passwd secret; # пароль для авторизации клиента
type tun; # тип туннеля (в данном случае IP-туннель)
keepalive yes; # поддерживаем соединение
stat yes; # включаем учет статистики интерфейса
proto udp; # используемый протокол
# список команд, запускаемых после создании туннеля
up {
# прописываем настройки интерфейса, %% - имя интерфейса
ifconfig "%% 192.168.200.1 pointopoint 192.168.200.2";
};
# список команд, запускаемых после отключении туннеля
down {
ifconfig "%% down"; # опускаем интерфейс
};
}
Файл конфигурации /etc/default/vtun
# указываем, что vtun должен запускаться как демон RUN_SERVER=yes
CLIENT
Файл конфигурации /etc/vtund.conf
options {
ifconfig /sbin/ifconfig;
}
client {
passwd secret; # пароль
persist yes; # пытаться подключиться при потере соединения
up {
ifconfig "%% 192.168.200.2 pointopoint 192.168.200.1";
};
down {
ifconfig "%% down";
};
}
Файл конфигурации /etc/default/vtun
CLIENT0_NAME=client # имя клиента CLIENT0_HOST=server.tld # реальный адрес vtun-сервера
Как видно выше, конфиги получились очень простые. Для лучшего понимания я добавил комментарии. Дополнительную информацию по настройке VTun всегда можно получить из документации.
После того как конфигурация будет окончена необходимо запустить vtun на обеих машинах командой
~$ sudo invoke-rc.d vtun start
На сервере и клиенте появятся виртуальные интерфейсы tun0 с адресами 192.168.200.1 и 192.168.200.2 соответственно.
Интерфейсы появились, адреса назначены — VPN работает как надо. Теперь можно работать с удаленным узлом через виртуальный интерфейс tun0, используя присвоенный ему IP-адрес.
Таким образом, с помощью VTun можно создавать большие и сложные виртуальные сети, объединять в одну большую сеть разрозненные локальные и так далее. Возможно, в следующей статье я напишу об объединении нескольких локальных сетей в одну большую виртуальную. Следите за обновлениями.