Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
dj-losos
6 лет назад

WireGuard VPN

В связи с прошедшими событиями - блокировка Телеграм и за компанию кучу сайтов и хостингов, я не смог попасть к своим очень важным сервисам, развернутым в гуглооблаке. Пользуюсь OpenVPN уже давно, использую и для связки офисов, и секретного интернета, и обхода блокировок. Захотелось приключений и чего то нового. Начал мониторить, искать альтернативы. Нашел в аналитике WireGuard - оказывается в четыре раза производительней и в два раза проще в настройке. Ну тут конечно я поспешил с выводами - очень мало толковых мануалов на русском языке, а с буржуйским дружу плохо, но все же победил настройку этого ВПН, чем и хочу поделиться.

Рекомендую арендовать виртуальную машину, VPS, дедик с белым IP адресом (я пользуюсь - EuroHoster, можно оплачивать криптой и хороший пинг до РФ). Далее все настройки и операции будут приведены для операционной системы Ubuntu server 16.04, но они подходят для всех дебиан дистрибутивов.

После развертывания ОС на сервере, начинаем установку ВПН

Добавляем репозиторий с программой и установим ее

$ sudo add-apt-repository ppa:wireguard/wireguard
$ sudo apt-get update

$ sudo apt-get install wireguard

Далее сгенерируем публичный и приватный ключи

$ wg genkey | tee privatekey | wg pubkey > publickey

Включаем IP форвардинг, и запускаем интерфейс ВПН. Wireguard создает сетевой интерфейс, который поддается любой маршрутизации средствами ОС

$ sudo nano /etc/sysctl

ищем строку “net.ipv4.ip_forward = 0” и заменяем 0 на 1применяем настройки

$ sudo sysctl -p

инициализируем интерфейс ВПН (имя по умолчанию у него wg0)

$ sudo ip link add dev wg0 type wireguard

создаем конфиг серверной части WireGuard

$ sudo nano /etc/wireguard/wg0.conf
   # Здесь идет описание самого интерфейса
[Interface]

  # выбираем адрес и подсеть будущих подключений,
   #первый адрес естественно серверу

Address = 10.10.10.1/24
  # маршрутизация, для того, чтоб интернет трафик шел через наш интерфейс   
  # где eth0 интерфейс куда приходит интернет на сервере
  # (может называться по разному)
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
  # порт UDP на котором будет работать ВПН

ListenPort = 51820
  # приватный ключ, который мы сгенерировали ранее в файлик privatkey

PrivateKey = [SERVER PRIVATE KEY]
   # далее идут описания клиентов.
[Peer]
  # берем публичный ключ от клиента и присваиваем ему IP адрес
PublicKey = [CLIENT PUBLIC KEY]

AllowedIPs = 10.10.10.2/32

[Peer]
PublicKey = [CLIENT PUBLIC KEY]
AllowedIPs = 10.10.10.3/32
...

Далее можно запустить сервер и добавить его в автозапуск

$ sudo systemctl enable wg-quick@wg0
$ sudo systemctl start wg-quick@wg0

После каждого добавления новых клиентов, рекомендуется перегрузить сервис wireguard

$ sudo systemctl restart wg-quick@wg0


На каждом клиентском компьютере нужно установить Wireguard и сгенерировать пару ключей

Ubuntu

Установка аналогично серверной части

$ wg genkey | tee privatekey | wg pubkey > publickey

инициализируем интерфейс ВПН (имя по умолчанию у него wg0)

$ sudo ip link add dev wg0 type wireguard

создаем конфиг клиентской части WireGuard

$ sudo nano /etc/wireguard/wg0.conf
[Interface]
  # IP адрес клиента, можно следующий по порядку

Address = 10.10.10.2/32
  # приватный ключ из файла privatkey
PrivateKey = [CLIENT PRIVATE KEY]

  # свой любимый DNS сервер
DNS = 1.1.1.1
   # описание подключения к серверу
[Peer]

  # публичный ключ сервера - файлик publickey на сервере
PublicKey = [SERVER PUBLICKEY]

   #разрешеные адреса - нам нужны все, чтобы не иметь ограничений в интернете
AllowedIPs = 0.0.0.0/0

  # IP адрес сервера или домена и порт подключения
Endpoint = [SERVER ENDPOINT]:51820

  # параметр нужен для пользования ВПН за NAT
PersistentKeepalive = 25

стартуем

$ sudo systemctl enable wg-quick@wg0

проверим наш IP

$ curl zx2c4.com/ip


Windows

Здесь мне писать немного сложнее, потому что этой операционной системой я не пользуюсь, но вроде не должно возникнуть проблем.Скачиваем клиент под виндовс tunsafe. Достаточно несложный интерфейс - жмем Options => Generate Key Pair => Randomize. В появившемся окне копируем два ключа, один, Private key, пойдет в конфиг (по структуре он точно такой же как и выше для Ubuntu), а второй нужно будет прописать в разделе [Peer] на нашем сервере.
Итак жмем - Edit Config и редактируем в соответствии с нашими настройками:

[Interface]   
  # копируем из окошка с одноименным названием
PrivateKey = [CLIENT PRIVATE KEY]   
  # любимый ДНС сервер
DNS = 1.1.1.1

  # The addresses to bind to. Either IPv4 or IPv6.
  # /31 and /32 are not supported.   
  # в виндовсе возникнет некоторый нюанс - драйвер не поддерживает
  # подсети /31, /32   # смело пилим /24 и все заработает
Address = 10.10.10.2/24
   # описание подключения к серверу
[Peer]   
  # публичный ключ сервера - файлик publickey на сервере
PublicKey = [SERVER PUBLICKEY]

  # разрешенные адреса - нам нужны все, чтобы не иметь ограничений в интернете
AllowedIPs = 0.0.0.0/0
  # IP адрес сервера или домена и порт подключения
Endpoint = [SERVER ENDPOINT]:51820

  # параметр нужен для пользования ВПН за NAT
PersistentKeepalive = 25

Проверить в Windows можно зайдя на сайт например - 2ip.ru, где и будет виден новый IP адрес.

Android

Совсем недавно был выпущен полноценный клиент, и не надо мучатся с прошивками и прочими сложными штуками Wireguard Google Play.

Прочитав предыдущие абзацы, в приложении на андроид, все покажется уже знакомым. Те же секции конфига Interface, Peer.
Ну по пунктам:
Жмем кнопку “+” и выпадающем меню “Create from scratch”
В секции Interface жмем Generate и получаем нашу пару ключей.
Name - любое имя название подключения
Privat key - свежесгенерированный приватный ключ
Public key - копируем и используем в секции Peer на сервере.
Adddresses - 10.10.10.3/32 такое же значение укажите в конфиге сервера
DNS servers - 1.1.1.1 традиционно
Далее кнопка ADD PEERВ этой секции тоже все просто
Public key - публичный ключ сервера
Allowed IPs - 0.0.0.0/0
Endpoint - адрес или домен сервера с портом (xx.xx.xx.xx:xx)
Persistent keepalive - 25
Жмем “сохранить” вверху интерфейса и тестируем подключение.

Рекомендую всем, действительно быстрый ВПН не нагружающий железки, особенно подходит для телефона.
Прошу не пинать за отсутствие графики и картинок, мне кажется полезность информации важнее красоты поста.

441
0.356 GOLOS
На Golos с June 2017
Комментарии (4)
Сортировать по:
Сначала старые