[Эксплуатация и обслуживание] Wireguard+OpenVPN решает проблему стабильности межрегионального VPN-соединения.
[Эксплуатация и обслуживание] Wireguard+OpenVPN решает проблему стабильности межрегионального VPN-соединения.

Для начала нам нужно разобраться с вопросом, в чем разница между Wireguard и OpenVPN?

  1. Wireguardна Протокол на основеUDP, унаследованный от ядра, имеет простой (но безопасный) протокол шифрования, меньшие накладные расходы и более высокую производительность.
  2. OpenVPNна на основе протокола TCP или UDP, шифрование личности осуществляется с помощью SSL/TLS, не так эффективно, как Wireguard, но поддерживает несколько методов управления.

В реальном использовании TCP и UDP также сильно различаются.

  1. TCP: может обеспечить более надежное соединение.,Потому что у него есть механизм подтверждения и повторной передачи.,Способен обрабатывать потерю пакетов и ошибки. Подходит для сценариев с высокими требованиями к целостности и надежности данных.
  2. UDP: UDP может обеспечить более высокую скорость и меньшую задержку, что подходит для чувствительных к задержке ситуаций, таких как приложения реального времени и потоковое видео. Режим UDP также позволяет избежать ограничений контроля перегрузки TCP и подходит для сред с высокой пропускной способностью.

При фактическом использовании UDP может быть ограничен по скорости QOS, но он все равно может хорошо работать в средах VPN с большой задержкой на больших расстояниях и не подвержен частым отключениям TCP.

План реализации

В сценарии практического применения мне нужно получить доступ к локальной сети в месте A из разных мест в месте B. Место A и место B физически далеко друг от друга и имеют плохие условия сети, но для бизнеса в реальном времени не так много требований, и НАТ

Вариант 1

Все используют OpenVPN и протокол UDP для машин, подключенных между A и B, для обеспечения связи. Местоположение B использует протокол TCP для других областей в местоположении B, чтобы обеспечить стабильность соединения. Вариант 1 можно сослаться Используйте OpenVPN в Windows для доступа к ресурсам интрасети компании из удаленных мест (туннельный метод, перенаправление frp на сервер общедоступной сети)

Вариант 2

Используйте Wireguard между A-B Сервер в локации Б использует OpenVPN для использования в других зонах локации Б. Структура сети следующая

Язык кода:javascript
копировать
AИнтранет<--->Aлокальный сервер<- Wireguard-UDP ->Bлокальный сервер<- OpenVPN TCP/UCP ->BПользователи из других регионов

Сравнивая два варианта, Вариант 1 проще, но без Варианта 2 стабильна, и при высокой пропускной способности в AB и AB использование OpenVPN может потреблять много ресурсов, что технически сложно. 2. Чтобы настроить переадресацию, необходимо разделить две VPN. Окончательный выбор Вариант 2 продолжить

Часть Wireguard

Установка скрипта (рекомендуется)

Установите OpenVPN (вроде бы Wireguard тоже можно использовать таким способом, но он сквозной, и настроить переадресацию тоже очень хлопотно, поэтому скриптами пользоваться не рекомендуется)

Язык кода:javascript
копировать
wget https://git.io/wireguard -O wireguard-install.sh && bash wireguard-install.sh

После установки мы можем напрямую импортировать его на сервер, а затем выполнить на сервере.

Язык кода:javascript
копировать
\#/etc/wireguard/wg0.conf
sudo wg-quick up wg0
sudo systemctl enable wg-quick@wg0

Если есть какие-либо проблемы с переадресацией, вы можете добавить ее вручную в разделе «Ручная установка» ниже.

Язык кода:javascript
копировать
PreUp = iptables -A FORWARD -i tun0 -j ACCEPT; iptables -A FORWARD -o tun0 -j ACCEPT; iptables -t nat -A POSTROUTING -o wg0 -j MASQUERADE
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o ens18 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o ens18 -j MASQUERADE

Ручная установка

Установите Wireguard и включите пересылку ядра. Если версия ядра Linux выше 5.6 (Ubuntu выше 5.4), Wireguard-dkms может быть унаследован в ядре, и нет необходимости устанавливать его снова.

Язык кода:javascript
копировать
sudo apt-get update
sudo apt-get install wireguard wireguard-dkms wireguard-tools -y
sudo vi /etc/sysctl.conf
#Изменяем net.ipv4.ip_forward=0 на net.ipv4.ip_forward=1
#Или удалите комментарий net.ipv4.ip_forward=1
sysctl -w net.ipv4.ip_forward=1

