VPN стал востребованным среди простого народа благодаря блокировке некоторых сайтов и социальных сетей со стороны надзирающих органов. А всё, что имеет спрос — превращается в большой бизнес. И вот интернет уже наполнен рекламой, в которой за небольшую оплату вам обещают полную защиту ваших личных данных. Но так ли это на самом деле?
Что такое VPN
Если объяснить по-простому, то VPN это зашифрованный канал интернет связи, который начинается на вашем компьютере, а конечная точка находится на компьютере поставщика VPN услуг. И когда связь установлена, то любой запрашиваемый вами ресурс уверен, что физически вы находитесь на стороне VPN сервера, где бы он не раcполагался. Выглядит здорово, не правда ли? Но VPN-провайдер заинтересован в поступлении ваших денег, значит он ведёт какой-никакой учёт, а это в свою очередь отметает напрочь весь покров анонимности.
Возможно я сгущаю краски, и на самом деле не всё так уж и плохо. Но если червь сомнения уже закрался в наши головы, то почему бы нам самим не запустить свой собственный VPN сервер? Для этого нам понадобится облачный сервер (VPS), который в дальнейшем можно использовать для других целей, и немного терпения. Раньше я использовал OpenVPN, и хорошо помню, как в первый раз долго мучался с его настройкой. Но потом появились скрипты, которые всю рутину по настройке выполняли автоматически. Всё что требуется от вас теперь — это ввести и/или подтвердить данные, а затем скопировать на свой компьютер готовый файл конфигурации.
Но недавно я открыл для себя новую технологию создания защищённых соединений — WireGuard, о которой я и расскажу ниже.
Знакомьтесь — WireGuard
WireGuard — это быстрый и современный инструмент для создания VPN соединений, который использует новейшую криптографию. Он гораздо быстрее, чем OpenVPN, а также имеет меньшую кодовую базу, что облегчает аудит и поддержку. Ранее WireGuard был доступен только в виде модуля ядра DKMS, но в апреле 2020 года он был добавлен в ядро Linux.
Изначально, как и было указано выше, WireGuard был выпущен для ядра Linux, но в настоящее время он является кроссплатформенным, и доступен на Windows, macOS, BSD, iOS, Android, и как следствие довольно широко распространён. В настоящее время он находится в стадии активной разработки, и многие настройки придётся делать вручную, но уже сейчас его можно считать наиболее безопасным, простым и удобным решением в использовании VPN.
На сайте разработчиков WireGuard приводятся результаты тестов разных решений VPN, где WireGuard представлен явным фаворитом.
Установка
Первым делом надо установить инструмент и на VPS сервере, и на локальном компьютере с помощью команды:
sudo apt install wireguard
В результате будет создан каталог /etc/wireguard, внутри которого мы сгенерируем пару ключей:
wg genkey | sudo tee /etc/wireguard/privatekey
sudo cat /etc/wireguard/privatekey | wg pubkey | sudo tee /etc/wireguard/publickey
Скопируйте значения ключей с обеих машин в какой-нибудь файл, они пригодятся при дальнейшей настройке WireGuard.
На сервере
Переадресация IP-адресов
В первую очередь надо настроить переадресацию IP-адресов, для того, чтобы иметь возможность подключаться через сервер WireGuard. Переадресация пакетов делается только на стороне сервера WireGuard, для клиентских машин этого делать не надо. Откройте файл настроек ядра Linux:
sudo nano /etc/sysctl.conf
Затем раскомментируйте следующую строку, удалив символ # в начале строки:
net.ipv4.ip_forward=1
После того как сохраните файл и выйдете из редактора, надо применить новую опцию с помощью следующей команды:
sudo sysctl -p
Вывод команды будет следующим:
net.ipv4.ip_forward=1
Настройка правил брандмауэра
Для блокирования нежелательных подключений и обеспечения безопасности сервера необходимо настроить брандмауэр. Добавьте следующее правило для разрешения соединений WireGuard:
sudo ufw allow 51820/udp
Проверить новое правило можно командой:
sudo ufw status
В результате выполнения команды вы должны увидеть заданый порт и протокол:
Файл конфигурации WireGuard
После всей предварительной подготовки можно приступать к настройке WireGuard. Файлы конфигурации обычно хранятся в папке /etc/wireguard. Создайте в этой папке новый конфигурационный файл wg0.conf.
sudo nano /etc/wireguard/wg0.conf
Ниже приведена конфигурация сервера WireGuard, которая будет прослушивать порт 51820 и разрешать доступ клиенту с заданным открытым ключом.
[Interface]
PrivateKey = (privatekey сервера)
Address = 10.0.0.1/24
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
ListenPort = 51820[Peer]
PublicKey = (publickey клиента)
AllowedIPs = 10.0.0.2/32
Обратите внимание, что в конфигурационный файл необходимо включить ваш интерфейс (в примере указан — eth0), который можно увидеть в выводе команды:
ip a
Если вы не записали ключи, то просмотреть их можно следующими командами:
sudo cat /etc/wireguard/publickey
sudo cat /etc/wireguard/privatekey
Запуск WireGuard
Теперь всё готово к первому запуску сервера. WireGuard имеет удобную обёртку «wg-quick», которую можно использовать для запуска нового интерфейса без необходимости вникать во все подробности поднятия новой сети. Итак, следующая команда запустит WireGuard:
sudo wg-quick up wg0
Результат запуска показан ниже.
[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 10.0.0.1/24 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Проверить конфигурацию можно с помощью следующей команды.
sudo wg show
В ответ вы должны получить примерно следующее:
interface: wg0
public key: ZBzWxtEa7EvrmGC9s/RiPt1nwYiffyCcCW9DQTXAImk=
private key: (hidden)
listening port: 51820peer: 9Ep0rodpIpJ32ecLi24QSl6MVrmZbWOujfhv3oO+YUM=
allowed ips: 10.0.0.2/32
Чтобы WireGuard автоматически запускался при загрузке системы, необходимо включить его в службу systemd.
sudo systemctl enable wg-quick@wg0
На стороне клиента
Настало время настроить клиентское устройство. На компьютере клиента создайте новый конфигурационный файл в каталоге /etc/wireguard.
sudo nano /etc/wireguard/wg0.conf
Затем добавьте в этот файл закрытый ключ клиента и открытый ключ сервера в соответствующие места, а также укажите внешний IP-адрес или доменное имя вашего сервера WireGuard.
[Interface]
Address = 10.0.0.2/32
PrivateKey = (privatekey клиента)
DNS = 1.1.1.1[Peer]
PublicKey = (publickey сервера)
Endpoint = <внешний ip сервера>:51820
AllowedIPs = 0.0.0.0/0, ::/0
После сохранения значений в файл конфигурации можно запустить соединение командой, приведенной ниже:
sudo wg-quick up wg0
Для запуска WireGuard в качестве службы, можно воспользоваться командой:
sudo systemctl start wg-quick@wg0
Затем, когда вы захотите отключиться, используйте одну из следующих команд в зависимости от того, какой метод вы использовали для запуска.
sudo wg-quick down wg0
sudo systemctl stop wg-quick@wg0
После этого WireGuard отключится от сервера и удалит связанные с ним сетевые настройки.
Если у вас имеется несколько облачных серверов, то на клиентской машине можно создать несколько конфигурационных файлов (wg0.conf, wg1.conf и тд.)
Добавление дополнительных клиентов
Если вы захотите использовать WireGuard VPN и на других устройствах, то вы можете легко их добавить на свой сервер. Сначала установите WireGuard на клиентское устройство. Затем, как и раньше, создайте новую пару ключей, и отредактируйте файл wg0.conf на сервере WireGuard.
sudo nano /etc/wireguard/wg0.conf
Добавьте следующую запись в конец файла, чтобы включить открытый ключ второго клиента и задать для него IP-адрес.
[Peer]
PublicKey = (publickey второго клиента)
AllowedIPs = 10.0.0.3/32
После того как сохраните файл, перезапустите службу для обновления конфигурации.
sudo systemctl restart wg-quick@wg0
Это всё!
Заключение
Завышенные ожидания людей относительно конфиденциальности в интернете,
сводятся на нет провайдерами платных услуг VPN. Ко всем их пафосным заявлениям о вреде «незащищенного» сёрфинга надо относиться с долей скептицизма. Как вы увидели выше, запуск собственного сервера VPN — дело нескольких минут. При этом расходы на свою анонимность в некоторых случаях получаются ниже, а защищённость выше.
Что вы думаете?
Показать комментарии / Оставить комментарий