Поиск по сайту:
Ничто так не поощряет праздность, как пустые разговоры (Л. Толстой).

Как настроить WireGuard VPN на Ubuntu 18.04

21.04.2020
Как настроить WireGuard VPN на Ubuntu 18.04

WireGuard – это современная технология виртуальной частной сети VPN с современной криптографией. По сравнению с другими аналогичными решениями, такими как IPsec и OpenVPN, WireGuard быстрее, проще в настройке и более производительным. Он кроссплатформенный и может работать практически везде, включая Linux, Windows, Android и macOS. Wireguard – это одноранговая VPN; он не использует модель клиент-сервер. В зависимости от конфигурации одноранговый узел может действовать как традиционный сервер или клиент.

WireGuard работает путем создания сетевого интерфейса на каждом одноранговом устройстве, которое действует как туннель. Узлы аутентифицируют друг друга, обмениваясь и проверяя открытые ключи, имитируя модель SSH. Открытые ключи отображаются со списком IP-адресов, которые разрешены в туннеле. VPN-трафик инкапсулируется в UDP.

В этой статье мы настроим WireGuard на машине с Ubuntu 18.04, которая будет действовать как VPN-сервер. Мы также покажем вам, как настроить WireGuard в качестве клиента. Трафик клиента будет маршрутизироваться через сервер Ubuntu 18.04.

Эту настройку можно использовать в качестве защиты от атак типа «человек посередине», анонимного просмотра веб-сайтов, обхода контента, ограниченного гео-пространством, или предоставления вашим коллегам безопасного подключения к сети компании при удаленной работе.

 

Предпосылки

Вам понадобится сервер Ubuntu 18.04, к которому вы можете получить доступ от имени root или учетной записи с привилегиями sudo.

 

Настройка сервера WireGuard

В этом разделе мы установим WireGuard на компьютер с Ubuntu и настроим его для работы в качестве сервера. Мы также настроим систему для маршрутизации трафика клиентов через нее.

 

Установка WireGuard в Ubuntu 18.04

WireGuard поддерживает свой собственный репозиторий APT, из которого мы будем устанавливать пакет и обновлять его при появлении новой версии.

Обновите список пакетов и установите инструменты, необходимые для управления системными репозиториями. Скорее всего, у вас уже есть пакет на вашем компьютере:

sudo apt update
sudo apt install software-properties-common

 

Добавьте репозиторий WireGuard:

sudo add-apt-repository ppa:wireguard/wireguard

 

При появлении запроса нажмите Enter, чтобы продолжить. add-apt-repository также автоматически обновит список пакетов.

Установите пакет WireGuard:

sudo apt install wireguard

 

WireGuard работает как модуль ядра, который скомпилирован как модуль DKMS. В случае успеха вы увидите следующий вывод:

wireguard:
Running module version sanity check.
 - Original module
   - No original module exists within this kernel
 - Installation
   - Installing to /lib/modules/4.15.0-88-generic/updates/dkms/

depmod...

DKMS: install completed.

 

При обновлении ядра модуль WireGuard будет скомпилирован с новым ядром.

 

Настройка WireGuard

WireGuard поставляется с двумя инструментами командной строки с именем wg и wg-quick, которые позволяют вам настраивать и управлять интерфейсами WireGuard.

Выполните следующую команду, чтобы сгенерировать открытый и закрытый ключи:

wg genkey | sudo tee /etc/wireguard/privatekey | wg pubkey | sudo tee /etc/wireguard/publickey

 

Читать  Как установить VPN-сервер и клиент Wireguard на компьютер с Debian Linux

Файлы будут сгенерированы в каталоге /etc/wireguard. Вы можете просматривать файлы с помощью cat или less. Закрытый ключ никогда не должен передаваться никому.

Теперь, когда ключи сгенерированы, нам нужно настроить туннельное устройство, которое будет маршрутизировать трафик VPN.

Устройство можно настроить либо из командной строки с помощью ip и wg, либо путем создания файла конфигурации с помощью текстового редактора.

Создайте новый файл с именем wg0.conf и добавьте следующее содержимое:

sudo nano /etc/wireguard/wg0.conf
/etc/wireguard/wg0.conf
[Interface]
Address = 10.0.0.1/24
SaveConfig = true
ListenPort = 51820
PrivateKey = SERVER_PRIVATE_KEY
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o ens3 -j MASQUERADE

