6LfB03sUAAAAAFw2B3PpkHMRig_1rrgSl9RkV0Wa

Настройка сервера OpenVPN на CentOS 6

Настройка сервера OpenVPN на CentOS 6

100%  рабочая инструкция по настройке своего (очень дешёвого!!) персонального VPN сервера. Сервер будем настраивать на Linux (CentOS -6). В инструкции пошаговая настройка со скриншотами.

Итак, есть много сервисов, предлагающих услуги VPN. Но они нам не подходят, так как рано или поздно «лягут» под правительство, да и логи (данные о всем происходящем на сервере) скорее всего они ведут. Будем создавать свой островок независимости.

Нам очень нужно учитывать абузоустойчивость (слабая или полное отсутствие реакции  на жалобы) при выборе страны для размещения там VPN. Учитывая политическую обстановку, по состоянию на декабрь 2017 года нам подойдут Украина и Америка. Можно, например, прокси сервер поднять в Украине, а VPN в США.

Нам придется купить виртуальный/выделенный сервер. Я нашел украинский, стоимостью всего 1 доллар за месяц. Нам он подойдет и по характеристикам и для тренировки по настройке сервера. Заходим сюда и регистрируемся. Данные при регистрации о себе можно указывать любые. Выбираем виртуальный сервер (тариф KVM-512) за 1 $ в месяц. В поле настройки сервера «операционная система» выбираем CentOS-6 — amd64. После оплаты вам на почту придет письмо с информацией об успешном создании сервера и данные в виде логина/пароля и ip адресе сервера:

Настройка сервера OpenVPN на CentOS 6

Теперь один момент: так как вы пришли на сайт провайдера скорее всего с российского IP, вам будет предложен российский IP. Для наших целей он, разумеется, не подходит. Напишите заявку в техподдержку, они вам предоставят украинский IP. Мало того, по вашей просьбе, они сами изменят сетевые настройки для вашего сервера. Отдельно хочу отметить и поблагодарить техподдержку хостинга neohost.net в лице Виктора.

Сервер готов, теперь мы должны установить безопасное соединение с ним, а поможет нам в этом программа Putty качаем с официального сайта. Выбираем 32-х или 64-х битную версию для своего компьютера и устанавливаем.

Подключаемся к серверу:

Настройка сервера OpenVPN на CentOS 6

Запускаем Putty, в поле «Host Name (or IP addres)» вводим IP адрес из письма, в поле «Port» вводим 22, «Conection type» вводим SSH. Чтобы каждый раз не вводить настройки, придумайте название своему серверу, введите его в поле «Saved session» и нажмите кнопку «Save». При следующем запуске Putty нужно будет выбрать название своего сервера из списка и нажать кнопку «Load». Ну все, нажимаем кнопку «Open».

Выскочит окно предупреждения первого запуска, жмем «Да!».

Настройка сервера OpenVPN на CentOS 6

Вводим учетные данные для входа на сервер. «Login as:» вводим root.

Настройка сервера OpenVPN на CentOS 6 Важно!!!

Если вы забыли переключить регистр клавиатуры на английский, и начали вводить «Login as:» кщще, перезагружайте Putty, она не даст подключиться. Этот  глюк может ввести в отчаянье «новоначального» линуксоида.

Следующая «фишка» ждет нас при вводе пароля. Когда вы начнете вводить пароль, он не будет отображаться. Для упрощения ввода пароля, на первое время, советую скопировать его в буфер обмена из письма обычным способом для Windows, а вот вставляться он должен будет по правилам Linux, то есть просто одним кликом правой кнопки мыши. Наводим и жмем на курсор левой кнопкой, жмем правую и Enter.

Если все прошло успешно, мы попадаем в систему с root правами.

Настройка сервера OpenVPN на CentOS 6

В нашей системе пока только один пользователь с root правами.

Для безопасности, нужно создать другого пользователя (и делайте так всегда) с возможностью запускать программы от имени администратора. Описание здесь.

У этого провайдера и конкретно в этой сборке ОС (CentOS release 6.9 (Final)) не установлены ропозитории, соответственно OpenVPN тут нет.

Далее, символ # означает что вы находитесь в своей ОС как root пользователь, а после символа вы выделяете строку, копируете ее отсюда и одним кликом правой кнопки мыши кликаете на курсор напротив вашей учетной записи :

[root@ankledeath ~]# сюда                               / потом жмем enter

