Если OpenVPN из пакетов по умолчанию не устанавливается, то нужно подключить доп. репозитарий по инструкции ниже:
После установки репозитария ставим пакет openvpn:
yum install openvpn
После чего будет создана пустая папка /etc/openvpn/
Далее устанавливаем управляющие скрипты для удобства работы с openvpn:
yum install easy-rsa
и далее содержимое каталога easy-rsa копируем в папку openvpn (c точки зрения секьюрности не очень хорошо, но для упрощения генерации ключей и удобства обучения можно :) )
cp -a /usr/share/easy-rsa/2.0/ /etc/openvpn/
Переименуем папку 2.0/ в easy-rsa/
mv 2.0/ easy-rsa
Далее переходим в папку easy-rsa и редактируем файл vars
cd easy-rsa
mcedit (ee или vi) vars
параметр export KEY_SIZE для быстрой работы 1024, либо 4096 если для корневого сертификата
Срок действия сертификатов (CA_EXPIRE и KEY_EXPIRE) для обычных сертификатов хватит одного года, для корневых лучше поставить побольше, например, 10 лет (3650)
export CA_EXPIRE = 3650
export KEY_EXPIRE = 365
Также не забыть разкомментировать и, при необходимости, поменять параметр
export KEY_CN
Теперь, чтобы все переменные загрузились в рабочее окружение, выполнить команды
source ./vars
./clean-all
./build-ca
На этом установка и настройка OpenVPN закончена.
-------------------------------------------------------------------------------------
Генерируем сертификат для серверной части
Далее генерируем ключи для серверной части
./build-key-server server
( последнее - указываем имя сервера, в данном случае server)
При инсталляции будет выдан запрос на смену пароля, который нужен для отзыва сертификата, если он был скомпрометирован (желательно установить посложнее на боевой машине, чтобы злоумышленники не могли отозвать рабочий сертификат)
После чего инсталлятор предложит подписать новый сертификат (соглашаемся)
После чего база ключей (index.txt) будет обновлена, где появится запись о свежевыданном ключе (буква "V" в начале строки говорит о его валидности), а также его номер порядковый (01) и какой сущности выдан сертификат, далее его реквизиты, Обращаем внимание на CN=server (желательно (но не обязательно), чтобы этот параметр совпадал с именем хоста)
-------------------------------------------------------------------------------------
Генерируем сертификат для клиентской части
./vars (чтобы переменные окружения скопировались из этого файла)
./build-key client1
-------------------------------------------------------------------------------------
Конфигурируем Openvpn на сервере
в папке /etc/openvpn/ создаем файл openvpn-server.conf (при загрузке системы автоматически поднимаются все VPN соединения, для которых в папке /etc/openvpn есть соответствующие файлы с расширением .conf)
и прописываем след. настройки:
local 192.168.10.2
port 1194 (можно поставить не дефолтный)
proto udp - будем использовать UDP, так как он экономичнее по трафику, вы можете также указать "tcp";
dev tun - использовать управляемый IP-туннель, также возможно использовать "tap" (ethernet tunnel);
ca "/etc/openvpn-crypto/ca.crt"
cert "/etc/openvpn/crypto/server.crt"
key "/etc/openvpn/crypto/server.key"
dh "/etc/openvpn/crypro/dh.param"
user openvpn
group openvpn
server 192.168.144.0 255.255.255.0 (указываем подсеть для впна желательно из середины пула, чтобы случайно не пересечься с какими-либо другими)
ifconfig-pool-persist "/etc/openvpn/ipp.txt" - файл, в котором будут храниться связи "профиль клиента, выделенный ip-адрес", и после переподключения будет выдан снова прежний адрес;
client-config-dir "/etc/openvpn/ccd"
push "dhcp-option DNS 8.8.8.8"
push "route 192.168.10.2 255.255.255.0"
push "redirect-gateway" - при успешном подключении к серверу, клиенту будет установлен новый default-gateway от vpn-сервера (см. netstat -r после соединения), таким образом весь трафик пойдет через vpn-сервер;
push "route 10.0.3.0 255.255.255.0" - добавляем правило маршрутизации для клиента для другого сетевого интерфейса
persist-key - при получении сигнала SIGUSR1 или срабатывания ping-restart не нужно перечитывать сертификаты, так как у сервера не хватит привелегий (См. предыдущий пункт, "nobody:nogroup") на эти действия;
persist-tun - при получении сигнала SIGUSR1 или срабатывания ping-restart не нужно пересоздавать tun/tap устройства;
client-to-client - разрешаем клиентам видеть друг-друга в сети;
client-config-dir ccd - каталог с кастомными настройками для клиента (создайте файл "ccd/<someclient>" для того чтобы указывать кастомные настройки для профиля someclient);
status "/var/log/openvpn/status.log"
log-append "/var/log/openvpn/openvpn.log"
verb 4 (степень детализации логов от 0- минимальный до 9 - максимальный, рекомендуемо 3б4)
После создаем папки /etc/openvpn/ccd и /var/log/openvpn c правами openvpn
-------------------------------------------------------------------------------------
Конфигурируем Openvpn на клиенте
делаем примерно все то же самое:
в папке /etc/openvpn/ создаем папку crypto для хранения ключей
mkdir /etc/crypto
redirect-gateway def1 - режим, который разрешает смену default-gateway, а после остановки vpn-соединения возвращает gateway вашего провайдера;
resolv-retry infinite - ресолвим vpn-сервер до бесконечности, полезно после потери соединения и подключения снова (например после suspend в ноутбуках);
persist-key - при получении сигнала SIGUSR1 или срабатывания ping-restart не нужно перечитывать сертификаты, так как у клиента не хватит привелегий (См. предыдущий пункт, "nobody:nogroup") на эти действия;
persist-tun - при получении сигнала SIGUSR1 или срабатывания ping-restart не нужно пересоздавать tun/tap устройства;
Папку для логов
mkdir /var/log/openvpn
chown openvpn:openvpn /var/log/openvpn
-------------------------------------------------------------------------------------
Передаем секретные ключи с сервера на клиент.
В идеале это нужно делать через шифрованное подключение (ssh, sftp), но если сеть доверенная и нужно сделать быстро, то можно сделать след. образом.
Перейти в директорию со всеми сгенерированными ключами /etc/openvpn/easy-rsa/keys
и выполнить там команду:
python -m SimpleHTTPServer (по умолчанию идет 8000 порт, корневая директория - где была вполнена команда)
Теперь на стороне клиента запускаем браузер elinks с параметрами сервера 192.168.10.1:8000 после чего увидим список ключей, находящихся на сервере, качаем нужные (client-1.crt client-1.key dh4096.pem)
Таким же образом передаем файл openvpn-server.conf и для удобства переименуем его в openvpn-client.conf
В нем пишем следующее:
1. вместо local192.168.10.2 пишем client
2. Вместо port 1194 пишем remote 192.168.10.2 1194 (т.к. слушать порт больше не нужно, а просто указать к какому серверу и порту подключаться)
3. Меняем пути к клиентским ключам
4. Затираем все серверные директивы (server 192.168.144.0 ifconfig-pool-persistent client-config-dir и push
5. Все параметры логов оставляем (status log-append и verb)
-------------------------------------------------------------------------------------
После запуска openvpn в списке сетевых интерфейсов появится еще один tun0 с адресом из подсети 192.168.144.x
Также можно проверить маршрутизацию и доступность адресов командой
ip r s
Установка доп. репозитариев :
После установки репозитария ставим пакет openvpn:
yum install openvpn
После чего будет создана пустая папка /etc/openvpn/
Далее устанавливаем управляющие скрипты для удобства работы с openvpn:
yum install easy-rsa
и далее содержимое каталога easy-rsa копируем в папку openvpn (c точки зрения секьюрности не очень хорошо, но для упрощения генерации ключей и удобства обучения можно :) )
cp -a /usr/share/easy-rsa/2.0/ /etc/openvpn/
Переименуем папку 2.0/ в easy-rsa/
mv 2.0/ easy-rsa
Далее переходим в папку easy-rsa и редактируем файл vars
cd easy-rsa
mcedit (ee или vi) vars
параметр export KEY_SIZE для быстрой работы 1024, либо 4096 если для корневого сертификата
Срок действия сертификатов (CA_EXPIRE и KEY_EXPIRE) для обычных сертификатов хватит одного года, для корневых лучше поставить побольше, например, 10 лет (3650)
export CA_EXPIRE = 3650
export KEY_EXPIRE = 365
Также не забыть разкомментировать и, при необходимости, поменять параметр
export KEY_CN
Теперь, чтобы все переменные загрузились в рабочее окружение, выполнить команды
source ./vars
./clean-all
./build-ca
На этом установка и настройка OpenVPN закончена.
-------------------------------------------------------------------------------------
Генерируем сертификат для серверной части
Далее генерируем ключи для серверной части
./build-key-server server
( последнее - указываем имя сервера, в данном случае server)
При инсталляции будет выдан запрос на смену пароля, который нужен для отзыва сертификата, если он был скомпрометирован (желательно установить посложнее на боевой машине, чтобы злоумышленники не могли отозвать рабочий сертификат)
После чего инсталлятор предложит подписать новый сертификат (соглашаемся)
После чего база ключей (index.txt) будет обновлена, где появится запись о свежевыданном ключе (буква "V" в начале строки говорит о его валидности), а также его номер порядковый (01) и какой сущности выдан сертификат, далее его реквизиты, Обращаем внимание на CN=server (желательно (но не обязательно), чтобы этот параметр совпадал с именем хоста)
Создаем DH ключ Diffie-Hellmana (нужен только серверу):
./build-dh
-------------------------------------------------------------------------------------
Генерируем сертификат для клиентской части
./vars (чтобы переменные окружения скопировались из этого файла)
./build-key client1
-------------------------------------------------------------------------------------
Конфигурируем Openvpn на сервере
в папке /etc/openvpn/ создаем файл openvpn-server.conf (при загрузке системы автоматически поднимаются все VPN соединения, для которых в папке /etc/openvpn есть соответствующие файлы с расширением .conf)
и прописываем след. настройки:
local 192.168.10.2
port 1194 (можно поставить не дефолтный)
proto udp - будем использовать UDP, так как он экономичнее по трафику, вы можете также указать "tcp";
dev tun - использовать управляемый IP-туннель, также возможно использовать "tap" (ethernet tunnel);
ca "/etc/openvpn-crypto/ca.crt"
cert "/etc/openvpn/crypto/server.crt"
key "/etc/openvpn/crypto/server.key"
dh "/etc/openvpn/crypro/dh.param"
user openvpn
group openvpn
server 192.168.144.0 255.255.255.0 (указываем подсеть для впна желательно из середины пула, чтобы случайно не пересечься с какими-либо другими)
ifconfig-pool-persist "/etc/openvpn/ipp.txt" - файл, в котором будут храниться связи "профиль клиента, выделенный ip-адрес", и после переподключения будет выдан снова прежний адрес;
client-config-dir "/etc/openvpn/ccd"
push "dhcp-option DNS 8.8.8.8"
push "route 192.168.10.2 255.255.255.0"
push "redirect-gateway" - при успешном подключении к серверу, клиенту будет установлен новый default-gateway от vpn-сервера (см. netstat -r после соединения), таким образом весь трафик пойдет через vpn-сервер;
push "route 10.0.3.0 255.255.255.0" - добавляем правило маршрутизации для клиента для другого сетевого интерфейса
persist-key - при получении сигнала SIGUSR1 или срабатывания ping-restart не нужно перечитывать сертификаты, так как у сервера не хватит привелегий (См. предыдущий пункт, "nobody:nogroup") на эти действия;
persist-tun - при получении сигнала SIGUSR1 или срабатывания ping-restart не нужно пересоздавать tun/tap устройства;
client-to-client - разрешаем клиентам видеть друг-друга в сети;
client-config-dir ccd - каталог с кастомными настройками для клиента (создайте файл "ccd/<someclient>" для того чтобы указывать кастомные настройки для профиля someclient);
status "/var/log/openvpn/status.log"
log-append "/var/log/openvpn/openvpn.log"
verb 4 (степень детализации логов от 0- минимальный до 9 - максимальный, рекомендуемо 3б4)
После создаем папки /etc/openvpn/ccd и /var/log/openvpn c правами openvpn
-------------------------------------------------------------------------------------
Конфигурируем Openvpn на клиенте
делаем примерно все то же самое:
в папке /etc/openvpn/ создаем папку crypto для хранения ключей
mkdir /etc/crypto
redirect-gateway def1 - режим, который разрешает смену default-gateway, а после остановки vpn-соединения возвращает gateway вашего провайдера;
resolv-retry infinite - ресолвим vpn-сервер до бесконечности, полезно после потери соединения и подключения снова (например после suspend в ноутбуках);
persist-key - при получении сигнала SIGUSR1 или срабатывания ping-restart не нужно перечитывать сертификаты, так как у клиента не хватит привелегий (См. предыдущий пункт, "nobody:nogroup") на эти действия;
persist-tun - при получении сигнала SIGUSR1 или срабатывания ping-restart не нужно пересоздавать tun/tap устройства;
Папку для логов
mkdir /var/log/openvpn
chown openvpn:openvpn /var/log/openvpn
-------------------------------------------------------------------------------------
Передаем секретные ключи с сервера на клиент.
В идеале это нужно делать через шифрованное подключение (ssh, sftp), но если сеть доверенная и нужно сделать быстро, то можно сделать след. образом.
Перейти в директорию со всеми сгенерированными ключами /etc/openvpn/easy-rsa/keys
и выполнить там команду:
python -m SimpleHTTPServer (по умолчанию идет 8000 порт, корневая директория - где была вполнена команда)
Теперь на стороне клиента запускаем браузер elinks с параметрами сервера 192.168.10.1:8000 после чего увидим список ключей, находящихся на сервере, качаем нужные (client-1.crt client-1.key dh4096.pem)
Таким же образом передаем файл openvpn-server.conf и для удобства переименуем его в openvpn-client.conf
В нем пишем следующее:
1. вместо local192.168.10.2 пишем client
2. Вместо port 1194 пишем remote 192.168.10.2 1194 (т.к. слушать порт больше не нужно, а просто указать к какому серверу и порту подключаться)
3. Меняем пути к клиентским ключам
4. Затираем все серверные директивы (server 192.168.144.0 ifconfig-pool-persistent client-config-dir и push
5. Все параметры логов оставляем (status log-append и verb)
-------------------------------------------------------------------------------------
После запуска openvpn в списке сетевых интерфейсов появится еще один tun0 с адресом из подсети 192.168.144.x
Также можно проверить маршрутизацию и доступность адресов командой
ip r s
Комментариев нет:
Отправить комментарий