Интерфейс может быть назван как угодно, однако рекомендуется использовать что-то вроде include wg0 или wgvpn0. Настройки в разделе интерфейса имеют следующее значение:

  • Адрес – разделенный запятыми список IP-адресов v4 или v6 для интерфейса wg0. Используйте IP-адреса из диапазона, зарезервированного для частных сетей (10.0.0.0/8, 172.16.0.0/12 или 192.168.0.0/16).
  • ListenPort – порт, на который WireGuard будет принимать входящие соединения.
  • PrivateKey – закрытый ключ, сгенерированный командой wg genkey. (Чтобы увидеть содержимое файла запуска: sudo cat /etc/wireguard/privatekey)
  • SaveConfig – при значении true текущее состояние интерфейса сохраняется в файле конфигурации при завершении работы.
  • PostUp – команда или скрипт, который выполняется до запуска интерфейса. В этом примере мы используем iptables для включения маскировки. Это позволит трафику покинуть сервер, предоставив VPN-клиентам доступ в Интернет.Обязательно замените ens3 после -A POSTROUTING, чтобы соответствовать имени вашего общедоступного сетевого интерфейса. Вы можете легко найти интерфейс, выполнив следующую команду:
    ip -o -4 route show to default | awk '{print $5}'
  • PostDown – команда или сценарий, который выполняется перед выключением интерфейса. Правила iptables будут удалены после отключения интерфейса.

Файлы wg0.conf и privatekey не должны быть доступны для чтения для обычных пользователей. Используйте chmod для установки разрешений 600:

sudo chmod 600 /etc/wireguard/{privatekey,wg0.conf}

 

Когда закончите, приведите wg0 интерфейс в действие, используя атрибуты, указанные в файле конфигурации:

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 ens3 -j MASQUERADE

 

Читать  Как отключить брандмауэр в Kali Linux?

Запустите wg show wg0 для проверки состояния интерфейса и конфигурации:

sudo wg show wg0

 

interface: wg0
  public key: r3imyh3MCYggaZACmkx+CxlD6uAmICI8pe/PGq8+qCg=
  private key: (hidden)
  listening port: 51820

 

Вы также можете запустить, ip a show wg0 чтобы проверить состояние интерфейса:

ip a show wg0

 

4: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
    link/none 
    inet 10.0.0.1/24 scope global wg0
       valid_lft forever preferred_lft forever

 

Чтобы вывести интерфейс WireGuard во время загрузки, выполните следующую команду:

sudo systemctl enable wg-quick@wg0

 

Сеть сервера и настройка брандмауэра

Чтобы NAT работал, нам нужно включить IP-пересылку. Откройте файл /etc/sysctl.conf и добавьте или раскомментируйте следующую строку:

sudo nano /etc/sysctl.conf
/etc/sysctl.conf

 

net.ipv4.ip_forward=1

Сохраните файл и примените изменения:

sudo sysctl -p

 

net.ipv4.ip_forward = 1

 

Если вы используете UFW для управления брандмауэром, вам нужно открыть UDP-трафик через порт 51820:

sudo ufw allow 51820/udp

 

Вот и все. Пир Ubuntu, который будет действовать как сервер, был настроен.

 

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

Инструкции по установке для всех поддерживаемых платформ доступны по адресу https://wireguard.com/install/. В системах Linux вы можете установить пакет с помощью менеджера дистрибутива и в MacOS с помощью brew. После установки WireGuard выполните следующие действия, чтобы настроить клиентское устройство.

Процесс настройки клиента Linux и macOS практически такой же, как и для сервера. Начните с создания открытого и закрытого ключей:

wg genkey | sudo tee /etc/wireguard/privatekey | wg pubkey | sudo tee /etc/wireguard/publickey

 

Создайте файл wg0.conf и добавьте следующее содержимое:

sudo nano /etc/wireguard/wg0.conf

 

/etc/wireguard/wg0.conf

 

[Interface]
PrivateKey = CLIENT_PRIVATE_KEY
Address = 10.0.0.2/24


