
WireGuard — это простая и современная VPN (виртуальная частная сеть) с передовой криптографией. Она быстрее, проще в настройке и производительнее других аналогичных решений, таких как IPsec и OpenVPN .
WireGuard кроссплатформенный и может работать практически везде, включая Linux, Windows, Android и macOS. Wireguard — это одноранговый VPN-сервис, не основанный на клиент-серверной модели. В зависимости от конфигурации, одноранговый узел может выступать в роли традиционного сервера или клиента.
WireGuard работает, создавая сетевой интерфейс на каждом одноранговом устройстве, который работает как туннель. Одноранговые устройства аутентифицируют друг друга, обмениваясь и проверяя открытые ключи, имитируя модель SSH. Открытые ключи сопоставляются со списком IP-адресов, разрешённых в туннеле. VPN-трафик инкапсулируется в UDP.
В этом руководстве описывается настройка WireGuard на компьютере с CentOS 8, который будет работать как VPN-сервер. Мы также покажем, как настроить WireGuard в качестве клиента. Трафик клиента будет направляться через сервер CentOS 8. Эту настройку можно использовать для защиты от атак типа «Человек посередине», анонимного просмотра веб-страниц, обхода гео-ограничений или предоставления вашим коллегам, работающим из дома, безопасного подключения к корпоративной сети.
Предпосылки
Вам понадобится сервер CentOS 8, к которому вы можете получить доступ как пользователь root или как учетная запись с привилегиями sudo .
Настройка сервера WireGuard
Начнём с установки WireGuard на машину с CentOS и настройки его в качестве сервера. Также мы настроим систему для маршрутизации клиентского трафика через него.
Установка WireGuard на CentOS 8
Инструменты WireGuard и модуль ядра доступны для установки из репозиториев Epel и Elrepo. Чтобы добавить репозитории в систему, выполните следующую команду:
sudo dnf install epel-release elrepo-release
После этого установите пакеты WireGuard:
sudo dnf install kmod-wireguard wireguard-tools
Вам может быть предложено импортировать ключи GPG репозиториев. Введите y при появлении запроса.
Настройка WireGuard
Пакет wireguard-tools включает два инструмента командной строки с именами wg и wg-quick , которые позволяют настраивать и управлять интерфейсами WireGuard.
Конфигурацию VPN-сервера мы сохраним в каталоге /etc/wireguard . В CentOS этот каталог не создаётся во время установки. Выполните следующую команду, чтобы создать его :
sudo mkdir /etc/wireguard
Сгенерируйте открытый и закрытый ключи в каталоге /etc/wireguard .
wg genkey | sudo tee /etc/wireguard/privatekey | wg pubkey | sudo tee /etc/wireguard/publickey
Вы можете просмотреть файлы с помощью 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 = firewall-cmd --zone=public --add-port 51820/udp && firewall-cmd --zone=public --add-masquerade PostDown = firewall-cmd --zone=public --remove-port 51820/udp && firewall-cmd --zone=public --remove-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 — команда или скрипт, выполняемый перед активацией интерфейса. В этом примере мы используем
firewall-cmdдля открытия порта WireGuard и включения маскарадинга. Это позволит трафику выходить за пределы сервера, предоставляя VPN-клиентам доступ в Интернет. -
PostDown — команда или скрипт, выполняемый перед отключением интерфейса. Правила брандмауэра будут удалены после отключения интерфейса.
Файлы 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: My3uqg8LL9S3XZBo8alclOjiNkp+T6GfxS+Xhn5a40I= private key: (hidden) listening port: 51820
Вы также можете использовать команду ip для проверки состояния интерфейса:
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
Чтобы включить интерфейс wg0 во время загрузки, выполните следующую команду:
sudo systemctl enable wg-quick@wg0
Серверная сеть
Для работы NAT необходимо включить переадресацию IP-адресов. Создайте новый файл /etc/sysctl.d/99-custom.conf и добавьте в него следующую строку:
sudo nano /etc/sysctl.d/99-custom.conf
/etc/sysctl.d/99-custom.conf
net.ipv4.ip_forward = 1
Сохраните файл и примените изменения с помощью sysctl :
sudo sysctl -p /etc/sysctl.d/99-custom.conf
net.ipv4.ip_forward = 1
Вот и всё. CentOS-узел, который будет выступать в роли сервера, настроен.
Настройка клиентов 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 и нажмите «Добавить туннель» -> «Добавить пустой туннель…», как показано на изображении ниже:

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

Введите имя туннеля и отредактируйте конфигурацию следующим образом:
[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 — открытый ключ сервера CentOS (файл
/etc/wireguard/publickey). - Конечная точка — IP-адрес сервера CentOS, за которым следует двоеточие и порт 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
Теперь вы должны быть подключены к серверу CentOS, и трафик с вашего клиентского компьютера должен проходить через него. Вы можете проверить соединение с помощью:
sudo wg
interface: wg0 public key: sZThYo/0oECwzUsIKTa6LYXLhk+Jb/nqK4kCCP2pyFg= private key: (hidden) listening port: 60351 fwmark: 0xca6c peer: My3uqg8LL9S3XZBo8alclOjiNkp+T6GfxS+Xhn5a40I= endpoint: XXX.XXX.XXX.XXX:51820 allowed ips: 0.0.0.0/0 latest handshake: 41 seconds ago transfer: 213.25 KiB received, 106.68 KiB sent
Вы также можете открыть браузер, ввести «какой у меня IP-адрес», и вы увидите IP-адрес вашего сервера CentOS.
Чтобы остановить туннелирование, отключите интерфейс wg0 :
sudo wg-quick down wg0
Клиенты Windows
Если вы установили WireGuard в Windows, нажмите кнопку «Активировать». После подключения пиров статус туннеля изменится на «Активен»:

Заключение
Мы показали вам, как установить WireGuard на компьютер с CentOS 8 и настроить его в качестве VPN-сервера. Такая настройка позволяет вам анонимно пользоваться интернетом, сохраняя конфиденциальность данных о вашем трафике.
Если у вас возникли какие-либо проблемы, не стесняйтесь оставлять комментарии.
безопасность vpn centos Не используете CentOS 8?
Выберите другую ОС: дебиан 10 убунту 18.04 убунту 20.04
Связанные руководства