OVPN-сервер на CentOS7 для удаленных подключений SIP-телефонов Grandstream

После введения в эксплуатацию IP-телефонии на оборудовании Grandstream, встал вопрос о подключении SIP-телефонов к АТС не из офисной сети. Открывать порты на файерволе не феншуй. SIP-телефоны Grandstream имеют в своем функционале OVPN-клиента. Чтобы использовать протокол UDP было принято решении об организации работы через OpenVPN-сервер на базе CentOS с авторизацией по сертификатам. Сервер уже имеется в наличии, осталось только настроить центр сертификации и VPN-сервер.

Первым делом подключаем репозиторий Epel к CentOS7

yum install epel-release

Устанавливаем пакеты OpenVPN and Easy-RSA

yum install openvpn easy-rsa

Создание Ключей и Сертификатов

Создадим папку для хранения сертификатов

mkdir -p /etc/openvpn/easy-rsa/keys

Теперь скопируем скрипты в папку нашего OpenVPN

cp -rf /usr/share/easy-rsa/2.0/*  /etc/openvpn/easy-rsa

Чтобы не вводить одни и те же значения, отредактируем файл

mcedit /etc/openvpn/easy-rsa/vars

export KEY_COUNTRY=”RU”
export KEY_PROVINCE=”KRR”
export KEY_CITY=”Krasnodar”
export KEY_ORG=”Chemin”
export KEY_EMAIL=”sa@chemin.local”
export KEY_OU=”OvpnChemin”
export KEY_CN=”ovpn.chemin.local”

Перейдем в директорию easy-rsa и запустим команду source для новых переменных

cd /etc/openvpn/easy-rsa
source ./vars

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

./clean-all

Указываем информацию об организации, выдавшей сертификат

./build-ca

Еще необходимо сгенерировать ключ и сертификат сервера

./build-key-server server

Также нужно сгенерировать файл обмена по алгоритму Диффи-Хеллмана

./build-dh

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

./build-key GXP1

После выполнения команд сертификаты и ключи создаются в папке /etc/openvpn/easy-rsa/keys

server.key
server.crt
GXP1.key
GXP1.crt
ca.crt
ca.key
dh2048.pem

Для настройки OpenVPN-клиент на SIP-телефоне нужно скопировать файлы GXP1.key, GXP1.crt и ca.crt

Конфигурация OpenVPN-сервера

Создадим файл конфигурации сервера

mcedit /etc/openvpn/server.conf

Содержимое файла

mode server
tls-server
port 1194
proto udp
dev tun
server 10.10.12.0 255.255.255.0
persist-key
persist-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/dh2048.pem
cipher BF-CBC # Blowfish (default) This is method which GXP supports
comp-lzo
push “redirect-gateway def1”
push “dhcp-option DNS 8.8.8.8”
push “dhcp-option DNS 8.8.4.4”
duplicate-cn
keepalive 10 120
status openvpn-status.log
verb 3
push “ping 10”
push “ping-restart 60”
push “resolv-retry infinite”

Маршрутизация

Останавливаем firewalld, устанавливаем iptables и разрешаем все, поскольку oVPN-сервер у нас локальный и уже находится за файерволом. Добавляем маршрутизацию для vpn-клиентов в локальную сеть

yum install iptables-services -y
systemctl mask firewalld
systemctl enable iptables
systemctl stop firewalld
systemctl start iptables
iptables -F
iptables –policy INPUT ACCEPT
iptables –policy OUTPUT ACCEPT
iptables –policy FORWARD ACCEPT
iptables -t nat -A POSTROUTING -s 10.10.12.0/24 -j SNAT –to 172.16.10.18
iptables-save > /etc/sysconfig/iptables

Активируем IP-форвардинг в sysctl, добавив в файл sysctl.conf  строчку

net.ipv4.ip_forward=1

Перезапускаем сеть для применения внесенных изменений

systemctl restart network.service

Запуск OpenVPN

Добавим сервис в автозагрузку

systemctl enable openvpn@server.service

Запускаем OpenVPN

systemctl start openvpn@server.service

Настройка OpenVPN-клиента на SIP-телефоне Grandstream GXP1610