Почему Wireguard:
Что нужно:
Установка:
$ sudo apt install wireguard
Создаем ключи для сервера:
$ wg genkey | tee server-private.key | wg pubkey > server-public.key
Создаем ключи для клиентов:
$ wg genkey | tee client1-private.key | wg pubkey > client1-public.key $ wg genkey | tee client2-private.key | wg pubkey > client2-public.key
Создаем файл настроек /etc/wireguard/wg0.conf, содержимое server-private.key и server-public.key нужно будет поместить внутрь:
[Interface] Address = 10.10.10.1/24 ListenPort = 51820 PrivateKey = <содержимое server-private.key> DNS = 1.1.1.1, 1.0.0.1 # SaveConfig = true PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE [Peer] # client1 PublicKey = <содержимое client1-public> AllowedIPs = 10.10.10.101/32 [Peer] # client1 PublicKey = <содержимое client2-public> AllowedIPs = 10.10.10.102/32
Разрешаем пересылку пакетов между интерфейсами, добавляем в /etc/sysctl.conf:
net.ipv4.ip_forward=1 net.ipv4.conf.all.forwarding=1 net.ipv6.conf.all.forwarding=1
Для принятия изменений выполните:
$ sysctl -p /etc/sysctl.conf
Включаем запуск службы при загрузке сервера:
$ systemctl enable [email protected]
Запускаем сервер:
$ systemctl start [email protected]
или
$ sudo wg-quick up wg0
Проверяем статус:
$ wg show
Создаем для каждого пользовательского устройства файл конфигурации client1.conf:
[Interface] Address = 10.10.10.101/24 PrivateKey = <Содержимое client1-private.key> [Peer] Endpoint = <Адрес сервера XXX.XXX.XXX.XXX>:51820 PublicKey = <Содержимое server-public.key> AllowedIPs = 0.0.0.0/0 PersistentKeepalive = 30
Этот файл можно скопировать на клиента, а можно сделать QR-код (что ну очень удобно для мобильных устройств):
$ sudo apt install qrencode $ qrencode -t ANSI < client1.conf