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

12 set 2022 6 min di lettura
Как установить и настроить WireGuard VPN в Ubuntu 18.04
Indice dei contenuti

Введение

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

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

sudo apt install linux-headers-$(uname -r)

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

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

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

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

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

sudo nano /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
/etc/wireguard/wg0.conf

Интерфейс может называться как угодно, однако рекомендуется использовать что-то вроде 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

Запустите 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
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
[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.

Раздел Peer содержит следующие поля:

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

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

Установите клиент для Windows

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

После установки откройте приложение WireGuard и нажмите «Добавить туннель» -> «Добавить пустой туннель…».

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

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

[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

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

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

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

После этого нажмите кнопку «Сохранить».

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

Последним шагом является добавление открытого ключа и 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

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

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

sudo wg-quick down wg0

Windows-клиент

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

Вывод

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

Buy me a coffeeBuy me a coffee

Supportaci se ti piacciono i nostri contenuti. Grazie.

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.