Поиск по сайту:

Установка и настройка сервера OpenVPN и клиента в Debian 7


В этой статье подробно описано, как получить подключение по IPv6 в OpenVPN с помощью Debian Linux. Этот процесс был протестирован на Debian 7 на KVM VPS с подключением IPv6 в качестве сервера и на рабочем столе Debian 7. Команды должны выполняться от имени пользователя root.

Что такое ОпенВПН?

OpenVPN — это программа VPN, которая использует SSL/TLS для создания безопасных зашифрованных VPN-соединений и маршрутизации вашего интернет-трафика, предотвращая тем самым слежку. Open VPN обладает высокой способностью прозрачного прохождения через межсетевые экраны. Фактически, если того требует ситуация, вы можете запустить его на том же TCP-порту, что и HTTPS (443), что сделает трафик неотличимым и, следовательно, практически невозможным для блокировки.

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

Зачем использовать OpenVPN?

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

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

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

Системные Требования

OpenVPN требует очень минимальных требований для запуска. Для работы OpenVPN достаточно системы с 64 МБ ОЗУ и 1 ГБ на жестком диске. OpenVPN работает практически на всех основных операционных системах.

Установка и настройка OpenVPN в Debian 7

Установите OpenVPN на главный сервер

Запустите следующую команду, чтобы установить OpenVPN.

apt-get install openvpn

По умолчанию сценарии easy-rsa устанавливаются в каталог «/usr/share/easy-rsa/». Итак, нам нужно скопировать эти скрипты в нужное место, например /root/easy-rsa.

mkdir /root/easy-rsa
cp -prv /usr/share/doc/openvpn/examples/easy-rsa/2.0 /root/easy-rsa

Создать сертификат CA и ключ CA

Откройте файл «vars» и внесите следующие изменения, но перед внесением изменений я предлагаю вам сделать резервную копию исходного файла.

cp vars{,.orig}

Используя текстовый редактор, установите значения по умолчанию для easy-rsa. Например.

KEY_SIZE=4096
KEY_COUNTRY="IN"
KEY_PROVINCE="UP"
KEY_CITY="Noida"
KEY_ORG="Home"
KEY_EMAIL="[email "

Здесь я использую битовый ключ 4096. По желанию вы можете использовать битовый ключ 1024, 2048, 4096 или 8192.

Экспортируйте значения по умолчанию, выполнив команду.

source ./vars

Очистите все сертификаты, которые были созданы ранее.

./clean-all

Затем выполните следующую команду, чтобы сгенерировать сертификат CA и ключ CA.

./build-ca

Создайте сертификат сервера, выполнив команду. Замените «имя сервера» на имя вашего сервера.

./build-key-server server-name

Создайте сертификат Diffie Hellman PEM.

./build-dh

Создайте сертификат клиента. Замените «имя клиента» на имя вашего клиента.

./build-key client-name

Сгенерируйте код HMAC.

openvpn --genkey --secret /root/easy-rsa/keys/ta.key

Скопируйте сертификаты на клиентские и серверные компьютеры следующим образом.

  1. Убедитесь, что ca.crt присутствует как на клиенте, так и на сервере.
  2. Ключ ca.key должен находиться на клиенте.
  3. Серверу требуются server.crt, dh4096.pem, server.key и ta.key.
  4. client.crt, client.key и ta.key должны находиться на клиенте.

Чтобы настроить ключи и сертификаты на сервере, выполните команды.

mkdir -p /etc/openvpn/certs
cp -pv /root/easy-rsa/keys/{ca.{crt,key},server-name.{crt,key},ta.key,dh4096.pem} /etc/openvpn/certs/

Настройка OpenVPN-сервера

Теперь вам нужно настроить сервер OpenVPN. Откройте файл «/etc/openvpn/server.conf». Пожалуйста, внесите изменения, как описано ниже.

script security 3 system
port 1194
proto udp
dev tap