[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = SERVER_IP_ADDRESS:51820
AllowedIPs = 0.0.0.0/0

Настройки в разделе интерфейса имеют то же значение, что и при настройке сервера:

  • Адрес – разделенный запятыми список IP-адресов v4 или v6 для интерфейса wg0.
  • PrivateKey – Чтобы увидеть содержимое файла на клиентском компьютере, выполните: sudo cat /etc/wireguard/privatekey

Одноранговый раздел содержит следующие поля:

  • PublicKey – открытый ключ партнера, к которому вы хотите подключиться. (Содержимое файла сервера /etc/wireguard/publickey).
  • Конечная точка – IP-адрес или имя хоста узла, к которому вы хотите подключиться, за которым следует двоеточие, а затем номер порта, который прослушивает удаленный узел.
  • AllowedIPs – разделенный запятыми список IP-адресов v4 или v6, с которых разрешен входящий трафик для узла и на который направляется исходящий трафик для этого узла. Мы используем 0.0.0.0/0, потому что мы маршрутизируем трафик и хотим, чтобы одноранговый сервер отправлял пакеты с любым исходным IP.

Если вам нужно настроить дополнительные клиенты, просто повторите те же шаги, используя другой частный IP-адрес.

Читать  NID против HID. Цель, основные функции и преимущества

 

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

Загрузите и установите MSI-пакет Windows с веб-сайта WireGuard .

После установки откройте приложение WireGuard и нажмите “Add Tunnel” -> “Add empty tunnel…”, как показано на рисунке ниже:

Как настроить WireGuard VPN на Ubuntu 18.04

 

Пара открытых ключей автоматически создается и отображается на экране.

Как настроить WireGuard VPN на Ubuntu 18.04

 

Введите имя для туннеля и отредактируйте конфигурацию следующим образом:

[Interface]
PrivateKey = CLIENT_PRIVATE_KEY
Address = 10.0.0.2/24


[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = SERVER_IP_ADDRESS:51820
AllowedIPs = 0.0.0.0/0

В разделе интерфейса добавьте новую строку, чтобы определить адрес туннеля клиента.

В разделе peer добавьте следующие поля:

  • PublicKey – открытый ключ сервера Ubuntu (файл /etc/wireguard/publickey).
  • Конечная точка – IP-адрес сервера Ubuntu, за которым следует двоеточие, и порт WireGuard (51820).
  • AllowedIPs – 0.0.0.0/0

После этого нажмите кнопку «Save».

 

Добавьте клиентский узел на сервер

Последний шаг – добавить открытый ключ и IP-адрес клиента на сервер:

sudo wg set wg0 peer CLIENT_PUBLIC_KEY allowed-ips 10.0.0.2

 

Убедитесь, что вы изменили открытый ключ CLIENT_PUBLIC_KEY, сгенерированный на клиентском компьютере ( sudo cat /etc/wireguard/publickey), и измените IP-адрес клиента, если он другой. Пользователи Windows могут скопировать открытый ключ из приложения WireGuard.

После этого вернитесь на клиентский компьютер и откройте туннельный интерфейс.

 

Клиенты Linux и MacOS

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

sudo wg-quick up wg0

 

Теперь вы должны быть подключены к серверу Ubuntu, и трафик с вашего клиентского компьютера должен направляться через него. Вы можете проверить соединение с:

sudo wg
interface: wg0
  public key: sZThYo/0oECwzUsIKTa6LYXLhk+Jb/nqK4kCCP2pyFg=
  private key: (hidden)
  listening port: 48052
  fwmark: 0xca6c

peer: r3imyh3MCYggaZACmkx+CxlD6uAmICI8pe/PGq8+qCg=
  endpoint: XXX.XXX.XXX.XXX:51820
  allowed ips: 0.0.0.0/0
  latest handshake: 1 minute, 22 seconds ago
  transfer: 58.43 KiB received, 70.82 KiB sent

 

Вы также можете открыть свой браузер, ввести «что такое мой ip», и вы увидите IP-адрес вашего сервера Ubuntu.

Чтобы остановить туннелирование, отключите интерфейс wg0:

sudo wg-quick down wg0

 

Клиенты Windows

Если вы установили WireGuard в Windows, нажмите кнопку «Activate». Как только узлы подключены, статус туннеля изменится на Активный:

Как настроить WireGuard VPN на Ubuntu 18.04

 

Заключение

Мы показали вам, как установить WireGuard на компьютер с Ubuntu 18.04 и настроить его как VPN-сервер. Эта настройка позволяет вам просматривать веб-страницы анонимно, сохраняя конфиденциальность ваших данных о трафике.

Если вы столкнулись с какой-либо проблемой, не стесняйтесь оставлять комментарии.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (3 оценок, среднее: 5,00 из 5)
Загрузка...
Поделиться в соц. сетях:


0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

3 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
роман

входящий трафик не идет, только исходящий

роман

Привет у меня 3 сервера, так получилось, ищу который пошустрее как впн. Вчера ночью один сервер получилось настроить wireguard, а сейчас со вторым не могу повторить, постоянно нет входящего трафика, голову уже сломал. Подскажите где копать

ds

$ sudo add-apt-repository ppa:wireguard/wireguard
Cannot add PPA: ‘ppa:~wireguard/ubuntu/wireguard’.
The team named ‘~wireguard’ has no PPA named ‘ubuntu/wireguard’

Это может быть вам интересно


Рекомендуемое
Уровень 2: совместное и параллельное программирование Дни одноядерных процессоров давно…

Спасибо!

Теперь редакторы в курсе.