После введения в эксплуатацию 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