Установка openvpn на RedHat/CentOS/Fedora

Установка openvpn на RedHat/CentOS/Fedora

OpenVPN является полнофункциональной утилитой с открытыми исходниками для решение VPN, что позволяет использовать широкий диапазон конфигураций, в том числе удаленного доступа, Wi-Fi безопасности и многое другое. OpenVPN предлагает экономическое  и эффективное решение — это альтернативное решение других технологий VPN, которая целенаправленна для разных предприятий. В статье «Установка openvpn на RedHat/CentOS/Fedora» хотел бы рассказать как можно объединить группу компьютеров двух или более разных сетей для совместного использования на примере установки openVPN для RedHat, CentOS а так же для Fedora.

И так имеем, у меня есть сервер на которой установлена ОС — CentOSи у нее имеется ИП адрес 78.140.189.243. На этот сервер мы сейчас и установим наш OpenVPN сервер.

До всей установки нужно подключить repo EPEL:

Как включить EPEL репозиторий на CentOS

1. Устанавливаем OpenPN сервер, к нему и будем подключаться ( на том компьютере с которого мы будем подключаться мы установим клиентскую ее часть, но об этом немного попозже):

# yum install openvpn

Как только все установится нужно скопировать  файлы в созданную папку:

# mkdir -p /etc/openvpn/easy-rsa/keys
# cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0 /etc/openvpn/easy-rsa/keys

Но это уже не работает в новых версиях OpenVPN (в него уже не входит этот пакет), по этому нужно сделать «финт ушами», по этому мы установим вручную:

# sudo yum install easy-rsa

После этого мы создаем папку и скопируем нужные данные в нее:

# mkdir -p /etc/openvpn/easy-rsa/keys
# cp -rf /usr/share/easy-rsa/2.0/* /etc/openvpn/easy-rsa/

После того как мы скопировали нужные для работы файлы, нам еще нужно сгенерировать ключики и так же сертификаты, делаем по следующей схеме:

# vim /etc/openvpn/easy-rsa/vars  

#в этом файле нужно изменить Страну, город.....
[...]
# не оставляйте поля пустыми!
export KEY_COUNTRY="UA"
export KEY_PROVINCE="LG"
export KEY_CITY="Lug"
export KEY_ORG="linux-notes"
export KEY_EMAIL="solo.metal@bigmir.net"
export KEY_OU="my_server"
[...]

Переходим в директорию и начнем работу:

# cd /etc/openvpn/easy-rsa/

Введите следующие команды для инициализации центра сертификации:

# cp openssl-1.0.0.cnf openssl.cnf
# source ./vars
# ./clean-all

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

# ./build-ca

Нас попросят ввести данные ( но нам это не интересно, т.к мы это все уже прописать немного выше), но мы просто на каждый вопрос нажимаем «Enter»

создание сертификата центра сертификации и ключа CA

Далее создаем сертификат и ключик для моего сервера my_server:

# ./build-key-server my_server

Нас просят ввести кое какие данные, я привел то что нужно нажимать на следующем скриншоте:

создам сертификат и ключ для сервера

Создадим сертификат и ключ для VPN клиентов:

# ./build-key client

Если вы хотите создать сертификат и файлы ключей для каждого клиента, вы должны заменить параметр клиента своим уникальным идентификатором! Но т.к я буду использовать его сам, то мне хватит и 1 клиентского сертификата.

Отвечаем на вопросы точно так же как и на предыдущем рисунке:

Создаем сертификат и ключ для VPN клиента

Создадим параметр  Диффи Хеллмана

Введите следующую команду, чтобы создать параметр DH:

# ./build-dh

Запустится генерация и это займет определенное время ( не более 1 мин).

Нужные ключики и сертификаты будут генерироваться в  /etc/openvpn/easy-rsa/keys/. Скопируйте следующие сертификаты и файлы ключей в каталог/etc/openvpn/:

  • ca.crt
  • dh2048.pem
  • my_server.crt
  • my_server.key

Чтобы это сделать, перейдите в папку и скопируем все это:

# cd /etc/openvpn/easy-rsa/keys/
# cp dh2048.pem ca.crt my_server.crt my_server.key /etc/openvpn/

И потом, вы должны скопировать все сертификаты клиентов и ключики к удаленным клиентам VPN для аутентификации на сервере VPN. В нашем случае, мы сформировали сертификаты и ключи только для одного клиент, поэтому мы должны скопируйте следующие файлы клиенту VPN:

  • ca.crt
  • client.crt
  • client.key

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

