Настройка OpenVPN сервера | ||
Сети > VPN Инсталяция Итак устанавливаем пакет openvpn со всеми зависимостями. Копируем скрипты cp /usr/share/openvpn/easy-rsa/2.0/* /etc/openvpn Копируем конфигурационный файл настройки сервера cp /usr/share/openvpn/sample-config-files/server.conf /etc/openvpn Настройка сервера Генерация ключей и сертификатов Начальная инициализация Выполняется 1 раз Редактируем файл /etc/vars. Я, например поменял в нем только переменные export KEY_COUNTRY="RU" export KEY_PROVINCE="RUS" export KEY_CITY="Vologda" export KEY_ORG="MIAC" export KEY_EMAIL="[email protected]" Вы можете использовать свои. #. vars Именно точка пробел vars Очистка и инициализация папки ключей #./clean-all Создание master Certificate Authority (CA) certificate & key Выполняется 1 раз #. vars #./build-ca Генерация сертификата и ключа для сервера Выполняется 1 раз #. vars #./build-key-server ServerName ServerName - имя сервера. На некоторые доп вопросы можно ответить 2 раза "пусто", на 2 последних - "y": Sign the certificate? [y/n]:y В результате будет создан ключ ServerName.key, сертификат ServerName.crt, запрос Certificate Signing Request (CSR) ServerName.csr, ?непонятный файл? 01.pem (копия ServerName.csr) Генерация Diffie Hellman parameters Выполняется 1 раз, нужно только для tls-server #. vars #./build-dh Работает около минуты, грузит CPU под 100% , генерит файл dh1024.pem Генерация сертификатов и ключей клиентов Выполняется по необходимости #. vars #./build-key uzo #./build-key buh Файл настройки сервера Редактируем файл /etc/openvpn/server.conf # На каком локальном IP адресе OpenVPN сервер будет работать. # (не обязательный параметр, если не установить будет работать на всех) local 10.4.46.2 # Порт на котором он будет работать # Стандартный порт 1194, но мб и другой port 1194 # TCP или UDP сервер? proto udp dev tun #Пути до ключей ca /etc/openvpn/keys/ca.crt cert /etc/openvpn/keys/Server1.crt key /etc/openvpn/keys/Server1.key # This file should be kept secret dh /etc/openvpn_tun/keys/dh1024.pem # Сеть и маска соединения server 172.16.142.0 255.255.255.0 # Если нужно, что бы клиентам выдавался один и тот же адрес при # каждом соединениии ifconfig-pool-persist ipp.txt # Route для клиентов (используется такая маска, что бы можно было видеть все # локальные сети с адресами 172.16.ххх.ххх. параметры мб другими, например, # push "route 172.16.128.0 255.255.240.0" # тогда route будет на сети 172.16.128.0-172.16.143.254) push "route 172.16.128.0 255.255.240.0" # Директория настройки файлов клиентов client-config-dir /etc/openvpn_tun/ccd # Route для того что бы сервер видел клиентов (см выше, но только для сервера) route 172.16.128.0 255.255.240.0 # Для того что бы клиенты видели друг друга client-to-client # Проверка связи каждые 10 сек. Если в течении 120 сек # ответа не будет, считается, что канал упал keepalive 10 120 # Нужна ли компрессия соединения. comp-lzo # Максим кол-во клиентов max-clients 100 # Группа и пользователь, от имени которых работает демон. user nobody group nobody persist-key persist-tun # Куда писать статус лог. Тут мы можем посмотреть кто законектился на сервер, # с каким адресом и его route. status openvpn-status.log # Куда писать лог. log /var/log/openvpn/openvpn.log # Уровень логирования verb 4 По расчету маски подсети можно посмотреть калькулятор. Очень удобная вещь. iroute 172.16.136.0 255.255.255.0 Файл uzo iroute 172.16.135.0 255.255.255.0 Файлы настройки клиента Копируем ключи buh.crt, buh.key, ca.crt на первый сервер в папку /etc/openvpn/keys client ;dev tap dev tun ;proto tcp proto udp remote 10.4.46.2 1194 resolv-retry infinite nobind user nobody group nobody ca /etc/openvpn/keys/ca.crt cert /etc/openvpn/keys/buh.crt key /etc/openvpn/keys/buh.key comp-lzo verb 3 Настройка фаервола 1.Должна быть включена маршрутизация echo "1" > /proc/sys/net/ipv4/ip_forward 2.Открыть порт OpenVpn (в нашем случае 1194) на INPUT и FORWARD. iptables -t nat -A POSTROUTING -s 172.16.130.0/24 -d ! 172.16.0.0/16 -j SNAT --to-source 10.4.46.2 Настройка пользователей рабочих станций в локальных сетях Для того, что бы все работало нормально и рабочие станции видели сети за туннелями (в том случае, если default route отличается (от 172.16.130.1 для сети за сервером), например для для инета), необходимо прописать статический роут на виндовых станциях. route -p add 172.16.0.0 MASK 255.255.0.0 172.16.130.1 Ключ -p необходим для того, что бы после перезагрузки маршрут сохранился Запуск клиентов. Ну вот вроде и все. Запускаем демон на сервере, а потом на клиентах #service openvpn start Автоматический подъем канала на клиентах, при его падении. Иногда бывает, что канал падает из-за пропадания связи между серверами. #!/bin/bash # Проверка OpenVPN соединения if [ -z "`ifconfig tun0`" ]; then service openvpn restart echo "`date`" >> /etc/scripts/openvpn.bug fi А в файл /etc/crontab тоже на клиентах, добавляем следующую строку: # Проверка и поднятие OpenVPN */5 * * * * root /etc/scripts/openvpn.sh И теперь каждые 5 мин будет проверяться наличие канала, и если его нет, то происходит попытка его поднятия. Источник: |
||
Комментарии | ||