Превратите Raspberry Pi в VPN для доступа к вашей сети из любого места

Зачем использовать VPN для доступа к вашему дому

Быстрые ссылки

  • Зачем использовать VPN для доступа к вашему дому
  • Настройте пи
    • Установить Распбиан
  • Настроить OpenVPN
    • Центр сертификации
    • Сделать несколько ключей
    • Конфигурация сервера
    • Запустите сервер
  • Настройка клиента
    • Конфигурация клиента
  • Перенаправление порта
  • Подключиться к клиенту
  • Заключительные мысли

Существует множество причин, по которым вы хотите получить удаленный доступ к домашней сети, и лучший способ сделать это — использовать VPN-сервер. Некоторые маршрутизаторы фактически позволяют вам настроить VPN-сервер непосредственно в маршрутизаторе, но во многих случаях вам понадобится настроить его самостоятельно.

Raspberry Pi — отличный способ сделать это. Им не требуется много энергии для работы, и у них достаточно мощности для работы VPN-сервера. Вы можете установить его рядом с маршрутизатором и забыть об этом.

Когда у вас есть удаленный доступ к домашней сети, вы можете получить доступ к своим файлам из любой точки мира. Вы можете запускать свои домашние компьютеры удаленно. Вы даже можете использовать VPN-подключение вашего дома с дороги. Такая настройка позволяет вашему телефону, планшету или ноутбуку работать так же, как и дома.

Настройте пи

Прежде чем вы сможете начать настройку VPN, вам необходимо настроить Raspberry Pi. Лучше всего установить Pi с чехлом и приличной картой памяти, 16 ГБ должно быть более чем достаточно. Если возможно, подключите Pi к маршрутизатору с помощью кабеля Ethernet. Это сведет к минимуму любые сетевые задержки.

Установить Распбиан

Лучшая операционная система для вашего Pi — Raspbian. Это выбор по умолчанию, предложенный фондом Raspberry Pi, и он основан на Debian, одной из самых безопасных и стабильных версий Linux.

Перейдите на страницу загрузки Rasbian и получите последнюю версию. Вы можете использовать «облегченную» версию здесь, потому что вам на самом деле не нужен графический рабочий стол.

Во время загрузки установите последнюю версию Etcher для вашей операционной системы. После завершения загрузки извлеките изображение Raspbian. Затем откройте Etcher. Выберите изображение Raspbian, откуда вы его извлекли. Выберите вашу SD-карту (вставьте ее первой). Наконец, запишите изображение на карту.

Оставьте SD-карту на своем компьютере, когда это будет сделано. Откройте файловый менеджер и перейдите к карте. Вы должны увидеть пару разных разделов. Ищите «загрузочный» раздел. Это файл с файлом «kernel.img». Создайте пустой текстовый файл в «загрузочном» разделе и назовите его «ssh» без расширения файла.

Вы можете наконец подключить свой Пи. Убедитесь, что вы подключите его в последнюю очередь. Вам не понадобится экран, клавиатура или мышь. Вы собираетесь получить удаленный доступ к Raspberry Pi через свою сеть.

Дайте Пи несколько минут, чтобы настроить себя. Затем откройте веб-браузер и перейдите к экрану управления вашего маршрутизатора. Найдите Raspberry Pi и запишите его IP-адрес.

Работаете ли вы в Windows, Linux или Mac, откройте OpenSSH. Подключитесь к Raspberry Pi с помощью SSH.

$ ssh [электронная почта защищена]

Очевидно, использовать фактический IP-адрес Pi. Имя пользователя всегда пи, а пароль малина.

Настроить OpenVPN

OpenVPN не так просто установить в качестве сервера. Хорошей новостью является то, что вам нужно сделать это только один раз. Поэтому, прежде чем копаться, убедитесь, что Raspbian полностью обновлен.

$ sudo apt update
$ sudo apt upgrade

После завершения обновления вы можете установить OpenVPN и нужную вам утилиту сертификации.

$ sudo apt install openvpn easy-rsa

Центр сертификации

Чтобы аутентифицировать ваши устройства, когда они пытаются подключиться к серверу, вам нужно настроить центр сертификации для создания ключей подписи. Эти ключи гарантируют, что только ваши устройства смогут подключаться к вашей домашней сети.

Сначала создайте каталог для ваших сертификатов. Переместитесь в этот каталог.

$ sudo make-cadir / etc / openvpn / certs
$ cd / etc / openvpn / certs

Поищите конфигурационные файлы OpenSSL. Затем свяжите последнюю версию с openssl.cnf.

$ ls | grep -i openssl
$ sudo ln -s openssl-1.0.0.cnf openssl.cnf

В той же папке «certs» находится файл с именем «vars». Откройте этот файл в текстовом редакторе. По умолчанию используется Nano, но вы можете свободно устанавливать Vim, если вам удобнее.

Редактировать файл VarsРедактировать файл Vars

Сначала найдите переменную KEY_SIZE. По умолчанию установлено значение 2048. Измените это на 4096.

export KEY_SIZE = 4096

Основной блок, с которым вам нужно иметь дело, устанавливает информацию о вашем центре сертификации. Это помогает, если эта информация точна, но все, что вы можете вспомнить, хорошо.

export KEY_COUNTRY = "США"
export KEY_PROVINCE = "CA"
export KEY_CITY = "Сан-Франциско"
export KEY_ORG = "Fort-Funston"
export KEY_EMAIL = "[электронная почта защищена]"
export KEY_OU = "MyOrganizationalUnit"
export KEY_NAME = "HomeVPN"

Когда у вас есть все, сохраните и выйдите.

Тот пакет Easy-RSA, который вы установили ранее, содержит множество сценариев, которые помогают настроить все, что вам нужно. Вам просто нужно запустить их. Начните с добавления файла «vars» в качестве источника. Это загрузит все переменные, которые вы только что установили.

$ sudo source ./vars

Далее почистите ключи. У вас их нет, поэтому не беспокойтесь о сообщении о том, что ваши ключи будут удалены.

$ sudo ./clean-install

Создать центр сертификацииСоздать центр сертификации

Наконец, создайте свой центр сертификации. Вы уже установили значения по умолчанию, поэтому вы можете просто принять значения по умолчанию, которые они представляют. Не забудьте установить надежный пароль и ответьте «да» на два последних вопроса, следуя паролю.

$ sudo ./build-ca

Сделать несколько ключей

Создайте ключ сервераСоздайте ключ сервера

Вы прошли через все эти трудности, чтобы настроить центр сертификации, чтобы вы могли подписывать ключи. Теперь пришло время сделать некоторые. Начните с создания ключа для вашего сервера.

Сервер $ sudo ./build-key-server

Строй Диффи-ХеллманСтрой Диффи-Хеллман

Затем постройте PEM Диффи-Хеллмана. Это то, что OpenVPN использует для защиты ваших клиентских подключений к серверу.

$ sudo openssl dhparam 4096> /etc/openvpn/dh4096.pem

Последний ключ, который вам нужен сейчас, называется ключом HMAC. OpenVPN использует этот ключ для подписи каждого отдельного пакета информации, которым обмениваются клиент и сервер. Это помогает предотвратить определенные виды атак на соединение.

$ sudo openvpn --genkey --secret /etc/openvpn/certs/keys/ta.key

Конфигурация сервера

У вас есть ключи. Следующим этапом настройки OpenVPN является сама конфигурация сервера. К счастью, здесь не так много всего, что вам нужно сделать. Debian предоставляет базовую конфигурацию, которую вы можете использовать для начала работы. Итак, начнем с получения этого файла конфигурации.

$ sudo gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz> /etc/openvpn/server.conf

Снова используйте текстовый редактор, чтобы открыть /etc/openvpn/server.conf. Первое, что вам нужно найти, это файлы ca, cert и key. Вам необходимо установить их в соответствии с фактическим расположением файлов, которые вы создали, которые находятся в / etc / openvpn / certs / keys.

