OpenVPN в Linux: налаштування свого сервера
Актуальность темы OpenVPN в Linux неоспорима, как и польза нашего материала. За основу мы взяли статью Д. Грега Скотта, старшего технического менеджера по работе с клиентами Red Hat. А он плохого не посоветует. Полезная инфа — далее.
* OpenVPN — это та же технология частной виртуальной сети (VPN), но её свободная реализация. У проекта открытый исходный код.
OpenVPN создаёт зашифрованный туннель между двумя точками. Это предотвращает доступ третьих лиц к вашему сетевому трафику. Настроив сервер частной виртуальной сети (VPN), вы сами для себя станете провайдером VPN. Многие популярные VPN-сервисы уже используют OpenVPN. Так зачем привязывать ваше соединение к определенному провайдеру, если вы можете иметь полный контроль?
Чтобы настроить сервер OpenVPN, вы должны:
- создать файл конфигурации,
- установить sysctl значение, net.ipv4.ip_forward = 1, чтобы включить маршрутизацию,
- установить соответствующие права для всех файлов конфигурации и аутентификации, чтобы запустить демон сервера OpenVPN под учетной записью без полномочий root,
- настроить OpenVPN на запуск с соответствующим файлом конфигурации,
- настроить свой брандмауэр.
А теперь детальнее.
Конфигурационный файл
Первое, что вы должны создать — файл конфигурации сервера в формате /etc/openvpn/server/. Можете начать с нуля, если хотите. OpenVPN можно использовать в качестве отправной точки, так как он включает несколько примеров файлов конфигурации. Чтобы увидеть их все: /usr/share/doc/openvpn/sample/sample-config-files/.
Если вы хотите создать файл конфигурации вручную, начните с одного server.conf или roadwarrior-server.conf (при необходимости). Поместите файл конфигурации в /etc/openvpn/server. Оба файла содержат подробные комментарии. Ознакомьтесь с ними и решите, какой из них вам больше подходит.
Вы можете сэкономить время и нервы. Используйте готовые шаблоны файлов конфигурации сервера и клиента от Д. Грега Скотта, а также файл sysctl, для включения сетевой маршрутизации. Эта конфигурация также включает настройку для логирования подключений и отключений. Она хранит логи на сервере OpenVPN в формате /etc/openvpn/server/logs.
Если вы используете шаблоны Д. Грега Скотта, вам нужно будет отредактировать их (указать ваши IP-адреса и имена хостов).
Чтобы использовать готовые шаблоны конфигурации, сценарии и sysctl — включите переадресацию IP. Затем, загрузите сценарий:
$ curl \
https://www.dgregscott.com/ovpn/OVPNdownloads.sh > \
OVPNdownloads.sh
Прочтите сценарий, чтобы понять, что он делает. Вот краткий обзор:
- создаёт соответствующие каталоги на вашем OpenVPN сервере,
- загружает шаблоны файлов конфигурации сервера и клиента,
- загружает пользовательские скрипты и помещает их в правильный каталог с правильными разрешениями,
- скачивает 99-ipforward.conf и помещает в /etc/sysctl.d, чтобы включить переадресацию IP при следующей загрузке,
- устанавливает право собственности на всё в /etc/openvpn.
Убедившись, что вы всё поняли, сделайте его исполняемым и запустите:
$ chmod +x OVPNdownloads.sh
$ sudo ./OVPNdownloads.sh
Вот файлы, которые он копирует (обратите внимание на владельца файла):
- $ ls -al -R /etc/openvpn
- /etc/openvpn:
- total 12
- drwxr-xr-x. 4 openvpn openvpn 34 Apr 6 20:35 .
- drwxr-xr-x. 139 root root 8192 Apr 6 20:35 ..
- drwxr-xr-x. 2 openvpn openvpn 33 Apr 6 20:35 client
- drwxr-xr-x. 4 openvpn openvpn 56 Apr 6 20:35 server
- /etc/openvpn/client:
- total 4
- drwxr-xr-x. 2 openvpn openvpn 33 Apr 6 20:35 .
- drwxr-xr-x. 4 openvpn openvpn 34 Apr 6 20:35 ..
- -rw-r–r–. 1 openvpn openvpn 1764 Apr 6 20:35 OVPNclient2020.ovpn
- /etc/openvpn/server:
- total 4
- drwxr-xr-x. 4 openvpn openvpn 56 Apr 6 20:35 .
- drwxr-xr-x. 4 openvpn openvpn 34 Apr 6 20:35 ..
- drwxr-xr-x. 2 openvpn openvpn 59 Apr 6 20:35 ccd
- drwxr-xr-x. 2 openvpn openvpn 6 Apr 6 20:35 logs
- -rw-r–r–. 1 openvpn openvpn 2588 Apr 6 20:35 OVPNserver2020.conf
- /etc/openvpn/server/ccd:
- total 8
- drwxr-xr-x. 2 openvpn openvpn 59 Apr 6 20:35 .
- drwxr-xr-x. 4 openvpn openvpn 56 Apr 6 20:35 ..
- -rwxr-xr-x. 1 openvpn openvpn 917 Apr 6 20:35 client-connect.sh
- -rwxr-xr-x. 1 openvpn openvpn 990 Apr 6 20:35 client-disconnect.sh
- /etc/openvpn/server/logs:
- total 0
- drwxr-xr-x. 2 openvpn openvpn 6 Apr 6 20:35 .
- drwxr-xr-x. 4 openvpn openvpn 56 Apr 6 20:35 ..
Вот 99-ipforward.conf файл:
# Turn on IP forwarding. OpenVPN servers need to do routing
net.ipv4.ip_forward = 1
Отредактируйте OVPNserver2020.conf и OVPNclient2020.ovpn, укажите свои IP-адреса. Кроме того, отредактируйте, OVPNserver2020.conf. Это нужно для того, чтобы включить указанные ранее имена сертификатов вашего сервера. Позже, переименуйте и отредактируйте копию OVPNclient2020.ovpn для использования на своих клиентских компьютерах. Блоки, начинающиеся с ***?, показывают вам, где нужно редактировать.
Владение файлом
Если вы использовали автоматизированный сценарий Д. Грега Скотта, то право собственности на файлы уже установлено. Если нет — убедитесь, что в вашей системе есть пользователь с именем openvpn, который является членом группы openvpn. Вы должны установить владение всем файлом /etc/openvpn для него. Если вы не уверены, что пользователей и групп с таким названием нет, то не переживайте, useradd откажется создавать дубликат:
$ sudo useradd openvpn
$ sudo chown -R openvpn.openvpn /etc/openvpn
Что далее?
Брандмауэр
Если вы решили не отключать службу firewalld на шаге 1, то служба межсетевого экрана вашего сервера может не разрешать трафик VPN по умолчанию. С помощью команды firewall-cmd вы можете включить службу OpenVPN, которая открывает необходимые порты и направляет трафик по мере необходимости:
$ sudo firewall-cmd –add-service openvpn –permanent
$ sudo firewall-cmd –reload
Не нужно теряться в лабиринте iptables!
Запуск сервера
Теперь вы можете запустить свой сервер OpenVPN. Чтобы он запускался автоматически после перезагрузки, используйте enable, подкоманду systemctl:
systemctl enable –now openvpn-server@OVPNserver2020.service
Это всё.
Получилось настроить? Пишите в комментариях под постом.
Если хотите узнать принцип работы браузера Тор, читайте статью от IT Education Blog.