Установка репозитория Epel:

# wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm    /скачиваем

Настройка сервера OpenVPN на CentOS 6

Жмем enter:

Настройка сервера OpenVPN на CentOS 6

 

# rpm -Uvh epel-release-6*.rpm                                      /Устанавливаем

Настройка сервера OpenVPN на CentOS 6

Жмем enter.

Настройка сервера OpenVPN на CentOS 6

Проверяем, подключился ли репозиторий Epel:

# yum repolist | grep epel

Если у нас так:
Настройка сервера OpenVPN на CentOS 6
то все хорошо.

 

Устанавливаем сервер OpenVPN  из репозитория Epel для настройки частной виртуальной сети:

# yum -y install openvpn easy-rsa

Настройка сервера OpenVPN на CentOS 6

Так как ПО OpenVPN обновляется, то вам необходимо проверить версию установленной программы:

# cd /usr/share/doc/                                  /переходим в место установки openVPN

# ls -al             /выводим на экран список всех директорий и файлов в этой папке

Настройка сервера OpenVPN на CentOS 6

Наша версия 2.4.4 (у вас может быть уже другая, поэтому укажите свою версию в строке создания файла конфигурации сервера, выделил жирным).

Создаём файл конфигурации server.conf копируя его из папки примеров конфигурации файлов в папку /etc/openvpn/:

# cp /usr/share/doc/openvpn-2.4.4/sample/sample-config-files/server.conf /etc/openvpn/

Настройка сервера OpenVPN на CentOS 6

Редактируем файл конфигурации сервера:

# vim /etc/openvpn/server.conf

Настройка сервера OpenVPN на CentOS 6

Если вы первый раз работаете с редактором Vim, то здесь нужны пояснения. Нажмите клавишу » i » и вы перейдете в режим редактирования текста в данном файле. Внизу должна появиться надпись «Insert»:

Настройка сервера OpenVPN на CentOS 6

Данный текст является настройками для нашего будущего сервера. Особенности настроек: строки, начинающиеся с символа #, являются просто комментарием к своему участку настроек. Например участок:

# Which local IP address should OpenVPN
# listen on? (optional)
;local a.b.c.d

означает что:

# Какой локальный адрес будет OpenVPN

# прослушиваться?

Символ « ; » перед local a.b.c.d означает что эта настройка выключена. Что ы ее включить, нужно удалить этот символ.

Переходим к настройкам. Указываем на каком IP будет работать OpenVPN сервер (тут 93.179.68.75 – внешний IP сервера):

# Which local IP address should OpenVPN
# listen on? (optional)
local 93.179.68.75

Задаём настройки OpenVPN сети:

# Configure server mode and supply a VPN subnet
# for OpenVPN to draw client addresses from.
# The server will take 10.8.0.1 for itself,
# the rest will be made available to clients.
# Each client will be able to reach the server
# on 10.8.0.1. Comment this line out if you are
# ethernet bridging. See the man page for more info.
server 10.0.0.0 255.255.255.0

Задаем передачу параметров клиентам, благодаря которым весь их трафик будет перенаправляться через OpenVPN:

# If enabled, this directive will configure
# all clients to redirect their default
# network gateway through the VPN, causing
# all IP traffic such as web browsing and
# and DNS lookups to go through the VPN
# (The OpenVPN server machine may need to NAT
# or bridge the TUN/TAP interface to the internet
# in order for this to work properly).
push «redirect-gateway def1 bypass-dhcp»

Задаем DNS-сервера для клиентов:

# Certain Windows-specific network settings
# can be pushed to clients, such as DNS
# or WINS server addresses. CAVEAT:
# http://openvpn.net/faq.html#dhcpcaveats
# The addresses below refer to the public
# DNS servers provided by opendns.com.
push «dhcp-option DNS 10.0.0.1»
push «dhcp-option DNS 8.8.8.8»

«Выключаем» запрос ключа tls-auth ta.key 0:
Надо поставить символ # перед ним.
# For extra security beyond that provided
# by SSL/TLS, create an «HMAC firewall»
# to help block DoS attacks and UDP port flooding.
#
# Generate with:
# openvpn —genkey —secret ta.key
#
# The server and each client must have
# a copy of this key.
# The second parameter should be ‘0’
# on the server and ‘1’ on the clients.
# tls-auth ta.key 0 # This file is secret   /вот так должна выглядеть эта строка

