Настройка сервера WireGuard
Мы начнем с установки WireGuard на машину Ubuntu и настроим ее для работы в качестве сервера. Также настроим систему для маршрутизации клиентского трафика через нее.
Установите WireGuard на Ubuntu 20.04
WireGuard доступен из репозиториев Ubuntu по умолчанию. Чтобы установить его, выполните следующие команды:
|
|
Это установит модуль и инструменты WireGuard.
WireGuard работает как модуль ядра.
Настройка WireGuard
Инструменты командной строки wg
и wg-quick
позволяют настраивать интерфейсы WireGuard и управлять ими.
Каждое устройство в сети WireGuard VPN должно иметь закрытый и открытый ключ. Выполните следующую команду, чтобы сгенерировать пару ключей:
|
|
Файлы будут созданы в каталоге /etc/wireguard
. Вы можете просматривать содержимое файлов с помощью cat
или less
. Закрытый ключ никогда не должен передаваться кому-либо и всегда должен храниться в безопасности.
Wireguard также поддерживает предварительный общий ключ, который добавляет дополнительный уровень криптографии с симметричным ключом. Этот ключ не является обязательным и должен быть уникальным для каждой пары одноранговых узлов.
Следующим шагом является настройка туннельного устройства, которое будет маршрутизировать трафик VPN.
Устройство можно настроить либо из командной строки с помощью команд ip
и wg
, либо путем создания файла конфигурации с помощью текстового редактора.
Создайте новый файл с именем wg0.conf
и добавьте следующее содержимое:
|
|
|
|
Интерфейс можно назвать как угодно, однако рекомендуется использовать что-то вроде include wg0
или wgvpn0
. Настройки в разделе интерфейса имеют следующее значение:
Address - разделенный запятыми список 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
, чтобы оно соответствовало имени вашего общедоступного сетевого интерфейса. Вы можете легко найти интерфейс с помощью:
|
|
- PostDown - команда или скрипт, который выполняется перед выключением интерфейса. Правила iptables будут удалены после отключения интерфейса.
Файлы wg0.conf
и privatekey
не должны быть доступны для чтения обычным пользователям. Используйте chmod
, чтобы установить разрешения на 600
:
|
|
После этого запустите интерфейс wg0
, используя атрибуты, указанные в файле конфигурации:
|
|
Команда выдаст следующий результат:
|
|
Чтобы проверить состояние и конфигурацию интерфейса, введите:
|
|
|
|
Вы также можете запустить ip a show wg0
, чтобы проверить состояние интерфейса:
|
|
|
|
WireGuard также можно управлять с помощью Systemd.
Чтобы запустить интерфейс WireGuard во время загрузки, выполните следующую команду:
|
|
Настройка сети сервера и брандмауэра
Для работы NAT необходимо включить переадресацию IP. Откройте файл /etc/sysctl.conf
и добавьте или раскомментируйте следующую строку:
|
|
|
|
Сохраните файл и примените изменения:
|
|
|
|
Если вы используете UFW
для управления брандмауэром, вам необходимо открыть UDP-трафик на порт 51820
:
|
|
Вот и все. Одноранговый узел Ubuntu, который будет действовать как сервер, настроен.
Настройка клиентов Linux и macOS
Инструкции по установке для всех поддерживаемых платформ доступны по адресу https://wireguard.com/install/. В системах Linux вы можете установить пакет с помощью диспетчера пакетов распространения, а в macOS - с помощью brew
.
После установки выполните следующие действия, чтобы настроить клиентское устройство.
Процесс настройки клиента Linux и macOS практически такой же, как и для сервера. Сначала сгенерируйте открытый и закрытый ключи:
|
|
Создайте файл wg0.conf
и добавьте следующее содержимое:
|
|
|
|
Настройки в разделе интерфейса имеют то же значение, что и при настройке сервера:
Address - разделенный запятыми список IP-адресов v4 или v6 для интерфейса
wg0
.PrivateKey - чтобы увидеть содержимое файла на клиентском компьютере, запустите:
sudo cat /etc/wireguard/privatekey
Одноранговый раздел содержит следующие поля:
PublicKey - открытый ключ партнера, к которому вы хотите подключиться. (Содержимое файла сервера
/etc/wireguard/publickey
).Endpoint - IP или имя хоста однорангового узла, к которому вы хотите подключиться, за которым следует двоеточие, а затем номер порта, на котором удаленный одноранговый узел прослушивает.
AllowedIPs - разделенный запятыми список IP-адресов v4 или v6, с которых разрешен входящий трафик для однорангового узла и на которые направляется исходящий трафик для этого однорангового узла. Мы используем 0.0.0.0/0, потому что мы маршрутизируем трафик и хотим, чтобы одноранговый сервер отправлял пакеты с любым исходным IP.
Если вам нужно настроить дополнительных клиентов, просто повторите те же шаги, используя другой частный IP-адрес.
Настройка клиентов Windows
Загрузите и установите пакет Windows msi с веб-сайта WireGuard.
После установки откройте приложение WireGuard и нажмите «Добавить туннель» -> «Добавить пустой туннель…», как показано на изображении ниже:
Пара открытых ключей создается автоматически и отображается на экране.
Введите имя туннеля и отредактируйте конфигурацию следующим образом:
|
|
В разделе интерфейса добавьте новую строку для определения адреса туннеля клиента.
В одноранговом разделе добавьте следующие поля:
PublicKey - открытый ключ сервера Ubuntu (файл /etc/wireguard/publickey).
Endpoint - IP-адрес сервера Ubuntu с двоеточием и порт WireGuard (51820).
AllowedIPs - 0.0.0.0/0
После этого нажмите кнопку «Сохранить».
Добавить однорангового клиента к серверу
Добавить однорангового клиента к серверу
Последний шаг - добавить на сервер открытый ключ и IP-адрес клиента. Для этого запустите на сервере Ubuntu следующую команду:
|
|
Обязательно измените CLIENT_PUBLIC_KEY
на открытый ключ, сгенерированный на клиентском компьютере (sudo cat /etc/wireguard/publickey
), и настройте IP-адрес клиента, если он отличается. Пользователи Windows могут скопировать открытый ключ из приложения WireGuard.
После этого вернитесь на клиентский компьютер и откройте интерфейс туннелирования.
Клиенты Linux и macOS
Выполните следующую команду, чтобы открыть интерфейс:
|
|
Теперь вы должны быть подключены к серверу Ubuntu, и трафик с вашей клиентской машины должен проходить через него. Проверить соединение можно с помощью:
|
|
|
|
Вы также можете открыть свой браузер, ввести «what is my ip», и вы должны увидеть IP-адрес своего сервера Ubuntu.
Чтобы остановить туннелирование, выключите интерфейс wg0
:
|
|
Клиенты Windows
Если вы установили WireGuard в Windows, нажмите кнопку «Активировать». Как только одноранговые узлы подключены, статус туннеля изменится на Активный:
Вывод
Мы показали вам, как установить WireGuard на машину с Ubuntu 20.04 и настроить его как VPN-сервер. Эта настройка позволяет вам просматривать веб-страницы анонимно, сохраняя конфиденциальность ваших данных о трафике.