Как настроить WireGuard VPN в Ubuntu 20.04
Это руководство существует для этих версий ОС
- Ubuntu 22.04 (Jammy Jellyfish)
- Ubuntu 20.04 (Focal Fossa)
На этой странице
- Предпосылки
- Начало работы
- Установите VPN-сервер WireGuard
- Настройка сервера WireGuard
- Включить IP-переадресацию
- Установка и настройка клиента WireGuard
- Заключение
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.