Задаем пользователя, под которым будет работать OpenVPN:

# It’s a good idea to reduce the OpenVPN
# daemon’s privileges after initialization
#
# You can uncomment this out on
# non-Windows systems.
user nobody
group nobody

Задаем место хранения логов:

# Output a short status file showing
# current connections, truncated
# and rewritten every minute.
status /var/log/openvpn-status.log

и:

# By default, log messages will go to the syslog (or
# on Windows, if running as a service, they will go to
# the «Program FilesOpenVPNlog» directory).
# Use log or log-append to override this default.
# «log» will truncate the log file on OpenVPN startup,
# while «log-append» will append to it. Use one
# or the other (but not both).
;log openvpn.log
log-append /var/log/openvpn.log

Настройки сервера готовы, сохраняем и выходим. (для этого нажимаем Esc, потом « : «, потом » w «, потом » q «)

Создаем сертификаты для OpenVPN сервера.
Создаём директорию для сертификатов:
# mkdir -p /etc/openvpn/easy-rsa/keys

Копируем необходимые файлы:
# cp -r /usr/share/easy-rsa/2.0/* /etc/openvpn/easy-rsa/

Что бы не вводить вручную данные во время генерации сертификатов, нужно отредактировать следующие параметры:
# vim /etc/openvpn/easy-rsa/vars

export KEY_COUNTRY=»US» /заменить «US» например на «RU»
export KEY_PROVINCE=»CA» /заменить «CA» например на «MW»
export KEY_CITY=»SanFrancisco» /заменить «SanFrancisco» например на «Moscow»
export KEY_ORG=»Fort-Funston» /заменить «Fort-Funston» например на «Myinfo-bissnes»
export KEY_EMAIL=»me@myhost.mydomain» /заменить «me@myhost.mydomain» например на «info@myinfobissnes.ru»
export KEY_OU=»MyOrganizationalUnit» /заменить «MyOrganizationalUnit» например на «Myinfo-bissnes»

# X509 Subject Field
export KEY_NAME=»EasyRSA» /оставить так

Данные для сертификата готовы, сохраняем и выходим. (для этого нажимаем Esc, потом « : «, потом » w «, потом » q «)

Генерируем сертификаты.

Переходим в нужную папку:

# cd /etc/openvpn/easy-rsa

Перечитаем файл vars:
# source ./vars
NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/keys

Удаляем старые ключи:
# ./clean-all

Создаём корневой сертификат:
# ./build-ca
Generating a 2048 bit RSA private key
……………………………
…………………………+++
………….+++
writing new private key to ‘ca.key’
——
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ‘.’, the field will be left blank.
——
Country Name (2 letter code) [RU]:
State or Province Name (full name) [MW]:
Locality Name (eg, city) [Moscow]:
Organization Name (eg, company) [Myinfo-bissnes]:
Organizational Unit Name (eg, section) [Myinfo-bissnes]:
Common Name (eg, your name or your server’s hostname) [Myinfo-bissnes CA]:
Name [EasyRSA]:
Email Address [info@myinfobissnes.ru]:

Далее создаём корневой сертификат для самого сервера:
# ./build-key-server server
Generating a 2048 bit RSA private key
………………………………………………………………………………………………….+++
………………………….+++
writing new private key to ‘server.key’
——
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ‘.’, the field will be left blank.
——
Country Name (2 letter code) [RU]:
State or Province Name (full name) [MW]:
Locality Name (eg, city) [Moscow]:
Organization Name (eg, company) [Myinfo-bissnes]:
Organizational Unit Name (eg, section) [Myinfo-bissnes]:
Common Name (eg, your name or your server’s hostname) [server]:
Name [EasyRSA]:
Email Address [info@myinfobissnes.ru]:

Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Using configuration from /etc/openvpn/easy-rsa/openssl-1.0.0.cnf
Check that the request matches the signature
Signature ok
The Subject’s Distinguished Name is as follows
countryName :PRINTABLE:’RU’
stateOrProvinceName :PRINTABLE:’MW’
localityName :PRINTABLE:’Moscow’
organizationName :PRINTABLE:’Myinfo-bissnes’
organizationalUnitName:PRINTABLE:’Myinfo-bissnes’
commonName :PRINTABLE:’server’
name :PRINTABLE:’EasyRSA’
emailAddress :IA5STRING:’info@myinfobissnes.ru’
Certificate is to be certified until Jan 5 14:44:21 2028 GMT (3650 days)
Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