# scp ca.crt client.crt client.key root@78.140.189.243:/etc/openvpn

Или  можно это сделать по отдельности!

# sudo scp root@78.140.189.243:/etc/openvpn/easy-rsa/keys/ca.key /etc/openvpn/
# sudo scp root@78.140.189.243:/etc/openvpn/easy-rsa/keys/ca.crt /etc/openvpn/
# sudo scp root@78.140.189.243:/etc/openvpn/easy-rsa/keys/client.crt /etc/openvpn/
#sudo scp root@78.140.189.243:/etc/openvpn/easy-rsa/keys/client.key /etc/openvpn/

Если не знаете как пользоваться SCP, то следующий материал поможет Вам:

Как скопировать данные через SCP в Linux

Удаление доступа клиентов к серверу VPN

Если вы хотите удалить доступ пользователя(ей) к серверу VPN, введите и выполните:

# . /etc/openvpn/easy-rsa/2.0/vars
# . /etc/openvpn/easy-rsa/2.0/revoke-full client

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

Настройка VPN сервера

Теперь, мы должны настроить наш сервер VPN. Скопируйте файл server.conf в /etc/openvpn/, для этого выполните:

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

Сейчас отредактируем данный конфигурационный файл и настроим мы его под себя:

# vim  /etc/openvpn/server.conf
#Найти и раскомментируйте следующие строки

[...]
# (see "pkcs12" directive in man page).
ca ca.crt
cert my_server.crt
key my_server.key
[...]

# 2048 bit keys.
dh dh2048.pem

[...]

push "redirect-gateway def1 bypass-dhcp"

[...]
Кроме того, Раскомментировать и измените DNS-сервера, чтобы отразить свои собственные значения DNS. Здесь я использую Google серверы общих ДНС.

[...]

push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"

[...]
user nobody
group nobody

[...]

Сохраните и закройте файл.

ПС: Если у Вас не будет что то работать, то проверьте правильность ключей ( именно их расположение) и если что пропишите полный путь к ключам. Можно проверить работоспособность нашего конфига, для этого служит следующая команда:

# sudo openvpn --config /etc/openvpn/server.conf

Тогда нам нужно скопировать и отредактировать файл client.conf. Этот файл должны быть передан в VPN клиентам. Во-первых скопируйте файл в любое место (напр./home/your_user/ ).

# cp /usr/share/doc/openvpn-2.3.2/sample/sample-config-files/client.conf /home/captain/

И сейчас я его поправлю:

# vim /home/captain/client.conf
Установите для сервера хост имя / IP-адрес для VPN:

# Имя хоста / IP + порт сервера. 
# Вы можете иметь несколько удаленных записей 
# Для балансировки нагрузки между серверами. 
remote  78.140.189.243 1194

ПС: Если у Вас не будет что то работать, то проверьте правильность ключей ( именно их расположение) и если что пропишите полный путь к ключам.

Здесь 78.140.189.243 мой IP адрес сервера VPN. Затем Скопируйте файл client.conf на машину клиента:

# sudo scp root@78.140.189.243:/home/admin/client.conf /etc/openvpn/

IP экспедирование(forwarding)  и маршрутизация (routing) конфигурации

Нужно отредактировать sysctl.conf и внести некоторые изменения:

# vim /etc/sysctl.conf

Найдите следующую строку и установить значение «1», чтобы включить переадресацию IP.

# Управляет пересылку IP-пакетов (Controls IP packet forwarding)
net.ipv4.ip_forward = 1

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

# sysctl -p

sysctl -p для OpenVPN

Отрегулируйте IPTables для передачи трафика через VPN должным образом, для этого введите следующие команды один за другим:

# iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

Сохраните изменения в IPTABLES с помощью:

# service iptables save

После чего перезапускаем:

# service iptables restart

Наконец, запустите сервис OpenVPN  и сделайте чтобы стартавал при запуске вашей ОС:

# service openvpn start
# chkconfig openvpn on

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

Убедитесь,  что интерфейс VPN (tun0) создается с помощью команды Ifconfig:

# ifconfig

смотрим ifconfig для OpenVPN

Должно быть что то типа этого!

 Конфигурация OpenVPN на стороне клиента

1. Если клиентская машина использует CentOS или Fedora, RedHat

2. Если клиентская машина использует Debian, Ubuntu или Linux Mint

На этом я завершаю данную тему «Установка openvpn на RedHat/CentOS/Fedora», спасибо за посещение своего сайта http://linux-notes.org

2 thoughts on “Установка openvpn на RedHat/CentOS/Fedora

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

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.