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

В последнее время в странах СНГ, а в частности в России и Украине, некоторые полезные обществу веб-сайты попали под блокировку. Одним из решений данной проблемы является использование VPN серверов. Но многим публичным VPN серверам, а особенно бесплатным доверять свой траффик не всегда надежно. Выходом станет развертывание личного OpenVPN сервера, который позволит скрывать ваш реальный IP и местоположение, а также шифровать и сжимать траффик в реальном времени.

Для начала нам потребуется арендовать VPS сервер, с ОС Linux. Найти компании предоставляющие VPS в аренду не сосотавит труда, обратившись с соответствующим поисковым запросом в Google.

После процедуры арендования сервера и оплаты, нам предоставят доступ уровня администратора. Первым делом подключаемся по SSH и меняем пароль.

Процедура установки на Debian-подобных дистрибутивах будет выглядеть следующим образом.

Обновляем пакеты и ставим OpenVPN:

apt-get update
apt-get install openvpn

Теперь склонируем из GitHub последнюю версию утилиты EasyRSA, предназначенную для генерации сертификатов и ключей, затем разархивируем ее:

wget https://github.com/OpenVPN/easy-rsa/archive/master.zip
unzip master.zip

Собираем утилиту, вызвав соответствующий скрипт:

cd easy-rsa-master
./build/build-dist.sh

После сборки, инициализируем центр сертификации, генерируем серверный и клиентские сертификаты и ключи:

Во время генерации, вам потребуется ввести пароли от серверного и клиентских сертификатоа, а также некоторые данные для серверного сертификата, (вроде кода страны и названия организации).

cd easyrsa3
./easyrsa init-pki
./easyrsa build-ca
./easyrsa build-server-full server
./easyrsa build-client-full client1
./easyrsa gen-dh

Теперь скопируем полученные ключи в рабочую папку OpenVPN:

cp ./pki/dh.pem /etc/openvpn/dh.pem
cp ./pki/private/client1.key /etc/openvpn/
cp ./pki/private/server.key /etc/openvpn/
cp ./pki/ca.crt /etc/openvpn/
cp ./pki/issued/client1.crt /etc/openvpn/
cp ./pki/issued/server.crt /etc/openvpn/

Теперь создадим главный конфигурационный файл OpenVPN. Воспользуемся консольным редактором nano:

nano /etc/openvpn/server.conf

В файл записываем следующее:

mode server
dev tun
server 10.128.0.0 255.255.255.0

push "redirect-gateway def1"
push "dhcp-option DNS 8.8.8.8"
push "sndbuf 393216"
push "rcvbuf 393216"
sndbuf 393216
rcvbuf 393216
tls-server

ca ca.crt
cert server.crt
key server.key
dh dh.pem

proto udp
port 1194

fast-io
mssfix 1200

client-to-client
comp-lzo
keepalive 10 120
verb 4

cipher BF-CBC
user nobody
group nogroup
max-clients 25

Сохраняем файл (сочетанием клавиш Ctrl + O) и выходим из nano (сочетание Ctrl + X).

Теперь включаем форвардинг пакетов по протоколу IPv4:

echo 1 >> /proc/sys/net/ipv4/conf/all/forwarding
/etc/init.d/networking/restart

Далее, настроим маршрутизацию из виртуальной подсети VPN 10.128.0.0/24 на основной сетевой интерфейс:

iptables -A FORWARD -s 10.128.0.0/24 -j ACCEPT
iptables -A FORWARD -d 10.128.0.0/24 -m state \
—state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.128.0.0/24 \
-j SNAT —to-source W.X.Y.Z

где W.X.Y.Z — IP адрес VPS сервера.

Сохраняем правила маршрутизации:

iptables-save > /etc/iptables.rules

В конфигурации сетевых интерфейсов настроим автоматическое применение настроек маршрутизации при загрузке сервера:

echo «pre-up iptables-restore < /etc/iptables.rules» >> /etc/network/interfaces

Теперь запустим OpenVPN сервер:

service openvpn start

Проверим, что на сетевом интерфейсе прослушивается порт 1194:

netstat -tuwpan | grep 1194

Если порт прослушивается, то вывод предидущей команды будет примерно таким:

udp        0      0 0.0.0.0:1194              0.0.0.0:*                           30611/openvpn

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

  • ca.crt — серверный сертификат
  • client1.crt — клиентский сертификат
  • client1.key — клиентский ключ

Сделать это можно через SFTP клиент, например FileZilla.

На клиентском компьютере создадим конфигурационный файл config.ovpn:

client
proto udp
dev tun
remote W.X.Y.Z 1194
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
cipher BF-CBC
verb 3
comp-lzo

где W.X.Y.Z — IP адрес VPS сервера, а файлы ca.crt, client1.crt и client1.key лежат в одной папке с конфигурационным файлом.

Теперь пробуем подключиться. На Linux машине это делается командой:

sudo openvpn —config config.ovpn

Пробуем зайти на сайт 2ip.ru и проверить поменялся ли наш сетевой адрес. Елси поменялся — то сеть настроена корректно.

Если адрес не изменился, либо никакой сайт не открывается — нужно еще раз перепроверить настройки OpenVPN и iptables на сервере,  а также проверить лог /var/log/syslog на наличие ошибок.

На этом настройка личного VPN сервера завершена. В итоге наш траффик будет сжиматься и шифроваться, а также на сервере не будет вестись логов соединений, что является немаловажной мерой безопасности.

 

ShiftHackZ

ShiftHackZ

Автор блога LocalHost // Blog. Интересуюсь компьютерными технологиями, системным администрированием и веб-разработкой. Днями напролет провожу время за своим компьютером и самосовершенствуюсь. Подробнее

Читайте также:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *