ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

Как установить VPN-сервер и клиент Wireguard на компьютер с Debian Linux

Как установить VPN-сервер и клиент Wireguard на компьютер с Debian Linux

Программная технология Virtual Private Network (VPN) была применена предприятиями несколько лет назад для безопасного установления соединений между офисами и для предоставления сотрудникам поездок доступа к собственным приложениям. С тех пор VPN оказался полезной технологией для людей, которые хотят для защиты их конфиденциальности или доступа к географически ограниченным услугам из других регионов. До сих пор было очень сложно настроить VPN-сервис с собственным хостингом, но теперь Wireguard VPN уже здесь.

Wireguard был в разработке в течение нескольких лет. Важная веха, версия 1.0, была достигнута в марте 2020 года. В то же время она была включена в ядро Linux версии 5.6. Поскольку не многие (серверные) компьютеры в производственном использовании используют последнее ядро, Wireguard должен быть установлен и настроен на этих машинах для безопасной работы в сети. В этой статье мы устанавливаем Wireguard на компьютеры Debian Linux, которые выполняют роли VPN-сервера и клиента.

 

Установка Wireguard на Debian

Примечание. Перед установкой Wireguard из системы управления пакетами apt сохраните настройки iptables (например, вы можете ввести команду: iptables-save>firewall.rules ). Ранняя версия установочного пакета удалит существующие настройки iptables и заменит их собственными правилами брандмауэра.
Чтобы начать установку, откройте свой терминал и введите его в командной строке:

 apt-get install wireguard-tools
 apt-get install wireguard-dkms
 apt-get install wireguard

 

Вам также может понадобиться установить:

 apt-get install dkms

 

После выполнения этих команд проверьте, что все необходимое для Wireguard установлено:

 modprobe wireguard

 

Если команда ничего не выводит, все необходимые модули должны быть там.

 

Настройка сервера Wireguard

Точно такое же программное обеспечение Wireguard установлено на серверах и клиентах Linux, потому что конфигурация VPN каждого компьютера определяет его роль. Приложения Wireguard доступны также для Windows, Android, Apple MacOS и iOS.
Давайте начнем работу по настройке, создав каталог для настроек Wireguard:

 mkdir  /etc/wireguard
 chmod 700  /etc/wireguard

 

Создайте закрытый и открытый ключи, которые необходимы для установки безопасных туннелей между сервером и его клиентами:

cd  /etc/wireguard
wg genkey|tee privatekey|wg pubkey>publickey

 

В приложении редактора создайте файл wg0.conf в каталоге /etc/wireguard и вставьте в него следующие строки:

 [Interface]
 Address=192.168.2.1
 PrivateKey=
 ListenPort=51820

 

Адрес интерфейса может быть любым IP из пространства частных IP-адресов, если вы используете ту же подсеть для клиентов.

Скопируйте и вставьте значение в поле Privatekey из файла /etc/wireguard/privatekey.

Listenport может быть любым свободным портом, 51820 по умолчанию для Wireguard.

 

Настройка VPN-клиента Wireguard

Если вы собираетесь настроить один или несколько VPN-клиентов, сейчас самое время убедиться, что вы можете легко копировать ключи с одного устройства на другое. Мы использовали Nextcloud в качестве временного хранилища для передачи ключей с одного устройства на другое, но вполне подойдет Yandex Диск, Evernote, Dropbox, электронная почта или любой другой сервис, которому вы доверяете и который удобно использовать.

Установите на клиенте Linux те же пакеты программного обеспечения, что и на сервере. Проверьте с помощью команды modprobe, что все необходимые модули установлены.

Создайте закрытый и открытый ключи в каталоге /etc/wireguard, как вы это делали на сервере.

Создайте следующий файл wg0.conf в клиентском каталоге /etc/wireguard в редакторе.

[Peer]
PublicKey=
Endpoint= . . . :51820
AllowedIPs=0.0.0.0/0
#if this computer is behind a NAT, add line:
PersistentKeepAlive = 25

 

Publickey – это открытый ключ сервера ( /etc/wireguard/publickey), который вы должны скопировать с сервера и вставить здесь.

Конечная точка – это публичный IP-адрес сервера, за которым следует порт Wireguard сервера.

Если AllowedIPs – все нули, весь сетевой трафик этого компьютера маршрутизируется через VPN, когда туннель включен. Можно выбрать, какой трафик будет направляться через VPN, изменив значение этого поля.

Чтобы завершить настройку клиента, вы также должны отредактировать файл wg0.conf на сервере. Вставьте следующие строки в конец файла:

[Peer]
#home laptop
PublicKey=
AllowedIPs=192.168.2.2/32

 

Publickey: Вы должны вставить открытый ключ клиентского компьютера здесь.

AllowedIPs указывает IP-адрес клиента внутри VPN-туннеля.

Теперь вы можете протестировать новый VPN, если он надежно соединяет ваши компьютеры. Введите следующую команду как на сервере, так и на клиенте:

wg-quick up wg0

 

На клиенте проверьте, может ли он общаться с сервером:

ping 192.168.2.1

 

(или пинг 192.168.2.2, если вы нажимаете на клавиатуре сервера)

Если вы получите ответ, поздравляем, у вас есть безопасный туннель между этими двумя компьютерами.
Это, однако, не конец истории. Вы, вероятно, хотите выйти в публичный интернет через VPN. Требуется немного больше работы: маршрутизация трафика в туннель из Интернета и из туннеля.

 

Маршрутизация трафика сети Wireguard VPN в интернет

Поскольку на этом этапе используются стандартные iptables брандмауэра Linux, существует множество способов сделать это, и правильные настройки также зависят от правил, уже сохраненных в iptables сервера. Вот настройки, которые работали для всех моих серверов Debian.
Введите следующие команды:

 iptables -A INPUT -p udp -m udp --dport 51820 -j ACCEPT
 iptables -A FORWARD -i wg0 -j ACCEPT
 iptables -A FORWARD -o wg0 -j ACCEPT

 

Попробуйте пинговать, например, google.com или yandex.ru. Если вы не получили ответа, первое место для устранения неполадок – это параметры пересылки операционной системы.

Введите следующую команду, чтобы просмотреть текущие настройки сети

 sysctl -a

 

Команда отображает длинный список элементов, но ищет значение net.ipv4.ip_forward
Если оно равно 0, пересылка на внешние адреса отключена. Разрешить пересылку с помощью команды:

 sysctl -w net.ipv4.ip_forward = 1

 

Пинг на внешний адрес для проверки. Если это работает, вы можете сделать настройку постоянной, создав файл  /etc/systctl.d/local.conf и вставив эту строку в файл:

 net.ipv4.ip_forward = 1

 

(советы по сохранению изменений в файле conf находятся в файле readme Debian, расположенном в каталоге sysctl.d).

Exit mobile version