ca /etc/openvpn/certs/ca.crt
cert /etc/openvpn/certs/server-name.crt
key /etc/openvpn/certs/server-name.key
dh /etc/openvpn/certs/dh4096.pem
tls-auth /etc/openvpn/certs/ta.key 0

server 192.168.88.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"

keepalive 1800 4000

cipher DES-EDE3-CBC # Triple-DES
comp-lzo

max-clients 10

user nobody
group nogroup

persist-key
persist-tun

#log openvpn.log
#status openvpn-status.log
verb 5
mute 20

Включите переадресацию IP на сервере.

echo 1 > /proc/sys/net/ipv4/ip_forward

Выполните следующую команду, чтобы настроить OpenVPN для запуска при загрузке.

update-rc.d -f openvpn defaults

Запустите службу OpenVPN.

service openvpn restart

Установите OpenVPN на клиенте

Запустите следующую команду, чтобы установить OpenVPN на клиентском компьютере.

apt-get install openvpn

Используя текстовый редактор, настройте конфигурацию клиента OpenVPN в «/etc/openvpn/client.conf» на клиенте. Пример конфигурации выглядит следующим образом:

script security 3 system
client
remote vpn_server_ip
ca /etc/openvpn/certs/ca.crt
cert /etc/openvpn/certs/client.crt
key /etc/openvpn/certs/client.key
cipher DES-EDE3-CBC
comp-lzo yes
dev tap
proto udp
tls-auth /etc/openvpn/certs/ta.key 1
nobind
auth-nocache
persist-key
persist-tun
user nobody
group nogroup

Выполните следующую команду, чтобы настроить OpenVPN для запуска при загрузке.

update-rc.d -f openvpn defaults

Запустите службу OpenVPN на клиенте.

service openvpn restart

Если вы убедились, что OpenVPN хорошо работает на IPv4, вот как заставить IPv6 работать через OpenVPN.

Как IPv6 работает с OpenVPN на сервере

Добавьте следующие строки в конец файла конфигурации сервера «/etc/openvpn/server.conf».

client-connect /etc/openvpn/client-connect.sh
client-disconnect /etc/openvpn/client-disconnect.sh

Эти два сценария создают/разрушают туннель IPv6 каждый раз, когда клиент подключается/отключается.

Вот содержимое client-connect.sh.

#!/bin/bash
BASERANGE="2a00:dd80:003d:000c"
ifconfig $dev up
ifconfig $dev add ${BASERANGE}:1001::1/64
ip -6 neigh add proxy 2a00:dd80:003d:000c:1001::2 dev eth0
exit 0

Мой хост назначает мне адреса IPV6 из блока 2a00:dd80:003d:000c::/64. Поэтому я использую
2a00:dd80:003d:000c в качестве БАЗОВОГО ДИАПАЗОНА. Измените это значение в соответствии с тем, что вам назначил ваш хост.

Каждый раз, когда клиент подключается к OpenVPN, этот сценарий назначает адрес 2a00:dd80:003d:000c:1001::1 в качестве IPV6 адреса tap0<. интерфейс сервера.

Последняя строка настраивает Neighbor Discovery для нашего туннеля. Я добавил адрес IPv6 клиентского соединения tap0 в качестве прокси-адреса.

Вот содержимое client-disconnect.sh.

#!/bin/bash
BASERANGE="2a00:dd80:003d:000c"
/sbin/ip -6 addr del ${BASERANGE}::1/64 dev $dev
exit 0

Это просто удаляет адрес туннеля IPv6 сервера, когда клиент отключается. Измените значение BASERANGE соответствующим образом.

Сделайте скрипты исполняемыми.

chmod 700 /etc/openvpn/client-connect.sh
chmod 700 /etc/openvpn/client-disconnect.sh

Добавьте следующие записи в «/etc/rc.local» (вы также можете изменить соответствующие sysctl в /etc/sysctl.conf).