Генерируем ключ Диффи-Хелмана (Diffie Hellman).
Алгоритм Диффи-Хелмана позволяет получить двум
сторонам общий секретный ключ, использующийся
для дальнейшего симметричного шифрования данных:
# ./build-dh

Следующий этап — создание сертификатов клиентов. Ниже расписанную процедуру нужно повторить столько раз, сколько клиентов вы собираетесь пускать через свой сервер. Как вариант — домашний ПК, ноутбук, свой телефон, телефон жены, может кого-то из друзей и т.д.
# ./build-key client

[root@ankledeath easy-rsa]# ./build-key client
Generating a 2048 bit RSA private key
……………………………………………………+++
…………..+++
writing new private key to ‘client.key’
——
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ‘.’, the field will be left blank.
——
Country Name (2 letter code) [RU]:
State or Province Name (full name) [MW]:
Locality Name (eg, city) [Moscow]:
Organization Name (eg, company) [Myinfo-bissnes]:
Organizational Unit Name (eg, section) [Myinfo-bissnes]:
Common Name (eg, your name or your server’s hostname) [client]:
Name [EasyRSA]:
Email Address [info@myinfobissnes.ru]:

Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Using configuration from /etc/openvpn/easy-rsa/openssl-1.0.0.cnf
Check that the request matches the signature
Signature ok
The Subject’s Distinguished Name is as follows
countryName :PRINTABLE:’RU’
stateOrProvinceName :PRINTABLE:’MW’
localityName :PRINTABLE:’Moscow’
organizationName :PRINTABLE:’Myinfo-bissnes’
organizationalUnitName:PRINTABLE:’Myinfo-bissnes’
commonName :PRINTABLE:’client’
name :PRINTABLE:’EasyRSA’
emailAddress :IA5STRING:’info@myinfobissnes.ru’
Certificate is to be certified until Jan 5 15:24:00 2028 GMT (3650 days)
Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

Переходим в папку ключей:
# cd keys/

Копируем ключи:
# cp dh2048.pem ca.crt server.crt server.key /etc/openvpn

Настройка роутинга и запуск OpenVPN сервера.

Проверяем статус IPTABLES:
# service iptables status

Настройка сервера OpenVPN на CentOS 6

Перезапускаем IPTABLES:
# service iptables restart

Настройка сервера OpenVPN на CentOS 6

Проверьте свои сетевые карты:
# ifconfig

Настройка сервера OpenVPN на CentOS 6

Я выделил красным название сетевой карты,»смотрящей» в интернет. Если вы настраиваете сервер у другого хостера, указывайте в следующих командах название вашей сетевой карты вместо eth0!!! Теперь, ВНИМАНИЕ!!! Далее, указано что внешний интерфейс – это сетевая карта eth0 с IP 93.179.68.75., а сеть для клиентов OpenVPN – 10.0.0.0/24.  

Добавляем правила:

# iptables -I INPUT 1 -p udp —dport 1194 -j ACCEPT
# iptables -I FORWARD -i eth0 -o tun0 -j ACCEPT
# iptables -I FORWARD -i tun0 -o eth0 -j ACCEPT
# iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j SNAT —to-source 93.179.68.75

Сохраняем настройки iptables в файл:
# service iptables save

Проверяем правила:
# service iptables status

Настройка сервера OpenVPN на CentOS 6

Включаем IP Forwarding в ядре:
# vim /etc/sysctl.conf
и меняем там
# Controls IP packet forwarding
net.ipv4.ip_forward = 0
на:
net.ipv4.ip_forward = 1

Настройка сервера OpenVPN на CentOS 6

Сохраняем, выходим.

Загружаем настройки:
# sysctl -p

Настройка сервера OpenVPN на CentOS 6

Теперь наконец-то то, к чеиу мы так
долго шли. Запускаем OpenVPN сервер:
Запускаем OpenVPN сервер:
# service openvpn start

Настройка сервера OpenVPN на CentOS 6

И так,сервер мы подняли, теперь будем настраивать клиентов для OpenVPN сервера тут.

Магазин стеклянных перегородок!, от производителя перегородки с парковкой цена стеклянные перегородки на заказ, свое производство, скидки новым клиентам.

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

Вы должны быть авторизованы, чтобы оставить комментарий.

Политика конфиденциальности

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

Принять