Сгенерируйте ключ и запишите его в файл конфигурации (обратите внимание на открытый ключ, который появляется в конце). В обычном одноранговом режиме необходимо определить информацию о конфигурации каждого однорангового узла, включая открытый ключ, IP-адрес, номер порта и т. д.

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

Язык кода:javascript
копировать
(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/publickey

Заполните файл конфигурации. Порт по умолчанию — 51820. Не забудьте разрешить соответствующий порт в брандмауэре. Поскольку один из нас не может получить доступ к другому абоненту, мы будем использовать порт в общедоступной сети в качестве сервера, а порт после NAT — в качестве сервера. клиент может сервер EndPoint не установлен.

Язык кода:javascript
копировать
sudo vi /etc/wireguard/wg0.conf
#/etc/wireguard/wg0.conf
[Interface]
PrivateKey = <Создается автоматически, не нужно заполнять вручную>
Address = 10.0.0.1/24
#Клиент — это адрес = 10.0.0.2/24
PreUp = iptables -A FORWARD -i tun0 -j ACCEPT; iptables -A FORWARD -o tun0 -j ACCEPT; iptables -t nat -A POSTROUTING -o wg0 -j MASQUERADE
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o ens18 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o ens18 -j MASQUERADE
#Автоматическая настройка переадресации сетевой карты
ListenPort = 51820

[Peer]
PublicKey = <Заполните открытый ключ узла,илиcat /etc/wireguard/publickey>
AllowedIPs = 10.0.0.2/32,<Сегмент сети для пересылки>
#Клиент — это адрес = 10.0.0.1/32,10.8.0.0/24 (сегмент сети OpenVPN ниже)
Endpoint = <СерверизIPадрес>:51820
#EndpointСервер выше писать не нужно
PersistentKeepalive = 25
#Сохранять отношения сопоставления NAT

Затем включите Wireguard

Язык кода:javascript
копировать
sudo wg-quick up wg0

Раздел OpenV**

Если сеть UDP плохая, рекомендуется перейти на TCP.

Стабильность соединения UDP относительно низкая по сравнению с TCP, но почему Wireguard использует UDP? Потому что по сравнению с плохой стабильностью соединения меня больше волнует, смогу ли я подключиться!

Установка скрипта (рекомендуется)

Установить OpenV** (вроде бы Wireguard тоже можно использовать таким способом, но он сквозной, и настроить переадресацию тоже хлопотно, поэтому скриптами пользоваться не рекомендуется)

Язык кода:javascript
копировать
wget https://git.io/vpn -O openvpn-install.sh && bash openvpn-install.sh
#wget https://git.io/wireguard -O wireguard-install.sh && bash wireguard-install.sh

Настройте его сразу после загрузки, а затем измените конфигурацию после того, как все будет установлено по умолчанию.

Язык кода:javascript
копировать
vi /etc/openvpn/server/server.conf
#v/etc/openvpn/server/server.conf
push "route 10.0.0.0 255.255.0.0"
push "route <Сегмент сети для пересылки> <Соответствие сегментов сетиизмаска>"
#Просто добавьте два приведенных выше предложения

Недавно созданный файл ov** может заменить удаленное имя на ваше собственное доменное имя, так что вы сможете изменить запись DNS в любое время.

Ручная установка

На самом деле, Wireguard выше — это я в середине блога Ручная. установка, я съел много дерьма, поэтому больше не буду его есть. Поэтому я положил несколько ссылок Конфигурация и использование OpenV** Документация по развертыванию и использованию службы OpenV**. на основе WireGuard и OpenV** Создание гибридной облачной инфраструктуры

Достижения

Успешное подключение и доступ к школьной интрасети через OpenV**.

Мысли

Той ночью я скорректировал код примерно на 5 часов. Поскольку переадресация так и не вступила в силу, я задумался, не следует ли мне использовать комбинацию Wireguard + OpenV**, когда я когда-то хотел переключиться на полную форму OpenV**. Новостей от Tracert нет. Сервер может подключаться по обоим протоколам, что вызывает недоумение. Головная боль (физическая), принять лекарство (быстро заснуть) Проспал где-то до 7 часов. Проснувшись, обнаружил, что висящий в фоне пинг успешно пропинговался, и шлюз нормально отследил. Может быть, вы столкнулись с Linux, который умеет исправлять ошибки?

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose