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

Установить WireGuard в 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 входит в стандартные репозитории Ubuntu. Чтобы установить его, выполните следующие команды:

 sudo apt update 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

Файлы будут созданы в каталоге /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

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

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

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

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

WireGuard Windows добавить туннель

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

WireGuard Windows Tunnel

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

 [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

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

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

 sudo wg-quick down wg0

Клиенты Windows

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

WireGuard Windows Connect Tunnel

Заключение

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

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

Безопасность VPN в Ubuntu Не используете Ubuntu 18.04?
Выберите другую ОС:
центос 8 дебиан 10 убунту 20.04

Связанные руководства

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *