Как настроить WireGuard VPN на CentOS 8

12 set 2022 6 min di lettura
Как настроить WireGuard VPN на CentOS 8
Indice dei contenuti

Введение

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, и брандмауэр, установленный на вашем сервере CentOS 8.

Установить WireGuard

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

Инструменты 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, или создав файл конфигурации с помощью текстового редактора.

Установите текстовый редактор nano, если он еще не установлен:

sudo dnf install nano

Создайте новый файл с именем wg0.conf и добавьте следующее содержимое:

sudo nano /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
/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 — порт, на котором 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: z//Gb63cqmICNZcsja76y9LdSFyBgfVb5JHO3SZyVTo=
 private key: (hidden)
 listening port: 51820

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

ip a show wg0
5: 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

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

sudo systemctl enable wg-quick@wg0

Серверная сеть

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

sudo nano /etc/sysctl.d/99-custom.conf
net.ipv4.ip_forward=1
/etc/sysctl.d/99-custom.conf

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

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
[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-адрес или имя узла узла, к которому вы хотите подключиться, за которым следует двоеточие, а затем номер порта, на котором прослушивается удаленный узел.
  • Разрешенный DPI: разделенный запятыми список 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: qEmVlRE+O/g74NTT6AjkqPEjGkcOQPu9Id7SgcJe/2E=
 private key: (hidden)
 listening port: 51820
 fwmark: 0xca6c

 peer: z//Gb63cqmICNZcsja76y9LdSFyBgfVb5JHO3SZyVTo=
 endpoint: XXX.XXX.XXX.XXX:51820
 allowed ips: 0.0.0.0/0
 latest handshake: 21 seconds ago
 transfer: 123.25 KiB received, 106.68 KiB sent

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

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

sudo wg-quick down wg0

Windows-клиент

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

Вывод

Мы показали вам, как установить WireGuard на компьютер с CentOS 8 и настроить его в качестве 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.