При попытке создать интерфейс wireguard получаем ошибку «RTNETLINK answers: Operation not supported». Команда modprobe wireguard возвращает «modprobe: FATAL: Module wireguard not found». Читать
Архив метки: VPN
Установка WireGuard на Ubuntu/Debian
Сегодня в статье приведу пример по установке и настройке VPN сервера WireGuard для операционных систем Ubuntu и Debian. Также данная статья будет справедлива и для всех производных систем данного типа.
WireGuard – это современная высокопроизводительная VPN для Linux,Windows, MacOS. Главной функцией WireGuard является обеспечение безопасного соединения между сторонами через сетевой интерфейс, зашифрованный с помощью аутентификации по открытому ключу. Это означает, что, в отличие от большинства виртуальных частных сетей, WireGuard не применяет топологию, что позволяет создавать различные конфигурации путем изменения конфигураций окружающей сети. Эта модель предлагает большую производительность и гибкость.
Сейчас WireGuard готовится к включению в состав ядра Linux. Если быть точнее, то он появится в ядре версии 5.6, он даже получил похвалу от Линус Торвальдса и в американском сенате.
Специалисты проверили скорость работы WireGuard и выяснили, что он способен обойти большинство протоколов шифрования в том числе широко известный протокол OpenVPN.
Причина, которая объясняет высокую скорость работы WireGuard, это применение быстрого и современного алгоритма шифрования, благодаря которому скорость передачи данных очень высока.
Кроме того, данный протокол очень похож на https, что позволяет обманывать системы анализа трафика DPI, установленные у Вашего провайдера и обходить эти блокировки по сигнатурам.
Установка и настройка при помощи скрипта
Для облегчения установки и настройки можете воспользоваться готовым скриптом. Данный скрипт универсальный для большинства систем.
Первым шагом подготовим нашу систему:
sudo -su
apt update && apt upgrade -y
apt install curlДалее скачиваем скрипт.
curl -O https://raw.githubusercontent.com/angristan/wireguard-install/master/wireguard-install.shДелаем его исполняемым:
chmod +x wireguard-install.shЗапускаем установку и настройку WireGuard
./wireguard-install.shУстановка WireGuard на Ubuntu
Установку нашего VPN WireGuard я буду производить на сервере под управлением операционной системы Ubuntu/Debian. И так поехали.
Ubuntu 18.04
Для начала надо добавить официальный репозиторий в систему:
sudo add-apt-repository ppa:wireguard/wireguard- Обновляем индексы
sudo apt update- Устанавливаем wireguard
sudo apt install -y wireguard wireguard-dkms iptables resolvconf qrencodeUbuntu 20.04/22.04
Так как пакет входит в официальный репозиторий, то необходимо набрать всего лишь данные команды:
- Обновляем индексы
sudo apt update- Устанавливаем wireguard
sudo apt install -y wireguard wireguard-dkms iptables resolvconf qrencodeУстановка WireGuard на Debian
Для того чтобы установить WireGuard на Debian с начало необходимо авторизоваться под root пользователем:
sudo suДалее набираем следующее:
echo "deb http://deb.debian.org/debian buster-backports main" >/etc/apt/sources.list.d/backports.list
apt update
apt install -y iptables resolvconf qrencode
apt install -y -t buster-backports wireguardДля остальных операционных систем можете посмотреть официальную страничку инсталляции.
Также установите заголовки для вашего ядра, если вы еще этого не сделали:
apt-get install linux-headers-$(uname -r|sed 's/[^-]*-[^-]*-//')Настройка VPN WireGuard на серверной части
Давайте теперь настроим наш высокопроизводительный VPN на сервере wireguard. Для этого создадим файл конфигурации и необходимые ключи шифрования. Все действия выполняем из под root.
sudo su(umask 077 && printf "[Interface]nPrivateKey = " | sudo tee /etc/wireguard/wg0.conf > /dev/null)
wg genkey | sudo tee -a /etc/wireguard/wg0.conf | wg pubkey | sudo tee /etc/wireguard/wg-server-publickey.key- Первая команда записывает исходное содержимое конфигурационного файла в /etc/wireguard/wg0.conf. Значение umask в суб-оболочке позволяет создать файл с ограниченными разрешениями, не затрагивая обычную среду.
- Вторая команда генерирует закрытый ключ с помощью команды wg и записывает ее непосредственно в конфигурационный файл с ограниченным доступом. Затем ключ передается обратно команде wg pubkey, чтобы получить связанный с ним открытый ключ, который записывается в /etc/wireguard/wg-sever-publickey.key.
Следующим шагом нам необходимо включить форвардинг пакетов через наш сервер, для этого открываем следующий файл:
sudo nano /etc/sysctl.confИ уберем знак комментария # со строки:
net.ipv4.ip_forward=1Применим изменения
sudo sysctl -pДалее отрываем файл на редактирования и вносим необходимую информацию о нашей VPN сети.
sudo nano /etc/wireguard/wg0.confКонфигурационный файл vpn wireguard
Внутри, в разделе [Interface], вы должны увидеть свой сгенерированный закрытый ключ. Этот раздел содержит конфигурацию для локальной стороны соединения.
В разделе Interface нужно также определить IP-адрес VPN, который будет использовать этот узел, и порт, который он будет прослушивать для соединений с одноранговыми узлами.
Давайте добавим в него следующие строки ListenPort, SaveConfig и Address:
[Interface]
PrivateKey = приватный_ключ_сервера
ListenPort = 5555
SaveConfig = true
Address = 10.0.0.1/24
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o wg0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o wg0 -j MASQUERADE- ListenPort – указываем свободный порт который будет прослушивать наш сервис wg-quick (VPN WireGuard)
- SaveConfig – имеет значение true, чтобы сервис wg-quick мог автоматически сохранять свою активную конфигурацию в этом файле при завершении работы.
- Address – это наш IP-адрес и маска сети
- PostUP и PostDown – запускают необходимые правило для iptables
Пробуем поднять нашу сеть скриптом wg-quick:
sudo wg-quick up /etc/wireguard/wg0.confВ системах с systemd вместо этого можно использовать следующую запись:
sudo systemctl start wg-quick@wg0.serviceЕсли systemd ругается, то сперва необходимо включить сервис следующей командой:
sudo systemctl enable wg-quick@wg0.serviceНастройка VPN WireGuard на клиентской машине
В качестве клиента у меня будет выступать ноутбук с операционной системой Ubuntu Desktop 18.04 LTS
Все действия выполняем из под пользователя root.
sudo su
add-apt-repository ppa:wireguard/wireguard
apt install wireguard -yДля Ubuntu 20.04 необходимо повторить тоже самое, что и при установке на серверную часть. (см. Выше)
Далее создаем конфигурационный файл и генерируем ключи:
(umask 077 && printf "[Interface]nPrivateKey = " | sudo tee /etc/wireguard/wg0.conf > /dev/null)
wg genkey | sudo tee -a /etc/wireguard/wg0.conf | wg pubkey | sudo tee /etc/wireguard/wg-server-publickey.keyОткрываем наш конфигурационный файл и вносим изменения.
sudo nano /etc/wireguard/wg0.conf[Interface]
PrivateKey = приватный_ключ_клиента
ListenPort = 5555
Address = 10.0.0.2/32 Создайте раздел под названием [Peer] после раздела [Interface].
[Peer]
PublicKey = Публичный_ключ_сервера
AllowedIPs = 10.0.0.0/24
Endpoint = IP-адрес_сервера:5555
PersistentKeepalive = 10- PublicKey – укажите значение открытого ключа сервера. Вы можете найти это значение, набрав на сервере команду: wg
- AllowedIPs – указывает на пропуск трафика через VPN. В данном случае будет проходить через VPN только трафик сети 10.0.0.0/24. Весть остальной трафик пойдет через вашего провайдер. Для заворота всего трафика через VPN указываем значение 0.0.0.0/0
- PersistentKeepalive – время в секундах для постоянной проверки доступности ресурса.
Запускаем сервис на Ubuntu:
sudo systemctl start wg-quick@wg0.service Запускаем сервис на Debian:
sudo wg-quick up /etc/wireguard/wg0.confPeer на стороне сервера
На сервере также необходимо добавить информацию о клиенте. Иначе ваш туннель VPN не откроется. Для этого возвращаемся на сервер и останавливаем службу wireguard:
sudo systemctl stop wg-quick@wg0.serviceДалее открываем конфигурационный файл:
sudo nano /etc/wireguard/wg0.confИ вносим информацию о клиенте.
[Peer]
PublicKey = публичный_ключ_клиента
AllowedIPs = 10.0.0.5/32
PersistentKeepalive = 10- PublicKey – ключ клиента можно посмотреть на клиентской машине при помощи команды wg.
- AllowedIPs – указывает на IP клиента. Обязательно с маской 32
Запускаем наш сервис:
sudo systemctl start wg-quick@wg0.service Пробуем пропинговать клиента.
ping 10.0.0.264 bytes from 10.0.0.2: icmp_seq=1 ttl=64 time=0.916 ms
64 bytes from 10.0.0.2: icmp_seq=2 ttl=64 time=0.545 ms
64 bytes from 10.0.0.2: icmp_seq=3 ttl=64 time=0.647 msСо стороны клиента также должен проходить пинг до сервера.
ping 10.0.0.164 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=2.40 ms
64 bytes from 10.0.0.1: icmp_seq=2 ttl=64 time=0.646 ms
64 bytes from 10.0.0.1: icmp_seq=3 ttl=64 time=0.555 msХотя статья получилась большой, но все настраивается очень быстро.
Тонкая настройка параметров WireGuard на примере Proxmox
/usr/lib/sysctl.d/10-pve-ct-inotify-limits.conf…
fs.inotify.max_queued_events = 8388608
fs.inotify.max_user_instances = 65536
fs.inotify.max_user_watches = 4194304
vm.max_map_count = 262144
net.ipv4.neigh.default.gc_thresh3 = 8192
net.ipv6.neigh.default.gc_thresh3 = 8192
kernel.keys.maxkeys = 2000/usr/lib/sysctl.d/10-pve.conf…
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0
net.bridge.bridge-nf-filter-vlan-tagged = 0
net.ipv4.igmp_link_local_mcast_reports = 0
fs.aio-max-nr = 1048576/usr/lib/sysctl.d/50-pid-max.conf…
kernel.pid_max = 4194304/etc/sysctl.d/99-sysctl.conf…
net.ipv4.ip_forward = 1/usr/lib/sysctl.d/protect-links.conf…
fs.protected_fifos = 1
fs.protected_hardlinks = 1
fs.protected_regular = 2
fs.protected_symlinks = 1/usr/lib/sysctl.d/pve-firewall.conf…
net.ipv4.conf.all.rp_filter = 2/etc/sysctl.d/wg.conf…
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1/etc/sysctl.conf…
net.ipv4.ip_forward = 1
Выбор конфигурации VPN сервера
Приняв решение поддерживать UDP- и TCP-клиентов системный администратор неизбежно приходит ко второму вопросу: bridge-server или P2P-сервер. Напомним:
1. В режиме bridge-сервер используется виртуальный L2-интерфейс: tap. В этом случае VPN-клиент – и возможно его внутренняя сеть – становятся частью поднимаемой вами VPN-сети. К вам в сеть пойдут ARP-трафик и broadcast-пакеты из сети клиента. Если последняя собрана на Windows, то широковещательный трафик будет изрядным. А если в сети клиента заведется доморощенный хакер, то сеть ваша и сети других ваших клиентов могут стать мишенью атак. Ибо L2-трафик предоставляет для этого больше возможностей; Читать
[РЕШЕНО] Auth-nocache – Warning в OpenVPN
При подключении через протокол openvpn, вы можете увидеть следующую строку в логах подключения VPN-клиента:
W: WARNING: this configuration may cache passwords in memory -- use the auth-nocache option to prevent thisНичего критичного в этом конечно нет, подключение отработает и вы подключитесь к vpn. Это сообщение отображается для всех и в вашей системе нет ничего плохого. Читать
Настраиваем VPN на MikroTik — протоколы PPtP и PPPoE
MikroTik производят профессиональное сетевое оборудование с возможностью тонкой настройки. Поэтому для VPN-сервера или клиента маршрутизаторы этой фирмы подходят просто отлично.
Всё о VPN-подключении: от общей информации до создания сервера
Безопасность и шифрование данных в сети очень важны. Сегодня об этом стоит заботиться не только крупным корпорациям, но и обычным пользователям. Использование VPN-сервера является одним из самых популярных способов обезопасить своё подключение к интернету.