Поиск по сайту:

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


Это руководство существует для этих версий ОС

  • Ubuntu 22.04 (Jammy Jellyfish)
  • Ubuntu 20.04 (Focal Fossa)

На этой странице

  1. Предпосылки
  2. Начало работы
  3. Установите VPN-сервер WireGuard
  4. Настройка сервера WireGuard
  5. Включить IP-переадресацию
  6. Установка и настройка клиента WireGuard
  7. Заключение

WireGuard — это виртуальная частная сеть с открытым исходным кодом и ориентированная на безопасность, разработанная для простоты и удобства использования. Он поддерживает различные операционные системы, включая Linux, macOS, Windows, BSD и Android. Это простая и универсальная VPN, которую можно легко развернуть на небольших устройствах и на высокопроизводительных серверах. Это точка-точка VPN-сервера, а не модель клиент-сервер. Он использует механизм обмена открытыми ключами для аутентификации клиента.

Если вы ищете легкий и быстрый VPN, то WireGuard VPN — лучший выбор для вас. В этом руководстве мы покажем вам, как установить сервер и клиент WireGuard VPN на Ubuntu 20.04.

Предпосылки

  • Два сервера с сервером Ubuntu 20.04.
  • На обоих серверах настроен пароль root.

Начиная

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

apt-get update -y

Как только все пакеты будут обновлены, вам нужно будет установить Iptables в вашей системе. Вы можете установить его с помощью следующей команды:

apt-get install iptables -y

После завершения установки можно переходить к следующему шагу.

Установите WireGuard VPN-сервер

По умолчанию пакет WireGuard доступен в репозитории по умолчанию Ubuntu 20.04. Вы можете установить его, выполнив следующую команду:

apt-get install wireguard -y

После установки пакета WireGuard вы можете перейти к следующему шагу.

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

WireGuard работает путем обмена открытыми ключами между каждым устройством в сети WireGuard. Поэтому вам нужно будет создать открытый и закрытый ключ на сервере.

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

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

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

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

ls /etc/wireguard

Вы должны увидеть следующий вывод:

privatekey  publickey

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

cat /etc/wireguard/privatekey

Вы должны увидеть следующий вывод:

4M1l65NIaoR2+fQ6xVnIdwj6iVjsSPDkEMuzVnbFh3A=

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

cat /etc/wireguard/publickey

Вы должны увидеть следующий вывод:

00Jsbppv/gVMy6oHMfFZ+T/eEFBAWVbiZo33HjQBSU4=

Далее вам нужно будет создать сетевой интерфейс для WireGuard. Вы можете создать его с помощью следующей команды:

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 eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

Сохраните и закройте файл, когда закончите.

Где:

  • Адрес: частный IP-адрес для интерфейса wg0.
  • ListenPort: укажите порт прослушивания WireGuard.
  • PrivateKey: закрытый ключ, хранящийся в файле /etc/wireguard/privatekey.
  • PostUp: укажите команду, которая разрешает трафику покидать сервер и предоставляет клиентам VPN доступ к Интернету. Также замените eth0 на имя вашего сетевого интерфейса.

Затем установите правильное разрешение для закрытого ключа и файла wg0.

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

Затем включите интерфейс wg0, выполнив следующую команду:

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

Вы также можете запустить службу WireGuard с помощью systemd, как показано ниже:

systemctl start 

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

systemctl enable 

Затем проверьте состояние службы WireGuard с помощью следующей команды:

systemctl status 

Вы должны получить следующий результат:

?  - WireGuard via wg-quick(8) for wg0
     Loaded: loaded (/lib/systemd/system/; disabled; vendor preset: enabled)
     Active: active (exited) since Thu 2020-12-10 11:42:14 UTC; 7s ago
       Docs: man:wg-quick(8)
             man:wg(8)
             https://www.wireguard.com/
             https://www.wireguard.com/quickstart/
             https://git.zx2c4.com/wireguard-tools/about/src/man/wg-quick.8
             https://git.zx2c4.com/wireguard-tools/about/src/man/wg.8
    Process: 2173 ExecStart=/usr/bin/wg-quick up wg0 (code=exited, status=0/SUCCESS)
   Main PID: 2173 (code=exited, status=0/SUCCESS)

