В предыдущей статье было показано как можно быстро и легко объединить сети двух офисов через GRE-туннель, однако протокол GRE не поддерживает шифрование и если это является критичным то нужно использовать другие решения. В частности можно использовать vtun, который поддерживает шифрование и настраивается ненамного сложнее GRE-туннеля. Далее будет показано как можно организовать vtun-туннель.
По своему функционалу vtun практически не уступает OpenVPN и имеет ряд уникальных возможностей, в частности возможность "проброса" UNIX-пайпов (pipes) через сеть. Мы же используем только возможность организации соединения точка-точка для замены GRE-туннеля из предыдущей статьи. Все начальные условия у нас будут точно такие же.
Приступаем к установке. Выполним на шлюзах обоих офисов команду:
apt-get install vtun
Сгенерируем пароль. Для этого можно использовать вот такую команду:
head -c 4000 /dev/urandom | sha256sum | awk '{print $1;}'
В результате будет получена строка, которую мы и будем использовать в качестве пароля. Выглядеть она будет примерно вот так:
806f568b6dfec3633b4cc2d50aed240b988f897d0863082ad4c58c57477710e7
На сервере центрального офиса создадим файл /etc/vtund.conf следующего содержания:
# Основные настройки default { # Режим соединения type tun; # Используемый протокол proto tcp; # Будем использовать сжатие compress lzo:9; # Будем использовать устойчивые соединения keepalive yes; } # Сессия office0 { # Будем создавать устройство tun0 device tun0; # Используем шифрование encrypt yes; # Пароль для подключения passwd 806f568b6dfec3633b4cc2d50aed240b988f897d0863082ad4c58c57477710e7; up { # Настройки сетевого интерфейса ifconfig "%% 172.17.254.1 pointopoint 172.17.254.2 mtu 1450" # Маршрут на сеть филиала route "add -net 192.168.102.0/24 dev %%"; }; }
Приведём файл "/etc/default/vtun" к виду:
# Разрешам запуск сервера RUN_SERVER=yes # Дополнительные опции. Указываем порт, на котором будет слушать сервер SERVER_ARGS="-P 5000"
И запустим сервер:
invoke-rc.d vtun start
Остаётся только разрешить обращение к порту 5000/tcp в файрволле и можно переходить к настройке vtun-клиента на сервере филиала.
Файл "/etc/vtund.conf" на сервере филиала будет выглядеть вот так:
# Основные настройки default { # Режим соединения type tun; # Используемый протокол proto tcp; # Используем сжатие compress lzo:9; # Используем устойчивые соедения keepalive yes; } # Сессия office0 { # Создаваемое устройство device tun0; # Шифрование encrypt yes; # Пароль passwd 806f568b6dfec3633b4cc2d50aed240b988f897d0863082ad4c58c57477710e7; up { # Настройки сетевого интерфейса ifconfig "%% 172.17.254.2 pointopoint 172.17.254.1 mtu 1450"; # Маршрут на сеть филиала route "add -net 192.168.101.0/24 dev %%"; }; }
Файл "/etc/default/vtun" на сервере филиала имеет вид:
# Имя сессии CLIENT0_NAME=office0 # Адрес сервере головного офиса CLIENT0_HOST=1.1.1.1 # Дополнительные опции. Указываем порт, на котором будет слушать сервер CLIENT0_ARGS="-P 5000"
Запускаем vtun:
invoke-rc.d vtun start
На этом настройка заканчивается. Для проверки успешности соединения можно пропинговать адрес интерфейса tun0 в соседнем офисе.
Приятной работы!
Anonymous 2010-12-30 12:49:59 (#)
Такой вопрос -- вы не проводили сравнение производительности разных туннелей (vtun/openvpn/ipsec/xl2tp)?
У меня сейчас два оффиса соеденины посредством openvpn через линк 100мбит/сек. Но скорость внутри самого туннеля -- 50 мбит/сек максимум, обычно ~30. Загрузка процессоров небольшая (подозревал, что шифрация съедает CPU)...
Вот и думаю, на какой тип туннеля перейти...