echo 1 >/proc/sys/net/ipv6/conf/all/proxy_ndp
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
/etc/init.d/firewall stop && /etc/init.d/firewall start

Эти записи активируют обнаружение и пересылку соседей. Я также добавил брандмауэр.

Создайте «/etc/init.d/firewall» и поместите следующий контент.

#!/bin/sh
description: Firewall
IPT=/sbin/iptables
IPT6=/sbin/ip6tables
case "$1" in
start)
$IPT -F INPUT
$IPT -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
$IPT -A INPUT -i eth0 -p icmp -j ACCEPT
$IPT -A INPUT -i eth0 -p udp --dport 1194 -j ACCEPT
$IPT -A INPUT -i tap+ -j ACCEPT
$IPT -A FORWARD -i tap+ -j ACCEPT
$IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -t nat -F POSTROUTING
$IPT -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
$IPT -A INPUT -i eth0 -j DROP
$IPT6 -F INPUT
$IPT6 -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT6 -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
$IPT6 -A INPUT -i eth0 -p icmpv6 -j ACCEPT
$IPT6 -A FORWARD -s 2a00:dd80:003d:000c::/64 -i tap0 -o eth0 -j ACCEPT
$IPT6 -A INPUT -i eth0 -j DROP
exit 0
;;
stop)
$IPT -F
$IPT6 -F
exit 0
;;
*)
echo "Usage: /etc/init.d/firewall {start|stop}"
exit 1
;;
esac

Запустите /etc/rc.local и запустите брандмауэр.

sh /etc/rc.local

На этом изменения на стороне сервера завершены.

Как IPv6 работает с OpenVPN на клиенте

Добавьте следующее в последние строки файла конфигурации вашего клиента «/etc/openvpn/client.conf».

create the ipv6 tunnel
up /etc/openvpn/up.sh
down /etc/openvpn/down.sh
need this so when the client disconnects it tells the server
explicit-exit-notify

Скрипты up и down создают/уничтожают конечные точки клиента IPV6 клиентского соединения Tap0 каждый раз, когда клиент подключается или отключается от сервера OpenVPN.

Вот содержимое up.sh.

#!/bin/bash
IPV6BASE="2a00:dd80:3d:c"
ifconfig $dev up
ifconfig $dev add ${IPV6BASE}:1001::2/64
ip -6 route add default via ${IPV6BASE}:1001::1
exit 0

Сценарий назначает адрес IPV6 2a00:dd80:3d:c:1001::2 в качестве адреса IPV6 клиента и устанавливает маршрут IPV6 по умолчанию через сервер.

Измените IPV6BASE так, чтобы он совпадал с BASERANGE в конфигурации сервера.

Вот содержимое down.sh.

#!/bin/bash
IPV6BASE="2a00:dd80:3d:c"
/sbin/ip -6 addr del ${IPV6BASE}::2/64 dev $dev
/sbin/ip link set dev $dev down
/sbin/ip route del ::/0 via ${IPV6BASE}::1
exit 0

Это просто удаляет адрес IPV6 клиента и разрывает маршрут IPV6, когда клиент отключается от сервера.

Измените IPV6BASE так, чтобы он совпадал с BASERANGE в конфигурации сервера, и сделайте скрипт исполняемым.

chmod 700 /etc/openvpn/up.sh
chmod 700 /etc/openvpn/down.sh

При желании измените «/etc/resolv.conf» и добавьте серверы имен Google IPV6 для разрешения DNS.

nameserver 2001:4860:4860::8888
nameserver 2001:4860:4860::8844

Перезапустите openvpn на сервере, а затем подключитесь к нему с клиента. Вы должны быть на связи. Посетите test-ipv6.com, чтобы убедиться, что ваше подключение IPV6 через OpenVPN работает.

Справочные ссылки

Домашняя страница OpenVPN

Источник: Ставровский