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

Выбор технологии VPN
Настройка WireGuard
It's time to kick gum and chew ass. And i'm all out of ass.
Выбор технологии VPN
       
  
  

Технология Linux*BSDmacOSWindows Android iOS МаршрутизаторыПримечания
OpenVPN Да (в NetworkManager) Требуется клиент Требуется клиентТребуется клиент Требуется клиент Требуется клиент Некоторые
WireGuard Да (в NetworkManager) Требуется клиент Требуется клиентТребуется клиент Требуется клиент Требуется клиент НетНа системах без модуля ядра скорость может быть низкой
PPTP Да (в NetworkManager) Да Да Да Да Да Да Есть старые уязвимости, используйте с осторожностью
L2TP Да (в NetworkManager) Требуется клиент Да Да Да Да Да

Общие примечания:
  • Под поддержкой в маршрутизаторах подразумевается поддержка прошивкой от производителя. Сторонние (такие как OpenWRT, DD-WRT и подобные) поддерживают большую часть указанных выше протоколов.
  • Сравнение нацеленно на десктопные (в случае с Linux и BSD) и мобильные ОС. Поэтому указано, что в Linux поддержка есть в NetworkManager.
  • Возможно, список будет дополняться.
It's time to kick gum and chew ass. And i'm all out of ass.
Настройка WireGuard


Для установки посмотрите здесь название пакета для Вашего дистрибутива или ОС. В CentOS не забудьте про epel-release.

Создайте каталог mkdir -p /etc/wireguard/. Выполните wg genkey | tee /etc/wireguard/server_private.key | wg pubkey | tee /etc/wireguard/server_public.key - эта команда сгенерирует ключи. Создайте файл /etc/wireguard/wg0.conf со следующим содержимым:
Код:
[Interface]
PrivateKey = содержимое файла server_private.key
Address = 10.10.0.1/24
ListenPort = 51820
SaveConfig = true

Для добавления клиента добавьте следующие строки в конец файла wg0.conf:
Код:
[Peer]
PublicKey = публичный ключ клиента (о нём ниже)
AllowedIPs = 10.10.0.2/32

Для каждого клиента свой блок Peer и свой адрес. Например, для другого клиента может быть использован адрес 10.10.0.3/32.

Для добавления клиента без перезапуска выполните следующую команду:
Код:
wg set wg0 peer публичный ключ клиента allowed-ips 10.10.0.2/32

Включите режим маскарадинга. Для iptables команды будут такими:
Код:
iptables -A FORWARD -i wg0 -j ACCEPT
iptables -t nat -A POSTROUTING -o сетевой_интерфейс -j MASQUERADE-j ACCEPT
Для firewalld:
Код:
firewall-cmd --add-rich-rule='rule family=ipv4 source address=10.10.0.1/24 masquerade' --permanent
firewall-cmd --reload
Обратите внимание: пул адресов 10.10.0.1/24 не должен быть занят другими приложениями. Если же занят, то используйте другой пул. То же самое про порт. Не забудьте открыть его.

Добавьте в /etc/sysctl.conf следующие строки:
Код:
net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1
И примените эти значения: sysctl -p.

Установите права 600 для server_public.key и wg0.conf.

Запустите сервер:
Код:
systemctl start wg-quick@wg0
systemctl enable wg-quick@wg0
Если в Вашей системе нет systemd,  используйте команды wg-quick up конфиг и wg-quick down конфиг.

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

Сгенерируйте клиентские ключи:
Код:
wg genkey | tee /etc/wireguard/client_private.key | wg pubkey | tee /etc/wireguard/client_public.key

Создайте конфигурационный файл клиента:
Код:
[Interface]
Address = 10.10.10.2/24
PrivateKey = содержимое файла client_private.key

[Peer]
PublicKey = содержимое файла server_public.key
AllowedIPs = 0.0.0.0/0
Endpoint = сервер:порт
PersistentKeepalive = 25
Address - пул адресов для VPN-клиента. Может быть любым.

Подключиться к серверу можно следующими способами:
  • Через клиент с графической оболочкой
  • Через NetworkManager (для него не требуется создание конфигурационного файла клиента, а все настройки вносятся непосредственно в нём)
  • Через клиент WireGuard: systemctl start wg-quick@конфиг или wg-quick up конфиг
It's time to kick gum and chew ass. And i'm all out of ass.
[ЗАРЕЗЕРВИРОВАНО_2]
It's time to kick gum and chew ass. And i'm all out of ass.
[ЗАРЕЗЕРВИРОВАНО_3]
It's time to kick gum and chew ass. And i'm all out of ass.