Dec 10 11:42:14 ubunt4 systemd[1]: Starting WireGuard via wg-quick(8) for wg0...
Dec 10 11:42:14 ubunt4 wg-quick[2173]: [#] ip link add wg0 type wireguard
Dec 10 11:42:14 ubunt4 wg-quick[2173]: [#] wg setconf wg0 /dev/fd/63
Dec 10 11:42:14 ubunt4 wg-quick[2173]: [#] ip -4 address add 10.0.0.1/24 dev wg0
Dec 10 11:42:14 ubunt4 wg-quick[2173]: [#] ip link set mtu 1420 up dev wg0
Dec 10 11:42:14 ubunt4 wg-quick[2173]: [#] iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Dec 10 11:42:14 ubunt4 systemd[1]: Finished WireGuard via wg-quick(8) for wg0.

Вы также можете проверить состояние интерфейса wg0 с помощью следующей команды:

wg show wg0

Вы должны получить следующий результат:

interface: wg0
  public key: 00Jsbppv/gVMy6oHMfFZ+T/eEFBAWVbiZo33HjQBSU4=
  private key: (hidden)
  listening port: 51820

Вы можете получить статус IP-адреса интерфейса wg0 с помощью следующей команды:

ip a show wg0

Вы должны получить следующий результат:

13: 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

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

Включить IP-переадресацию

Затем вам нужно будет включить переадресацию IP-адресов на вашем сервере для маршрутизации пакетов между VPN-клиентами и Интернетом. Вы можете включить его, отредактировав файл /etc/sysctl.conf:

nano /etc/sysctl.conf

Измените следующую строку:

net.ipv4.ip_forward=1

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

sysctl -p

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

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

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

apt-get install wireguard -y

После установки пакета WireGuard создайте закрытый и открытый ключи с помощью следующей команды:

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

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

Вы можете создать его с помощью следующей команды:

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-адрес для интерфейса wg0.
  • PrivateKey: укажите закрытый ключ на клиентском компьютере.
  • PublicKey: укажите открытый ключ на сервере.
  • Конечная точка: укажите IP-адрес сервера.
  • AllowedIPs: укажите список разрешенных IP-адресов.

Далее вам нужно будет добавить открытый ключ клиента и IP-адрес на серверной машине.

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

wg set wg0 peer client-public-key allowed-ips 10.0.0.2

Далее вам нужно будет запустить интерфейс wg0 на клиентской машине.

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

wg-quick up wg0

Вы должны получить следующий результат:

[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 10.0.0.2/24 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] wg set wg0 fwmark 51820

На этом этапе ваш клиентский компьютер подключен к серверу WireGuard VPN. Вы можете проверить статус подключения с помощью следующей команды:

wg

Вы должны получить следующий результат:

interface: wg0
  public key: 3FXBDpAO4Vado1tDjLtVQt+JnOCa+W2piLeFYQ8KyB4=
  private key: (hidden)
  listening port: 38830
  fwmark: 0xca6c

peer: 00Jsbppv/gVMy6oHMfFZ+T/eEFBAWVbiZo33HjQBSU4=
  endpoint: 69.87.216.36:51820
  allowed ips: 0.0.0.0/0
  latest handshake: 41 seconds ago
  transfer: 5.27 KiB received, 12.97 KiB sent

Заключение

Поздравляем! вы успешно установили и настроили сервер и клиент WireGuard VPN на сервере Ubuntu 20.04. Теперь трафик с вашего клиентского компьютера должен направляться через ваш серверный компьютер. Теперь вы можете выходить в Интернет анонимно и хранить свои данные в тайне. Ознакомьтесь с нашим руководством по командам Linux tee.