Ключи конфигурации сервера OpenVPNКлючи конфигурации сервера OpenVPN

ca /etc/openvpn/certs/keys/ca.crt
cert /etc/openvpn/certs/keys/server.crt
ключ /etc/openvpn/certs/keys/server.key # Этот файл должен храниться в секрете

Найдите настройку dh и измените ее в соответствии с созданным вами Diffie-Hellman .pem.

dh dh4096.pem

Установите путь для вашего ключа HMAC тоже.

tls-auth /etc/openvpn/certs/keys/ta.key 0

Найдите шифр и убедитесь, что он соответствует приведенному ниже примеру.

шифр AES-256-CBC

Следующая пара вариантов есть, но они закомментированы с; Удалите точку с запятой перед каждым параметром, чтобы включить их.

нажмите "redirect-gateway def1 bypass-dhcp"
нажмите "dhcp-option DNS 208.67.222.222"
нажмите "dhcp-option DNS 208.67.220.220"

Ищите параметры пользователя и группы. Раскомментируйте их и измените пользователя на «openvpn».

пользователь openvpn
группа nogroup

Наконец, эти две последние строки не в конфигурации по умолчанию. Вам нужно будет добавить их в конец файла.

OpenVPN Server Config AuthOpenVPN Server Config Auth

Установите дайджест аутентификации, чтобы указать более надежное шифрование для аутентификации пользователя.

# Дайджест аутентификации
аутентификация SHA512

Затем ограничьте количество шифров, которые OpenVPN может использовать, только более сильными. Это помогает ограничить возможные атаки на слабые шифры.

# Лимитные шифры
TLS-DHE-RSA-WITH-AES-256-GCM-SHA384: TLS-DHE-RSA-WITH-AES-128-GCM-SHA256: TLS-DHE-RSA-WITH-AES-256-CBC-SHA : TLS-DHE-RSA-С-КАМЕЛИЯ-256-CBC-SHA: TLS-DHE-RSA-С-AES-128-CBC-SHA: TLS-DHE-RSA-С-КАМЕЛИЯ-128-CBC-ША

Это все для конфигурации. Сохраните файл и выйдите.

Запустите сервер

Прежде чем вы сможете запустить сервер, вам нужно сделать того пользователя openvpn, которого вы указали.

$ sudo adduser --system --shell / usr / sbin / nologin --no-create-home openvpn

Это специальный пользователь только для запуска OpenVPN, и больше ничего не будет делать.

Теперь запустите сервер.

$ sudo systemctl start openvpn
$ sudo systemctl start [электронная почта защищена]

Убедитесь, что они оба работают

$ sudo systemctl status openvpn * .service

Если все выглядит хорошо, включите их при запуске.

$ sudo systemctl включить openvpn
$ sudo systemctl enable [электронная почта защищена]

Настройка клиента

Ваш сервер теперь настроен и работает. Далее вам необходимо настроить конфигурацию вашего клиента. Это конфигурация, которую вы будете использовать для подключения ваших устройств к вашему серверу. Вернитесь в папку certs и подготовьтесь к созданию клиентских ключей. Вы можете создать отдельные ключи для каждого клиента или один ключ для всех клиентов. Для домашнего использования один ключ должен быть в порядке.

$ cd / etc / openvpn / certs
$ sudo source ./vars
$ sudo ./build-key client

Процесс практически идентичен серверному, поэтому выполните ту же процедуру.

Конфигурация клиента

Конфигурация для клиентов очень похожа на конфигурацию для сервера. Опять же, у вас есть готовый шаблон, на котором будет основана ваша конфигурация. Вам нужно только изменить его в соответствии с сервером.

Перейдите в каталог клиента. Затем распакуйте образец конфигурации.

$ cd / etc / openvpn / client
$ sudo cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/client/client.ovpn

Откройте файл client.ovpn с помощью вашего текстового редактора. Затем найдите удаленный вариант. Если вы еще не используете VPN, поищите в Google «Какой у меня IP». Возьмите отображаемый адрес и установите для него удаленный IP-адрес. Оставьте номер порта.

