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

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

Введение

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

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

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

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

Если вы хотите установить WireGuard на удаленный сервер, продолжайте чтение, в противном случае пропустите первый абзац «Подключение к серверу» и читайте следующий.

Подключение к серверу

Чтобы получить доступ к серверу, вам нужно знать IP-адрес. Вам также потребуется ваше имя пользователя и пароль для аутентификации. Чтобы подключиться к серверу как root, введите следующую команду:

ssh root@IP_DEL_SERVER

Далее вам нужно будет ввести пароль пользователя root.

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

ssh nome_utente@IP_DEL_SERVER

Затем вам будет предложено ввести пароль пользователя.

Стандартный порт для подключения по ssh — 22, если ваш сервер использует другой порт, вам нужно будет указать его с помощью параметра -p, затем введите следующую команду:

ssh nome_utente@IP_DEL_SERVER -p PORTA

Предпосылки

Чтобы следовать этому руководству, вам понадобится сервер Ubuntu 20.04 LTS с доступом root или sudo.

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

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

Установите WireGuard на Ubuntu 20.04

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

sudo apt update
sudo apt install wireguard

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

Настроить WireGuard

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

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

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

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

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

Следующим шагом является настройка туннельного устройства, которое будет маршрутизировать трафик 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: порт прослушивания.
  • 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

Чтобы проверить состояние и конфигурацию интерфейса, введите:

sudo wg show wg0
interface: wg0
 public key: DLx+Owg3aAqneY/HfmYPBbpUpNUFGuWGQQO1tT6N9Q0=
 private key: (hidden)
 listening port: 51820

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

ip a show wg0
3: 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 также можно управлять с помощью Systemd.

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

sudo systemctl enable wg-quick@wg0

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

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

sudo nano /etc/sysctl.conf
net.ipv4.ip_forward=1
/etc/sysctl.conf

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

sudo sysctl -p
net.ipv4.ip_forward = 1

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

sudo ufw allow 51820/udp

Это все. Узел Ubuntu, который будет действовать как сервер, настроен.

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

Инструкции по установке для всех поддерживаемых платформ доступны здесь. В системах Linux вы можете установить пакет с помощью диспетчера пакетов дистрибутива, а в macOS — с помощью brew.

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

Процесс настройки клиента 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
/etc/wireguard/wg0.conf

Настройки в разделе интерфейса имеют тот же смысл, что и конфигурация сервера:

  • Адрес: разделенный запятыми список 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-адреса клиента на сервер. Для этого выполните следующую команду на сервере Ubuntu:

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

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

sudo wg-quick up wg0

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

sudo wg
interface: wg0
 public key: gFeK6A16ncnT1FG6fJhOCMPMeY4hZa97cZCNWis7cSo=
 private key: (hidden)
 listening port: 53527
 fwmark: 0xca6c

 peer: r3imyh3MCYggaZACmkx+CxlD6uAmICI8pe/PGq8+qCg=
 endpoint: XXX.XXX.XXX.XXX:51820
 allowed ips: 0.0.0.0/0
 latest handshake: 53 seconds ago
 transfer: 3.23 KiB received, 3.50 KiB sent

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

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

sudo wg-quick down wg0

Windows-клиент

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

Вывод

Мы показали вам, как установить WireGuard на машину с Ubuntu 20.04 LTS Focal Fossa и как настроить ее в качестве 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.