Top.Mail.Ru
Загрузка

Как запустить свой собственный VPN сервер

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: 51820

peer: 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 — дело нескольких минут. При этом расходы на свою анонимность в некоторых случаях получаются ниже, а защищённость выше.

svg

Что вы думаете?

Показать комментарии / Оставить комментарий

Комментировать

svg
Быстрая навигация
  • 01

    Как запустить свой собственный VPN сервер