удаленный 107.150.28.83 1194 # Этот IP по иронии судьбы является VPN

Ключи конфигурации клиента OpenVPNКлючи конфигурации клиента OpenVPN

Измените сертификаты, чтобы они отражали те, которые вы создали, так же, как вы сделали с сервером.

ca ca.crt
cert client.crt
ключ client.key

Найдите параметры пользователя и раскомментируйте их. Хорошо управлять клиентами, как никто.

пользователь никто
группа nogroup

Раскомментируйте опцию tls-auth для HMAC.

tls-auth ta.key 1

Клиентские шифры OpenVPNКлиентские шифры OpenVPN

Затем найдите параметр шифрования и убедитесь, что он соответствует серверу.

шифр AES-256-CBC

Затем просто добавьте дайджест аутентификации и ограничения шифра внизу файла.

# Дайджест аутентификации
аутентификация SHA512
# Ограничения шифрования
TLS-DHE-RSA-WITH-AES-256-GCM-SHA384: TLS-DHE-RSA-WITH-AES-128-GCM-SHA256: TLS-DHE-RSA-WITH-AES-256-CBC-SHA : TLS-DHE-RSA-С-КАМЕЛИЯ-256-CBC-SHA: TLS-DHE-RSA-С-AES-128-CBC-SHA: TLS-DHE-RSA-С-КАМЕЛИЯ-128-CBC-ША

Когда все выглядит правильно, сохраните файл и выйдите. Используйте tar для упаковки конфигурации и сертификатов, чтобы вы могли отправить их клиенту.

$ sudo tar cJf /etc/openvpn/clients/client.tar.xz -C / etc / openvpn / certs / keys ca.crt client.crt client.key ta.key -C /etc/openvpn/clients/client.ovpn

Передайте этот пакет клиенту по вашему выбору. SFTP, FTP и USB-накопитель — отличные варианты.

Перенаправление порта

Перенаправление портаПеренаправление порта

Чтобы все это работало, вам необходимо настроить маршрутизатор для пересылки входящего VPN-трафика на Pi. Если вы уже используете VPN, вам необходимо убедиться, что вы не подключаетесь к тому же порту. Если это так, измените порт в конфигурации вашего клиента и сервера.

Подключитесь к веб-интерфейсу вашего маршрутизатора, введя его IP-адрес в браузере.

Каждый роутер отличается. Тем не менее, все они должны иметь некоторую форму этой функциональности. Найдите это на своем роутере.

Настройка в основном одинакова на каждом маршрутизаторе. Введите начальный и конечный порты. Они должны совпадать друг с другом и с тем, который вы установили в своих конфигурациях. Затем для IP-адреса установите его в качестве IP-адреса вашего Raspberry Pi. Сохраните ваши изменения.

Подключиться к клиенту

Каждый клиент индивидуален, поэтому не существует универсального решения. Если вы используете Windows, вам понадобится клиент Windows OpenVPN.

На Android вы можете открыть свой tarball и передать ключи на свой телефон. Затем установите приложение OpenVPN. Откройте приложение и вставьте информацию из вашего файла конфигурации. Затем выберите ваши ключи.

В Linux вам нужно установить OpenVPN так же, как вы делали это для сервера.

$ sudo apt установить openvpn

Затем перейдите в / etc / openvpn и распакуйте архив, который вы отправили.

$ cd / etc / openvpn
$ sudo tar xJf /path/to/client.tar.xz

Переименуйте файл клиента.

$ sudo mv client.ovpn client.conf

Не запускайте клиент еще. Это не удастся. Сначала вам нужно включить переадресацию портов на вашем маршрутизаторе.

Заключительные мысли

Теперь у вас должна быть рабочая установка. Ваш клиент будет подключаться напрямую через ваш маршрутизатор к Pi. Оттуда вы можете поделиться и подключиться через вашу виртуальную сеть, если все устройства подключены к VPN. Ограничений нет, поэтому вы всегда можете подключить все свои компьютеры к Pi VPN.

Ссылка на основную публикацию