Для начала нам нужно разобраться с вопросом, в чем разница между Wireguard и OpenVPN?
В реальном использовании TCP и UDP также сильно различаются.
При фактическом использовании UDP может быть ограничен по скорости QOS, но он все равно может хорошо работать в средах VPN с большой задержкой на больших расстояниях и не подвержен частым отключениям TCP.
В сценарии практического применения мне нужно получить доступ к локальной сети в месте A из разных мест в месте B. Место A и место B физически далеко друг от друга и имеют плохие условия сети, но для бизнеса в реальном времени не так много требований, и НАТ
Все используют OpenVPN и протокол UDP для машин, подключенных между A и B, для обеспечения связи. Местоположение B использует протокол TCP для других областей в местоположении B, чтобы обеспечить стабильность соединения. Вариант 1 можно сослаться Используйте OpenVPN в Windows для доступа к ресурсам интрасети компании из удаленных мест (туннельный метод, перенаправление frp на сервер общедоступной сети)
Используйте Wireguard между A-B Сервер в локации Б использует OpenVPN для использования в других зонах локации Б. Структура сети следующая
AИнтранет<--->Aлокальный сервер<- Wireguard-UDP ->Bлокальный сервер<- OpenVPN TCP/UCP ->BПользователи из других регионов
Сравнивая два варианта, Вариант 1 проще, но без Варианта 2 стабильна, и при высокой пропускной способности в AB и AB использование OpenVPN может потреблять много ресурсов, что технически сложно. 2. Чтобы настроить переадресацию, необходимо разделить две VPN. Окончательный выбор Вариант 2 продолжить
Установите OpenVPN (вроде бы Wireguard тоже можно использовать таким способом, но он сквозной, и настроить переадресацию тоже очень хлопотно, поэтому скриптами пользоваться не рекомендуется)
wget https://git.io/wireguard -O wireguard-install.sh && bash wireguard-install.sh
После установки мы можем напрямую импортировать его на сервер, а затем выполнить на сервере.
\#/etc/wireguard/wg0.conf
sudo wg-quick up wg0
sudo systemctl enable wg-quick@wg0
Если есть какие-либо проблемы с переадресацией, вы можете добавить ее вручную в разделе «Ручная установка» ниже.
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 может быть унаследован в ядре, и нет необходимости устанавливать его снова.
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-адрес, номер порта и т. д.
(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 не установлен.
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
sudo wg-quick up wg0
Стабильность соединения UDP относительно низкая по сравнению с TCP, но почему Wireguard использует UDP? Потому что по сравнению с плохой стабильностью соединения меня больше волнует, смогу ли я подключиться!
Установить OpenV** (вроде бы Wireguard тоже можно использовать таким способом, но он сквозной, и настроить переадресацию тоже хлопотно, поэтому скриптами пользоваться не рекомендуется)
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
Настройте его сразу после загрузки, а затем измените конфигурацию после того, как все будет установлено по умолчанию.
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, который умеет исправлять ошибки?