Шифруемся VPN'ом

Дата: 18.01.2009

Рубрики: *NIX, Technology, Интернет

Возникают в жизни иногда такие моменты когда нужно зашифровать интернет-трафик, которым обмениваются два хоста находящиеся в разных точках планеты. Для таких целей очень хорошо подходит решение под названием OpenVPN.

Отбросив в сторону обсуждение мотивов, которые могут сподвигнуть человека на такое решение, бо их может быть великое множество, рассмотрим реализацию на конкретном примере. А вернее на двух конкретных примерах.

В обоих примерах считаем что локально у нас какой-нибудь XP, а удаленная машина, с которой нужно обмениваться шифрованным трафиком это VDS на базе OpenVZ.

Пример первый. Мы хотим выходить в интернет через удаленный конец туннеля.

Ставим openvpn

# apt-get install openvpn

или для красной шапки

# yum install openvpn

Пишем в поддержку хостера, предоставляющего Вам VDS просьбу включить для него tun/tap интерфейсы и поддержку NAT, обычно не отказвают.

Пока ждем — стругаем конфиги для клиентской и серверной части и устанавливаем клиентскую часть на наш локальный компьютер.

Конфиг сервера будет примерно такой, с объяснением основных опций:

port 1194 # порт
proto udp # протокол
dev tun # туннельный интерфейс
ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/server.crt
key /etc/openvpn/easy-rsa/keys/server.key
dh /etc/openvpn/easy-rsa/keys/dh1024.pem
# Предыдущие четыре строчки это наше шифрование
# о нем ниже
server 10.8.0.0 255.255.255.0 # наша сетка
ifconfig-pool-persist ipp.txt # пул адресов
push «route 10.8.0.1» # маршрут
push «redirect-gateway def1» # делать defaulgate'ом
push «dhcp-option DNS 10.8.0.1» # DNS-сервер
push «dhcp-option WINS 10.8.0.1» # WINS-сервер
# все что push передается клиенту в качестве
# параметров настройки сет
keepalive 10 120 # поддерживать связь
comp-lzo # пожать трафик
user nobody # пользователь
group nogroup # группа
persist-key # 
persist-tun
status openvpn-status.log
log         /var/log/openvpn.log # лог
verb 6 # детализация лога

Конфиг для клиента такой:

client
dev tun
dev-node test # определяет как называется
# сетевое подключение, можно не указывать
proto udp
remote 2.14.6.6 1194 # адрес и порт на сервере
resolv-retry infinite
nobind
route-method exe
route-delay 2
persist-key
persist-tun
mute-replay-warnings
ca «c:\\vpn\\ca.crt»
cert «c:\\vpn\\client1.crt»
key «c:\\vpn\\client1.key»
ns-cert-type server
cipher BF-CBC
verb 6
mute 20
comp-lzo

Теперь о ключах. В комплекте с OpenVPN идет набор скриптов для создания центра сертификации и генерирования ключей для сервера и клиентов, называется easy-rsa. Создаем необходимые ключи и сертификаты с его помощью.

# cd /etc/openvpn/easy-rsa
# ./vars
# ./clean-all
# ./build-ca
# ./build-key-server server
# ./build-key client1
# ./build-dh

Копируем ca.crt, client1.crt и client1.key на локальный компьютер в директорию c:\vpn, ждем от поддержки хостера сообщения что tun/tap и NAT для VDS активированы.

Запускаем openvpn на сервере

# /etc/init.d/openvpn start

На локальном компьютере тыкаем на свежесозданный конфиг правой кнопкой и выбираем в меню Start OpenVPN with this config

Подключились — хорошо, не подключились — аализируем логи и ищем ошибки.

Последний штрих. Для того чтобы ходить в интернет через тунель нужно настроить NAT на VDS следующим образом.

# /sbin/iptables -t nat -A POSTROUTING -o venet0 -j MASQUERADE
# /sbin/iptables -A FORWARD -i venet0 -o tun0 -m state \
— state RELATED,ESTABLISHED -j ACCEPT
# /sbin/iptables -A FORWARD -i tun0 -o venet0 -j ACCEPT

Все готово, можно бороздить просторы World Wide Web.

Пример второй. У Вас на локальном компьютере на абстрактном порту, например 9090 слушает некий сервис и Вы хотите чтобы к нему можно было обращаться извне. Настройка OpenVPN будет аналогичной, а вот NAT нужно сделать по-другому.

iptables -t nat -A PREROUTING -p tcp -d 2.14.6.6 --dport 9090 \
— j DNAT --to-destination 10.8.0.2:9090
iptables -t nat -A POSTROUTING -o tap0 -j SNAT --to-source 10.8.0.2

Вот примерно так, ну и конечно объединить вариант тоже никто не мешает.

Решения проверены на практике, работают. Если что-то не работает — ищите ошибки.

Интересное в найденном:

  • Встретил намедни ресурс, блог салона моды (да-да, блоги ведут не только интернет-гики). А ведь, действительно, есть, что почитать, от инструкций как правильно погладить рубашку до советов как оправдываться, если вещь купленная в подарок не подошла тому, кому предназначалась. Добавляю в закладки, пригодится при создании имиджа.
  • Прикольная фишка, которую подсказал коллега. Типа погугли за меня. Естественно тоже в закладки и активно юзать против тех кто не желает пользоваться поиском.
  • Лилея мечту построить собственный дерявянный коттедж за городом периодически почитываю информацию по теме. Вот сегодня еще один ресурс достойный внимания — загородные дома из дерева. Есть каталог проектов, парочку для себя даже приглядел.

Связанные записи

Метки: , ,

Комментариев нет на запись "Шифруемся VPN'ом"

Ваш комментарий может быть первым :) .

Оставить комментарий

Имя:
E-mail:
Сайт: