
Безопасность публичного доступа в Интернет часто оставляет желать лучшего. Если вы хотите безопасно перемещаться по интернету, использование собственной VPN («виртуальной частной сети») — отличный способ сделать это. Создав личный VPN-сервер, вы также получаете доступ к локальной домашней сети через любое интернет-соединение.
Чтобы создать собственную виртуальную частную сеть, вам понадобится компьютерная система, которая может выполнять функции сервера. Для этого Raspberry Pi является экономически выгодным вариантом. Вы можете создать свой собственный VPN-сервер на Raspberry Pi, используя бесплатное программное обеспечение VPN-сервера OpenVPN, которое можно скачать в Интернете.
Вам нужен собственный vServer? IONOS предлагает мощные и экономически эффективные пакеты VPS. Воспользуйтесь бесплатной пробной версией VPS от IONOS и протестируйте свой vServer бесплатно в течение 30 дней.
- Настройка собственного VPN-сервера: Обзор функций
- Создание VPN-сервера на Raspberry Pi и OpenVPN: преимущества
- Что необходимо для настройки VPN-сервера на Raspberry Pi?
- Настройка IP-адресов
- Установка собственного VPN-сервера на Raspberry Pi с помощью OpenVPN
- Подготовка Raspberry Pi
- Установите OpenVPN и настройте файлы easy-rsa
- Настройка сертификатов и ключей для OpenVPN
- Генерация конфигурационных файлов для сервера OpenVPN
- Создание сценария для доступа в Интернет с помощью клиента
- Завершите настройку клиентов
- Создание собственного VPN-сервера на Raspberry Pi того стоит
Настройка собственного VPN-сервера: Обзор функций
VPN, установленный в локальной сети (LAN), позволяет получить доступ к сети извне. Это виртуальная коммуникационная сеть, в которой запросы и ответы между VPN-сервером и VPN-клиентами (устройствами, подключенными к серверу) обычно передаются через интернет.
С помощью самостоятельно созданной VPN можно получить доступ к собственной локальной сети из любого источника Интернета. Вы можете использовать ее для доступа к данным, расположенным в локальной сети, и обращаться к отдельным устройствам на расстоянии (например, принтерам или факсам), а также использовать интернет-соединение локальной сети. Благодаря зашифрованному соединению с VPN-сервером вы можете перемещаться по сети более безопасно, чем если бы вы полагались на рискованные, открытые интернет-соединения (например, публичные WLAN).
Чтобы безопасное соединение с VPN-сервером стало возможным, вам необходимо установить VPN-сервер на компьютере в вашей локальной сети, постоянно подключенном к Интернету. Компьютер работает как хост для виртуальной частной сети. Вы можете подключать устройства (такие как ноутбуки, смартфоны или планшеты) к серверу с помощью клиентского программного обеспечения. Теперь, если вы получаете доступ к VPN с помощью клиента, использующего подключение к Интернету за пределами вашей личной локальной сети, это будет происходить через зашифрованное соединение (называемое VPN-туннелем).
VPN-туннель начинается на вашем клиенте и заканчивается на вашем VPN-сервере — он распространяется на все интернет-соединение. В результате туннель намного безопаснее, чем обычные публичные интернет-соединения. Это соответственно затрудняет проникновение хакеров в туннель и запись трафика данных. С помощью персонального VPN-соединения вы также можете работать с гораздо более конфиденциальными данными (такими как, например, банковские счета в Интернете) через публичные WLAN.
Создание VPN-сервера на Raspberry Pi и OpenVPN: преимущества
Минимальная стоимость Raspberry Pi делает его столь привлекательным в качестве VPN-сервера. Цена покупки этого маленького компьютера сравнительно невелика. Вам также понадобится совсем немного аксессуаров для запуска. Кроме того, для длительной работы в качестве сервера требуется относительно небольшое количество энергии. Все это говорит о том, что данное решение предлагает хорошее соотношение цены и производительности (хотя сейчас существуют различные альтернативы Raspberry Pi).
OpenVPN очень подходит для использования в качестве VPN по нескольким причинам: Это бесплатное, широко распространенное программное обеспечение VPN-сервера, поддерживаемое большим количеством операционных систем (Windows, OS X, Android, iOS, Linux и другие). Программа также может похвастаться сравнительно простой настройкой и высоким уровнем стабильности.
Что необходимо для настройки VPN-сервера на Raspberry Pi?
Для выполнения приведенного ниже руководства вам понадобится следующее:
- Raspberry Pi (рекомендуется: модель 2 или выше)
- Карта памяти micro-SD с установленной на ней операционной системой Raspbian-Jessie
- Постоянно доступное подключение к Интернету (желательно через сетевой кабель) и питание (через кабель micro-USB) для Raspberry Pi.
Вы должны решить, хотите ли вы настроить VPN-сервер непосредственно на Raspberry Pi (с подключенным монитором, мышью и клавиатурой) или через SSH-клиент. Удаленное обслуживание сервера с помощью SSH является рекомендуемым выбором в большинстве случаев, поскольку это самый простой способ получить доступ к VPN-серверу с другого компьютера позднее.
Для этой цели существуют различные широко используемые варианты программного обеспечения, такие как PuTTY, WinSCP (для Windows) или OpenSSH (для операционных систем Unix), с помощью которых вы можете контролировать и управлять Raspberry Pi. Чтобы подключить SSH к Raspberry Pi, вы указываете его IPv4-адрес в клиенте (компьютер, с которого вы хотите получить доступ к Raspberry Pi) и связываете их друг с другом. IP-адрес Raspberry Pi можно узнать, например, через меню маршрутизатора вашего браузера. Обычно вы можете получить доступ к меню роутера, вызвав адрес «192.168.1.1» (или myrouter.local для пользователей маршрутизатора Linksys Smart Wi-Fi) в браузере.
Настройка IP-адресов
Для использования SSH-клиента желательно выделить Raspberry Pi статический частный IP-адрес в локальной сети — иначе вам придется заново выбирать текущий динамический адрес и заново подключать клиент к мини-компьютеру каждый раз, когда вы захотите получить к нему доступ по SSH. Связывание постоянного частного IP-адреса с Raspberry Pi более важно для использования OpenVPN: VPN-сервер должен быть всегда доступен в локальной сети по одному и тому же адресу, если вы хотите иметь постоянный доступ. VPN-сервер должен быть постоянно доступен по одному и тому же адресу и в Интернете. Однако интернет-подключения обычно имеют только динамический публичный IP-адрес, который меняется как минимум через 24 часа и не позволяет постоянно иметь доступ к серверу по одному и тому же IP-адресу. Если вы не можете регулировать свое интернет-соединение по статическому публичному IP-адресу, то вместо этого можно обойтись настройкой динамического DNS (DDNS).
О том, как присвоить статический IP-адрес вашему Raspberry Pi и какие существуют варианты настройки DDNS, вы можете прочитать в другой нашей статье. Если вы хотите, чтобы ваш Raspberry Pi был постоянно доступен в Интернете в качестве сервера, вам следует регулярно обновлять его и проводить проверки безопасности.
Установка собственного VPN-сервера на Raspberry Pi с помощью OpenVPN
Теперь вы можете приступить к настройке OpenVPN. Для этого откройте терминал (консоль ввода) вашего Raspberry Pi.
Подготовка Raspberry Pi
Прежде чем приступить к установке OpenVPN, рекомендуется проверить наличие и установить обновления для существующих пакетов на Raspberry Pi. Для этого введите в консоль следующие команды:
sudo apt-get update
sudo apt-get upgrade
Если вы еще не изменили пароль по умолчанию для Raspberry Pi (Имя пользователя: «Pi»; Пароль: «Raspberry»), сделайте это сейчас: В противном случае любой может получить доступ к системе — как локально, так и по сети через SSH. С помощью приведенной ниже команды вы можете вызвать конфигурацию мини-компьютера, где можно создать надежный пароль.
sudo raspi-config
Установите OpenVPN и настройте файлы easy-rsa
Сначала с помощью следующей команды установите программное обеспечение OpenVPN, а также OpenSSL, который используется для шифрования интернет-соединения.
sudo apt-get install openvpn openssl
После установки OpenVPN скопируйте предварительно написанный скрипт «easy-rsa» в индекс конфигурации OpenVPN. Именно здесь вы будете создавать различные сертификаты и ключи. Следующая команда работает только на Raspbian Jessie (в более ранней операционной системе Wheezy скрипты находятся в каталоге «/usr/share/doc/openvpn/examples/easy-rsa/2.0»).
sudo cp -r /usr/share/easy-rsa /etc/openvpn/easy-rsa
Далее откройте файл «/etc/openvpn/easy-rsa/vars» в консоли, выполнив следующую команду:
sudo nano /etc/openvpn/easy-rsa/vars
Теперь вам нужно настроить этот файл. Вы измените настройки, заменив всю строку «export EASY_RSA=»`pwd`»» на следующую:
export EASY_RSA="/etc/openvpn/easy-rsa"
Длина ключа также может быть настроена в этом файле. Это позволяет определить уровень безопасности шифрования. Raspberry Pi обладает достаточной вычислительной мощностью, чтобы без проблем справиться с длиной ключа 2048 бит. Но в Model 2 такое шифрование уже приводит к заметному снижению производительности, поэтому следует использовать только 1024-битное шифрование — в зависимости, конечно, от того, что важнее: скорость или уровень шифрования соединения. 4096-битное шифрование имеет смысл использовать только в определенных случаях. Вы изменяете длину ключа, регулируя количество бит в строке «export KEY_SIZE=2048».
Теперь вернитесь в конфигурационный индекс «easy-rsa», дайте права root, а затем интегрируйте сделанные ранее настройки в переменные окружения, выполнив скрипт «vars» с помощью команды «source». Полученный конфигурационный файл можно сделать доступным через символическую ссылку под именем «openssl.cnf».
cd /etc/openvpn/easy-rsa
sudo su
source vars
ln -s openssl-1.0.0.cnf openssl.cnf
Настройка сертификатов и ключей для OpenVPN
Сначала сбросьте ключи, а затем создайте первые файлы ключей для OpenVPN.
./clean-all
./build-ca OpenVPN
Вас попросят ввести двухбуквенное «CountryName» вашей страны (US — для США, CA — для Канады). Последующие запросы больше не имеют значения, и вы можете просто подтвердить их клавишей Enter.
Затем вы генерируете файлы ключей для сервера:
./build-key-server server
Снова введите двухбуквенный код страны, а остальные поля оставьте пустыми. Наконец, подтвердите запрос на генерацию сертификата дважды клавишей «Y».
Следующие инструкции расскажут вам, как настроить один или несколько VPN-клиентов. Вы создадите сертификат и ключ для каждого устройства, с которого вы хотите получить доступ к VPN-серверу. Процесс аналогичен настройке сертификатов и ключей для сервера (введите код страны и подтвердите дважды). Вы можете присвоить каждому устройству определенное имя (в наших командах ниже созданы клиенты для «ноутбука», «смартфона» и «планшета»).
./build-key laptop
./build-key smartphone
./build-key tablet
…
Если вы хотите предоставить клиентам пароль, то вместо перечисленных выше команд вы будете использовать следующие команды:
./build-key-pass laptop
./build-key-pass smartphone
./build-key-pass tablet
…
Генерация сертификатов и ключей завершается командой для обмена ключами Диффи-Хеллмана:
./build-dh
Это может занять некоторое время. По завершении процесса выйдите из системы от имени пользователя root:
exit
Генерация конфигурационных файлов для сервера OpenVPN
Вызовите конфигурационные файлы OpenVPN:
sudo nano /etc/openvpn/openvpn.conf
Теперь вы можете заполнить пустые файлы различными командами, которые мы проиллюстрируем в следующих примерах. Во-первых, активируйте маршрутизацию через IP-туннель с помощью «dev tun» и выберите EDP в качестве транспортного протокола с помощью «proto udp» (если вы хотите использовать TCP, выберите «proto tcp»). В следующих строках определите, что сервер OpenVPN доступен через порт 1194 — хотя вы можете изменить это, если хотите.
dev tun
proto udp
port 1194
Далее создайте корневой сертификат SSL/TLS (ca), цифровой сертификат (cert) и цифровой ключ (key) в индексе «easy-rsa». Вы также должны убедиться, что ввели правильный бит шифрования (1024, 2048 и т.д.).
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
Теперь вы можете указать, что Raspberry Pi используется в качестве VPN-сервера. Для этого нужно назвать IP-адрес, а также маску сети, которые будут назначены для VPN.
server 10.8.0.0 255.255.255.0
С помощью команды «redirect-gateway def1 bypass-dhcp» теперь можно направлять весь IP-трафик через IP-туннель. Если у вас более высокие требования к безопасности, вы можете поэкспериментировать с настройками — но если это вызывает трудности или серфинг становится слишком медленным, рекомендуется снова отключить эту конфигурацию. Вы всегда должны использовать другие инструкции, перечисленные ниже, чтобы назвать публичные DNS-серверы, с которыми будет работать ваш VPN-сервер. В следующей команде сервер от IONOS указан как «217.237.150.188», а также сервер от Google указан как «8.8.8.8». При желании это можно изменить, указав IPv4-адреса других DNS-серверов. С помощью команды «log-append /var/log/openvpn» убедитесь, что информация из журнала записывается в файл «/var/log/openvpn».
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 217.237.150.188"
push "dhcp-option DNS 8.8.8.8"
log-append /var/log/openvpn
С помощью «persist-key» ключевые файлы не считываются повторно, а сетевые драйверы TUN и TAP не перезапускаются с помощью «persist-tun». Права демона OpenVPN после запуска программы урезаются с помощью «user nobody» и «group nogroup». С помощью «status /var/log/openvpn-status.log» можно создать статфайл, который показывает текущее соединение. Рекомендуется согласовать детали информации журнала с командой «verb». Если вы выберете значение «0», вы не будете получать никаких отчетов о проблемах, кроме сообщений об ошибках. Значение от 1 до 4 подходит для нормального использования, в то время как более высокие значения лучше использовать для устранения неполадок. Наконец, с помощью команды «client-to-client» укажите, что VPN-клиенты должны распознавать не только сервер, но и другие VPN-клиенты, а с помощью «comp-lzo» активируйте LZO-сжатие (его также нужно освободить в config-файле клиента).
persist-key
persist-tun
user nobody
group nogroup
status /var/log/openvpn-status.log
verb 3
client-to-client
comp-lzo
Сохраните изменения с помощью «Ctrl + O» и закройте редактор с помощью «Ctrl + X».
Создание сценария для доступа в Интернет с помощью клиента
Чтобы получить доступ к локальной сети через ваш VPN-туннель, вам необходимо создать перенаправление. Для этого сначала создайте файл «/etc/init.d/rpivpn»:
Sudo nano /etc/init.d/rpivpn
Скопировав следующие комментарии в файл, вы создадите заголовок для инит-скрипта Linux:
#! /bin/sh
### BEGIN INIT INFO
# Provides: rpivpn
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: VPN initialization script
### END INIT INFO
Далее активируйте «ip_forward», записав в файл «1»:
echo 'echo "1" > /proc/sys/net/ipv4/ip_forward' | sudo -s
Теперь создайте перенаправление для пакетов VPN с помощью пакетного фильтра «iptables»:
iptables -A INPUT -i tun+ -j ACCEPT
iptables -A FORWARD -i tun+ -j ACCEPT
Вам нужны команды, которые позволят вашим VPN клиентам иметь доступ к локальной сети, а также к интернету. Вы можете задать их с помощью следующих строк:
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -F POSTROUTING
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
Сохраните и закройте файл снова, используя «Ctrl + O» и «Ctrl + X».
Чтобы перенаправление работало, необходимо назначить соответствующие разрешения сценарию, а затем установить его в качестве init-скрипта.
sudo chmod +x /etc/init.d/rpivpn
sudo update-rc.d rpivpn defaults
Теперь внедрите скрипт и перезапустите сервер OpenVPN.
sudo /etc/init.d/rpivpn
sudo /etc/init.d/openvpn restart
Завершите настройку клиентов
На последнем этапе соберите сертификат и ключ для каждого клиента в один пакет. Снова дайте себе права root, откройте файл «/etc/openvpn/easy-rsa/keys/» и создайте файл конфигурации клиента. Используя следующие команды, получите доступ к файлу «laptop». Настройка для каждого клиента функционирует одинаково — вам просто нужно соответствующим образом настроить имя устройства.
sudo su
cd /etc/openvpn/easy-rsa/keys
nano laptop.ovpn
В файл клиента «.ovpn» вставьте следующее:
dev tun
client
proto udp
remote x.x.x.x 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert laptop.crt
key laptop.key
comp-lzo
verb 3
Содержимое файла, приведенное выше, все еще нуждается в корректировке. В четвертой строке замените «xxxx» на IP-адрес вашего DDNS-провайдера (если вы используете статический публичный IP-адрес, вы можете просто ввести его туда), затем порт, через который должен быть доступен VPN-сервер. В третьей и четвертой последних строках введите имя вашего клиента (здесь: «laptop»). После внесения изменений сохраните их с помощью клавиш «Ctrl + O» и закройте редактор с помощью «Ctrl + X».
Наконец, соберите весь файл конфигурации вместе с вашими сертификатами и ключами в zip-файл. Если у вас еще не установлен zip-пакет на Raspberry Pi, вы можете сделать это с помощью следующей команды:
apt-get install zip
Чтобы создать zip-файл, выполните следующие команды, еще раз убедившись, что вы каждый раз вводите правильные имена клиентов.
zip /home/pi/raspberry_laptop.zip ca.crt laptop.crt laptop.key laptop.ovpn
Теперь вам нужно настроить права доступа к файлам и выйти из установки с помощью команды «exit».
chown pi:pi /home/pi/raspberry_laptop.zip
exit
Теперь перенесите готовый zip-файл с Raspberry Pi на клиент (например, с помощью SCP или SFTP-программы), а затем настройте клиент на устройстве. Теперь вы можете использовать это устройство для доступа к локальной сети, подключенной к клиенту, и его интернет-соединению с любого другого интернет-соединения.
Создание собственного VPN-сервера на Raspberry Pi того стоит
Персональный VPN гораздо дешевле, чем многие могут подумать: благодаря низким требованиям к питанию Raspberry Pi и низкой стоимости отдельных компонентов сервера (Raspberry Pi, карта micro SD и т.д.) нет необходимости беспокоиться о больших эксплуатационных расходах.
VPN-сервер Raspberry Pi также способен на многое. Имея собственный VPN-сервер на Raspberry Pi, вы можете получить доступ к локальной компьютерной сети из любого интернет-соединения. VPN-соединение шифруется и позволяет вам гораздо более безопасно перемещаться в Интернете, как в открытых и/или ненадежных сетях WLAN, так и через линию передачи данных вашего мобильного провайдера. Мобильное интернет-соединение вряд ли может обеспечить большую защиту.