Откажитесь от подписки — вот как создать собственный VPN за пять минут
27 января 2023 г.Возможно, вы уже понимаете, насколько важна хорошая VPN для обеспечения безопасности и конфиденциальности вашей мобильной связи.
Если вам нужно использовать свой телефон для банковских операций через Wi-Fi в общественном аэропорту или кафе, или вы беспокоитесь о том, что не те люди подслушивают ваши онлайн-взаимодействия, туннельное шифрование, которое хороший VPN предоставляет вам, может быть неоценимым.
Хитрость, однако, заключается в том, чтобы найти действительно «хороший» VPN, удобный и недорогой.
Существует множество коммерческих VPN-сервисов, и настроить один из них для телефона или ноутбука обычно достаточно просто.
Но у таких сервисов есть два потенциальных недостатка: они часто дорогие, со средними платежами около 10 долларов в месяц, и вы никогда не можете быть на 100% уверены, что они не (случайно или намеренно) не сливают или не используют ваши данные не по назначению.
Кроме того, более дешевые VPN часто ограничивают использование данных и количество устройств, которые вы можете подключить.
Если вам нравится смотреть видеоверсии руководств в дополнение к обучению, не стесняйтесь следовать здесь:
https://www.youtube.com/watch?v=kxj8GMvnASE?embedable=true а>
Что предлагает WireGuard
Но если у вас все равно есть работающий облачный сервер Linux, создание WireGuard VPN может стать простым и бесплатным способом добавить серьезной, надежной безопасности и конфиденциальности в вашу жизнь.
Если вы планируете ограничить VPN только устройствами, принадлежащими вам и нескольким друзьям, вы, вероятно, даже не заметите дополнительной нагрузки на сервер. Даже если вам пришлось запустить и заплатить за выделенный зарезервированный инстанс AWS EC2 t2.micro, ежегодные расходы все равно должны выйти значительно дешевле, чем у большинства коммерческих VPN. А в качестве бонуса вы получите полный контроль над своими данными.
Прямо сейчас я собираюсь показать вам, как все это будет работать с использованием программного обеспечения WireGuard с открытым исходным кодом на сервере Ubuntu Linux.
Почему WireGuard? Потому что он действительно прост в использовании, спроектирован так, чтобы быть особенно устойчивым к атакам, и он настолько хорош в том, что он делает, что недавно был включен в само ядро Linux.
Фактическая работа, чтобы это произошло, на самом деле займет всего пять минут или меньше. При этом планирование, устранение непредвиденных проблем и, при необходимости, запуск нового сервера могут значительно увеличить время проекта.
Как настроить среду
Во-первых, вам необходимо открыть UDP-порт 51820 в любом брандмауэре, который вы используете. Вот как это будет выглядеть для группы безопасности, связанной с экземпляром AWS EC2:
Теперь на сервере Linux с помощью оболочки sudo мы начнем с установки пакетов WireGuard и resolvconf.
Технически нам, вероятно, здесь не понадобится resolvconf, но поскольку это то, что вам нужно, если вы хотите настроить Linux-машину в качестве клиента WireGuard, я подумал, что добавлю и это сюда. .
apt install wireguard resolvconf
Как сгенерировать ключи шифрования
Команда wg genkey
создает новый закрытый ключ шифрования и сохраняет его в виде файла в каталоге /etc/wireguard. Этот каталог был создан автоматически при установке WireGuard.
Команда chmod
устанавливает соответствующие ограничительные разрешения для этого файла закрытого ключа.
Как и все в Linux, есть и другие способы сделать это, но убедитесь, что вы делаете это правильно.
wg genkey | sudo tee /etc/wireguard/private.key
chmod go= /etc/wireguard/private.key
Далее мы будем использовать значение нашего закрытого ключа для создания соответствующего открытого ключа, который также будет сохранен в каталоге /etc/wireguard. Цель состоит в том, чтобы добавить открытый ключ сервера в конфигурацию WireGuard на всех клиентских устройствах, которые мы будем использовать, а затем добавить открытые ключи этих клиентов в конфигурацию сервера здесь.
Закрытые ключи никогда не должны покидать машины, для которых они созданы, и всегда должны быть тщательно защищены.
cat /etc/wireguard/private.key | wg pubkey | sudo tee
Как настроить сервер WireGuard
Теперь мы готовы создать файл конфигурации сервера. Следуя соглашению, я назову файл wg0.conf, но вы можете дать ему любое имя. Вы также можете иметь несколько конфигураций (с разными именами файлов), существующих одновременно.
Вот как будет выглядеть наша конфигурация:
[Interface]
Address = 10.5.5.1/24
ListenPort = 51820
# Use your own private key, from /etc/wireguard/privatekey
PrivateKey = your_key
[Peer]
# Workstation public key
PublicKey = your_key
# VPN client's IP address in the VPN
AllowedIPs = 10.5.5.2/32
[Peer]
# laptop public key
PublicKey = your_key
# VPN client's IP address in the VPN
AllowedIPs = 10.5.5.3/32
Обратите внимание, что этот файл состоит из трех разделов: интерфейса и двух одноранговых узлов. Раздел Interface определяет частный сетевой адрес NAT, который будет использовать наш сервер. Это частный адрес, к которому будут подключаться клиенты — после первого запроса доступа через общедоступный IP-адрес сервера, конечно.
Вам не нужно следовать моей адресации, если вы используете действительный диапазон частных IP-адресов, который не пересекается с какими-либо сетевыми блоками, используемыми вашим сервером или клиентом.
В соответствии с правилом группы безопасности UDP, которое я настроил ранее в AWS, я определяю ListenPort как 51820. Но я могу выбрать другой адрес, чтобы немного повысить безопасность, если захочу.
Наконец, я бы вставил закрытый ключ сервера в качестве значения PrivateKey
, чтобы WireGuard мог аутентифицировать входящие клиентские запросы.
Первый раздел peer
содержит не что иное, как открытый ключ и назначенный частный IP-адрес одного клиента. Второй раздел peer
делает то же самое для второго клиентского компьютера.
Получение этих открытых ключей от клиента — самая ручная задача, связанная со всей этой настройкой. Но, поскольку это ваша собственная VPN, вы обычно можете найти способ скопировать и вставить прямо в конфигурацию вашего сервера, чтобы вам не нужно было мучительно вводить все это целиком.
Это должно быть все. Я буду использовать команду wg-quick
, чтобы оживить VPN. up
сообщает WireGuard прочитать только что созданную нами конфигурацию wg0.conf и использовать ее для создания нового интерфейса VPN.
wg-quick up wg0
Запуск wg
покажет нам, что это сработало. Наконец, я запущу systemctl enable
, чтобы заставить Linux автоматически загружать этот интерфейс WireGuard при каждой перезагрузке сервера.
systemctl enable wg-quick@wg0
Как настроить клиенты WireGuard
Это все, что нам нужно от сервера. Настройка вашего клиентского устройства с помощью WireGuard будет либо намного проще, либо более или менее такой же.
Что означает это? Если вы работаете с Windows, macOS, Android или iOS, ссылки на приложения с графическим интерфейсом доступны на этом wireguard.com/install. страница. Эти приложения будут генерировать пары ключей для вас. Вам нужно будет только ввести IP-адрес или домен сервера и его открытый ключ. Затем вы возьмете открытый ключ клиента и добавите его в файл wg0.conf сервера, как я показал ранее.
Однако, если вы хотите добавить клиент для ПК или ноутбука с Linux, это немного сложнее. В основном вы выполните все шаги, которые вы видели для конфигурации сервера, включая генерацию ключа. Вы даже создадите файл конфигурации с именем wg0-conf (если это имя вам нравится). Но вот как должен выглядеть этот файл конфигурации:
[Interface]
# The address your computer will use on the VPN
Address = 10.5.5.2/32
DNS = 8.8.8.8
# Load your privatekey from file
PostUp = wg set %i private-key /etc/wireguard/privatekey
# Also ping the vpn server to ensure the tunnel is initialized
PostUp = ping -c1 10.47.47.1
[Peer]
# VPN server's wireguard public key
PublicKey = your_key
# Public IP address of your VPN server (USE YOURS!)
Endpoint = 54.160.21.183:51820
# 10.0.0.0/24 is the VPN subnet
AllowedIPs = 10.47.47.0/24
# PersistentKeepalive = 25
Раздел Interface
на этот раз представляет клиентский компьютер, а раздел Peer
внизу относится к серверу. Начнем с Interface
. Частный IP-адрес должен совпадать с адресом, который вы даете этому конкретному клиенту в конфигурации на сервере.
Если вам нужно, чтобы ваш клиент обходил локальный DNS-сервер, вы можете указать здесь собственный DNS-сервер. Это тот, который предоставлен Google.
Вместо жесткого кодирования вашего локального закрытого ключа в файле конфигурации, как мы это делали на сервере, вы можете указать WireGuard читать файл закрытого ключа всякий раз, когда он загружается. Вероятно, это своего рода лучшая практика безопасности — и мы могли бы так же легко сделать это и на сервере. Наконец, скрипт конфигурации проверит наше соединение с помощью команды ping PostUp
.
Для конфигурации Peer
или сервера требуется открытый ключ сервера, который добавляется здесь.
Конечная точка
— это место, где вы указываете WireGuard, где найти сервер. Без этого ничего не получится! Для этого потребуется общедоступный IP-адрес сервера или его доменное имя, за которым следует выбранный вами порт. Опять же, 51820 — это значение WireGuard по умолчанию.
Наконец, параметр AllowedIPs
определяет диапазон сетевых адресов, который вы будете использовать, а необязательное значение PersistentKeepalive
может предотвратить разрыв соединений.
Вы запускаете WireGuard на клиенте точно так же, как и на сервере, используя wg-quick up wg0
. Опять же, все эти шаги будут необходимы только для клиентов Linux. Вы можете использовать приложения для других платформ.
Подведение итогов
Вот и все. Как я уже сказал, рабочий VPN примерно за пять минут работы. Теперь у вас на одно оправдание меньше для защиты вашей конфиденциальности в Интернете и защиты ваших сообщений.
Чтобы узнать больше о технологиях, подпишитесь на мой канал YouTube и, когда у вас будет время, посмотрите множество книг и курсов по Linux, безопасности, анализу данных и AWS, доступных на моем веб-сайте bootstrap-it.com.< /p>
:::информация Также опубликовано здесь.
:::
Оригинал