WireGuard - это VPN общего назначения (виртуальная частная сеть), в которой используется современная криптография. По сравнению с другими популярными решениями VPN, такими как IPsec и OpenVPN, WireGuard, как правило, быстрее, проще в настройке и занимает меньше места. Он кроссплатформенный и может работать практически где угодно, включая Linux, Windows, Android и macOS.
Wireguard - это одноранговая VPN; не использует модель клиент-сервер. В зависимости от конфигурации одноранговый узел может выступать в роли традиционного сервера или клиента. Он работает путем создания сетевого интерфейса на каждом одноранговом устройстве, которое действует как туннель. Одноранговые узлы аутентифицируют друг друга, обмениваясь и проверяя открытые ключи, имитируя модель SSH. Открытые ключи сопоставляются со списком IP-адресов, разрешенных в туннеле. Трафик VPN инкапсулируется в UDP.
В этой статье объясняется, как установить и настроить WireGuard в Debian 10, который будет действовать как VPN-сервер. Мы также покажем вам, как настроить WireGuard в качестве клиента в Linux, Windows и macOS. Клиентский трафик будет маршрутизироваться через сервер Debian 10.
Эту настройку можно использовать в качестве защиты от атак Man in the Middle, анонимного просмотра веб-страниц, обхода контента с географическим ограничением или для обеспечения безопасного подключения ваших коллег, работающих из дома, к сети компании.
Предпосылки #
Чтобы следовать этому руководству, вам понадобится машина с установленным Debian 10. Вам также понадобится root или [sudo access] (https: // linuxize.com / post / how-to-create-a-sudo-user-on-debian / для установки пакетов и внесения изменений в систему.
Настройка сервера WireGuard #
Мы начнем с установки пакета WireGuard на машину Debian и настроим его для работы в качестве сервера. Также настроим систему для маршрутизации клиентского трафика через нее.
Установите WireGuard на Debian 10 #
WireGuard доступен из репозиториев Debian backports. Чтобы добавить репозиторий в вашу систему, запустите:
echo 'deb http: // ftp.дебиан.org / debian buster-backports main '| sudo tee / etc / apt / sources.список.d / buster-backports.список
После включения репозитория обновите кеш apt и установите модуль и инструменты WireGuard:
WireGuard работает как модуль ядра.sudo apt update
sudo apt установить Wireguard
Настройка WireGuard #
Вы можете настраивать интерфейсы WireGuard и управлять ими с помощью wg
а также wg-quick
инструменты командной строки.
Каждое устройство в сети WireGuard VPN должно иметь закрытый и открытый ключ. Выполните следующую команду, чтобы сгенерировать пару ключей:
wg genkey | sudo tee / etc / wireguard / privatekey | wg pubkey | Судо тройник / и т. д. / Wireguard / publickey
Файлы создаются в / etc / Wireguard
каталог. Использовать Кот
или же меньше
команды для просмотра содержимого файлов. Закрытый ключ никогда не должен передаваться никому и всегда должен храниться в безопасности.
Wireguard также поддерживает предварительный общий ключ, который добавляет дополнительный уровень криптографии с симметричным ключом. Этот ключ не является обязательным и должен быть уникальным для каждой пары одноранговых узлов.
Следующим шагом является настройка туннельного устройства, которое будет маршрутизировать трафик VPN.
Настроить устройство можно либо из командной строки с помощью ip
а также wg
команды, или вручную создав файл конфигурации. Создадим конфигурацию с помощью текстового редактора.
Откройте ваш редактор и создайте новый файл с именем wg0.conf
со следующим содержанием:
Судо нано / и т. д. / Wireguard / wg0.conf
/ и т. д. / Wireguard / wg0.conf[Интерфейс] Адрес = 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 ПОСТРОУТИРОВАНИЕ -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 - порт прослушивания.
PrivateKey - закрытый ключ, сгенерированный
wg genkey
команда. (Чтобы увидеть содержимое типа файла:sudo cat / etc / wireguard / privatekey
)SaveConfig - при значении true текущее состояние интерфейса сохраняется в файле конфигурации при завершении работы.
PostUp - команда или сценарий, который выполняется перед запуском интерфейса. В этом примере мы используем iptables для включения маскарадинга. Это позволяет трафику покидать сервер, предоставляя VPN-клиентам доступ в Интернет.
Обязательно замените
Ens3
после-ПОСТРОУТИРОВАНИЕ
чтобы соответствовать имени вашего публичного сетевого интерфейса. Вы можете легко найти интерфейс с помощью:ip -o -4 route show to default | awk 'print $ 5'
PostDown - команда или сценарий, который выполняется перед отключением интерфейса. Правила iptables будут удалены, как только интерфейс выйдет из строя.
В wg0.conf
а также личный ключ
файлы не должны быть доступны для чтения обычным пользователям. Использовать chmod
чтобы установить права доступа к файлам 600
:
sudo chmod 600 / etc / wireguard / privatekey, wg0.conf
После этого принесите wg0
интерфейс с использованием атрибутов, указанных в файле конфигурации:
Судо WG-Quick Up WG0
Результат будет выглядеть примерно так:
[#] ip link добавить 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 ПОСТРОУТИРОВАНИЕ -o ens3 -j MASQUERADE
Чтобы проверить состояние и конфигурацию интерфейса, запустите:
sudo wg показать wg0
интерфейс: открытый ключ wg0: + Vpyku + gjVJuXGR / OXXt6cmBKPdc06Qnm3hpRhMBtxs = закрытый ключ: (скрытый) порт прослушивания: 51820
Вы также можете проверить состояние интерфейса с помощью ip a шоу wg0
:
ip а шоу wg0
4: wg0: mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000 link / none inet 10.0.0.1/24 область глобальных wg0 valid_lft навсегда предпочтительный_lft навсегда
WireGuard можно управлять с помощью Systemd. Чтобы запустить интерфейс WireGuard во время загрузки, выполните следующую команду:
sudo systemctl включить wg-quick @ wg0
Серверная сеть и конфигурация брандмауэра #
Для работы NAT должна быть включена переадресация IP. Открой / и т.д. / sysctl.conf
файл и добавьте или раскомментируйте следующую строку:
судо нано / и т.д. / sysctl.conf
/ и т.д. / sysctl.confсеть.ipv4.ip_forward = 1
Сохраните файл и примените изменения:
sudo sysctl -p
сеть.ipv4.ip_forward = 1
Если вы используете UFW для управления брандмауэром, вам необходимо открыть UDP-трафик на порту 51820
:
sudo ufw разрешить 51820 / udp
это оно. Одноранговый узел Debian, который будет действовать как сервер, настроен.
Настройка клиентов Linux и macOS #
Инструкции по установке для всех поддерживаемых платформ доступны по адресу https: // wireguard.com / install / . В системах Linux вы можете установить пакет с помощью диспетчера пакетов распространения, а в macOS - с помощью заваривать
.
После установки выполните следующие действия, чтобы настроить клиентское устройство.
Процесс настройки клиента Linux и macOS практически такой же, как и для сервера. Сначала сгенерируйте открытый и закрытый ключи:
wg genkey | sudo tee / etc / wireguard / privatekey | wg pubkey | Судо тройник / и т. д. / Wireguard / publickey
Создайте файл wg0.conf
и добавьте следующее содержимое:
Судо нано / и т. д. / Wireguard / wg0.conf
/ и т. д. / Wireguard / wg0.conf[Интерфейс] 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 - открытый ключ однорангового узла, к которому вы хотите подключиться. (Содержимое сервера
/ и т. д. / Wireguard / publickey
файл). - Конечная точка - IP или имя хоста однорангового узла, к которому вы хотите подключиться, за которым следует двоеточие, а затем номер порта, на котором удаленный одноранговый узел слушает.
- AllowedIPs - разделенный запятыми список IP-адресов v4 или v6, с которых разрешен входящий трафик для однорангового узла и на которые направляется исходящий трафик для этого однорангового узла. Мы используем 0.0.0.0/0, потому что мы маршрутизируем трафик и хотим, чтобы одноранговый сервер отправлял пакеты с любым исходным IP.
Если вам нужно настроить дополнительных клиентов, просто повторите те же шаги, используя другой частный IP-адрес.
Установка клиентов Windows #
Загрузите и установите пакет Windows msi с веб-сайта WireGuard .
После установки откройте приложение WireGuard и нажмите «Добавить туннель» -> «Добавить пустой туннель…», как показано на изображении ниже:
Пара публичных ключей создается автоматически и отображается на экране.
Введите имя туннеля и отредактируйте конфигурацию следующим образом:
[Интерфейс] 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 - открытый ключ сервера Debian (
/ и т. д. / Wireguard / publickey
файл). - Конечная точка - IP-адрес сервера Debian, за которым следует двоеточие и порт WireGuard (51820).
- Разрешенные IP-адреса - 0.0.0.0/0
После этого нажмите кнопку «Сохранить».
Добавить однорангового клиента к серверу #
Последний шаг - добавить на сервер открытый ключ и IP-адрес клиента. Для этого выполните на сервере Debian следующую команду:
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 #
Выполните следующую команду, чтобы открыть интерфейс:
Судо WG-Quick Up WG0
Теперь вы должны быть подключены к серверу Debian, и трафик с вашей клиентской машины должен проходить через него. Проверить соединение можно с помощью:
sudo wg
интерфейс: открытый ключ wg0: gFeK6A16ncnT1FG6fJhOCMPMeY4hZa97cZCNWis7cSo = закрытый ключ: (скрытый) порт прослушивания: 53527 fwmark: 0xca6c одноранговый узел: r3imyh3MCYggaZACmkx + CxlD8 xxxpoint: PGPIIC8 = PGPIIC8 +.XXX.XXX.XXX: 51820 разрешенных IPS: 0.0.0.0/0 последнее рукопожатие: 53 секунды назад передача: 3.23 КиБ получено, 3.50 КБ отправлено
Вы также можете открыть свой браузер, ввести «what is my ip», и вы должны увидеть IP-адрес вашего сервера Debian.
Чтобы остановить туннелирование, выключите wg0
интерфейс:
sudo wg-quick вниз wg0
Клиенты Windows #
Если вы установили WireGuard в Windows, нажмите кнопку «Активировать». Как только одноранговые узлы будут подключены, статус туннеля изменится на Активный:
Заключение #
Мы показали вам, как установить WireGuard на Debian 10 и настроить его как VPN-сервер. Эта настройка позволяет вам просматривать веб-страницы анонимно, сохраняя конфиденциальность ваших данных о трафике.
Если у вас возникли проблемы, не стесняйтесь оставлять комментарии.