Подключен ли этот компьютер к интрасети облачного сервера?
Подключен ли этот компьютер к интрасети облачного сервера?

OpenVpn

Сцена следующая

  • Многие микросервисы развертываются онлайн, но если микросервисы также запускаются локально и регистрируются в nacos, это приведет к тому, что доступ будет доступен на какое-то время, а не на какое-то время.
  • Используйте онлайн-шлюз для прямого подключения к локальной сети То есть подключите свой компьютер и сервер к интрасети.

image-20220918211527746

  • Мы видим, что наш локальный IP-адрес загружен, и можем пропинговать их все.

image-20220918211508833

использование докера

использование докера означает, что все является контейнером

  • Вытащить изображение
Язык кода:javascript
копировать
docker pull kylemanna/openvpn
  • Создайте каталог для монтирования
Язык кода:javascript
копировать
mkdir -p /home/dockerfolder/openvpn
  • Начать создание файла конфигурации
Язык кода:javascript
копировать
docker run -v /home/dockerfolder/openvpn:/etc/openvpn --rm kylemanna/openvpn ovpn_genconfig -u tcp://101.34.243.14 
#IP внешней сеть или доменное имя Моё местоположение 101.34.243.14.

[root@k8s-node1 smart-extension-activity-module]# docker run -v /home/dockerfolder/openvpn:/etc/openvpn --rm kylemanna/openvpn ovpn_genconfig -u tcp://101.34.243.14
Processing PUSH Config: 'block-outside-dns'
Processing Route Config: '192.168.254.0/24'
Processing PUSH Config: 'dhcp-option DNS 8.8.8.8'
Processing PUSH Config: 'dhcp-option DNS 8.8.4.4'
Processing PUSH Config: 'comp-lzo no'
Successfully generated config
  • Создать ключевой файл
    • Введенный вами пароль невидим
    • Просто используйте имя CA по умолчанию
    • Введите пароль еще раз
Язык кода:javascript
копировать
docker run -v /home/dockerfolder/openvpn:/etc/openvpn --rm -it kylemanna/openvpn ovpn_initpki


[root@k8s-node1 smart-extension-activity-module]# docker run -v /home/dockerfolder/openvpn:/etc/openvpn --rm -it kylemanna/openvpn ovpn_initpki

init-pki complete; you may now create a CA or requests.
Your newly created PKI dir is: /etc/openvpn/pki


Using SSL: openssl OpenSSL 1.1.1g  21 Apr 2020

Enter New CA Key Passphrase: 
Re-Enter New CA Key Passphrase: 
Generating RSA private key, 2048 bit long modulus (2 primes)
............+++++
...................................................................................................................................................................................+++++
e is 65537 (0x010001)
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Common Name (eg: your user, host, or server name) [Easy-RSA CA]:

CA creation complete and you may now import and sign cert requests.
Your new CA certificate file for publishing is at:
/etc/openvpn/pki/ca.crt


Using SSL: openssl OpenSSL 1.1.1g  21 Apr 2020
Generating DH parameters, 2048 bit long safe prime, generator 2
This is going to take a long time
.....................+...................................................................................................................................................................................................................................................................+............++*++*++*++*

DH parameters of size 2048 created at /etc/openvpn/pki/dh.pem


Using SSL: openssl OpenSSL 1.1.1g  21 Apr 2020
Generating a RSA private key
..........................+++++
.....................+++++
writing new private key to '/etc/openvpn/pki/easy-rsa-73.hMNoFJ/tmp.kDCbkp'
-----
Using configuration from /etc/openvpn/pki/easy-rsa-73.hMNoFJ/tmp.NbaHFC
Enter pass phrase for /etc/openvpn/pki/private/ca.key:
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName            :ASN.1 12:'101.34.243.14'
Certificate is to be certified until Dec 19 16:17:07 2024 GMT (825 days)

Write out database with 1 new entries
Data Base Updated

Using SSL: openssl OpenSSL 1.1.1g  21 Apr 2020
Using configuration from /etc/openvpn/pki/easy-rsa-148.Jbkbcc/tmp.ehLdMP
Enter pass phrase for /etc/openvpn/pki/private/ca.key:

An updated CRL has been created.
CRL file: /etc/openvpn/pki/crl.pem
  • Создать сертификат клиента
    • Введите пароль, который вы только что ввели мне 123456
Язык кода:javascript
копировать
docker run -v /home/dockerfolder/openvpn:/etc/openvpn --rm -it kylemanna/openvpn easyrsa build-client-full huahua nopass




[root@k8s-node1 smart-extension-activity-module]# docker run -v /home/dockerfolder/openvpn:/etc/openvpn --rm -it kylemanna/openvpn easyrsa build-client-full huahua nopass
Using SSL: openssl OpenSSL 1.1.1g  21 Apr 2020
Generating a RSA private key
.........................+++++
..................................................................................................................................................................+++++
writing new private key to '/etc/openvpn/pki/easy-rsa-1.MIpgpi/tmp.AlbjnJ'
-----
Using configuration from /etc/openvpn/pki/easy-rsa-1.MIpgpi/tmp.oAeKfC
Enter pass phrase for /etc/openvpn/pki/private/ca.key:
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName            :ASN.1 12:'whsir'
Certificate is to be certified until Dec 19 16:19:35 2024 GMT (825 days)

Write out database with 1 new entries
Data Base Updated


  • Экспорт Конфигурация клиента
Язык кода:javascript
копировать
# Создать папку -p может создавать многоуровневые папки
mkdir -p /data/openvpn/conf


docker run -v /home/dockerfolder/openvpn:/etc/openvpn --rm kylemanna/openvpn ovpn_getclient huahua > /home/dockerfolder/openvpn/conf/huahua.ovpn


  • Запустить клиент
Язык кода:javascript
копировать
docker run --restart=always --name openvpn -v /home/dockerfolder/openvpn:/etc/openvpn -d -p 21194:1194  --cap-add=NET_ADMIN kylemanna/openvpn
  • Измените файл конфигурации с/home/dockerfolder/openvpn/conf/huahua.ovpnСкачать на локальный
  • Обратите внимание, откройте его и посмотрите, равен ли порт 21194. Если нет, измените его самостоятельно.

image-20220917005440549

  • openvpn напрямую импортирует конфигурацию соединять
  • Отключить брандмауэр общедоступной сети Win11
  • На данный момент реализован только базовый ping-контейнер openvpn. и контейнер пингует локальную машину ,Но хост-машина недоступна,Почувствуйте, что его можно использоватьrouteфункция для достижения,Но до сих пор он не был успешно протестирован.,Итак, цель обратилась к самому openvpn Установить на хост-машину

Установить на хост-машину

имя хоста IP внешней сети IP-адрес интрасети openvpn 43.142.192.164 10.0.4.15

Установить

предположение Установитьдавать возможностьepelисточник,использоватьyumспособ Установитьopenvpn

Язык кода:javascript
копировать
yum -y install openssl openssl-devel lzo openvpn easy-rsa

Использовать маршрутизацию или мост?

Рекомендуется использовать маршрутизацию, если у вас нет конкретных сценариев, требующих моста, например:

  • VPN должен иметь возможность обрабатывать протоколы, отличные от IP, такие как IPX.
  • Запускайте приложения через VPN, которая использует сетевое вещание (например, игры по локальной сети).
  • Хотите разрешить просмотр общих файловых ресурсов Windows через VPN без настройки сервера Samba или WINS.

Определить частную подсеть

Server и Client изVPN-туннельподсеть,Просто избегайте сетевых конфликтов в существующей среде.

По умолчанию: 10.8.0.0/16

Настроить ключ сертификата

Esay-RSAпо умолчанию Установитькаталог в/usr/share/easy-rsa/3.0.8,Шаблон профиля документа находится в/usr/share/doc/easy-rsa-3.0.8

В документе рекомендуется скопировать копию в другой каталог, чтобы избежать перезаписи во время будущих обновлений. Просто делайте, как нам говорят, и выбирайте в качестве каталога нашу конфигурационную папку OpenVPN. Ведь она для этого и предназначена.

Язык кода:javascript
копировать
cp -a /usr/share/easy-rsa/3.0.8 /etc/openvpn/easy-rsa

Скопируйте шаблон файла конфигурации. Документ «Установить» требует, чтобы он был переименован в vars, прежде чем его можно будет загрузить автоматически.

Язык кода:javascript
копировать
cp -a /usr/share/doc/easy-rsa-3.0.8/vars.example /etc/openvpn/easy-rsa/vars

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

Язык кода:javascript
копировать
set_var EASYRSA_REQ_COUNTRY    "CN"
set_var EASYRSA_REQ_PROVINCE   "JiangSu"
set_var EASYRSA_REQ_CITY       "Nanjing"
set_var EASYRSA_REQ_ORG        "SIMAEK"
set_var EASYRSA_REQ_EMAIL      "master@simaek.com"
set_var EASYRSA_REQ_OU         "Development Dept."

иллюстрировать: EASYRSA_REQ_COUNTRY "Страна" EASYRSA_REQ_PROVINCE "провинция" EASYRSA_REQ_CITY «Город, в котором вы находитесь» EASYRSA_REQ_ORG «Организация, к которой принадлежишь» EASYRSA_REQ_EMAIL "Адрес электронной почты" EASYRSA_REQ_OU «Организационная единица, отдел»

Объясните сертификат, который нам нужно создать:

  • Корневой сертификат ЦС, используемый для подписи сертификатов сервера и клиента.
  • Сертификат сервера OpenVPN
  • Ключ, используемый алгоритмом Диффи-Хеллмана

Введите каталог, в котором находится наш скрипт easy-rsa, исходный каталог pki, созданный нами сертификат и сгенерированный промежуточный файл будут храниться в этом каталоге. Местоположение по умолчанию — это путь, по которому выполняется скрипт. На самом деле его можно настроить, но я считаю, что всем, как и мне, лень менять файл конфигурации.

  • инициализация
Язык кода:javascript
копировать
cd /etc/openvpn/easy-rsa
./easyrsa init-pki
  • Создать корневой сертификат
Язык кода:javascript
копировать
 ./easyrsa build-ca
  • Создание сертификата на стороне сервера и файлов закрытого ключа.
Язык кода:javascript
копировать
./easyrsa gen-req server nopass
  • Подпишите сертификат сервера
Язык кода:javascript
копировать
./easyrsa sign server server
  • Создать файл DH
Язык кода:javascript
копировать
./easyrsa gen-dh
  • Создание сертификата клиента и файлов закрытого ключа.
Язык кода:javascript
копировать
./easyrsa gen-req client nopass
  • Подпишите сертификат клиента
Язык кода:javascript
копировать
./easyrsa sign client client

Настроить openvpn

  • Создайте файл конфигурации /etc/openvpn/server.conf самостоятельно и добавьте следующую конфигурацию
Язык кода:javascript
копировать
port 1194 #порт
proto udp #протокол
dev tun #Принятие туннельного режима маршрутизации Tun
ca ca.crt #caРасположение файла сертификата
cert server.crt #Имя открытого ключа сервера
key server.key #Имя закрытого ключа сервера
dh dh.pem #Обмен сертификата
server 10.8.0.0 255.255.255.0 #Назначьте клиенту пул адресов. Примечание. Он не может совпадать с сегментом внутренней сети VPN-сервера.
push "route 10.0.4.0 255.255.255.0" #Разрешить клиенту доступ к сегменту сети интрасети 10.0.4.0 Это собственный сегмент сети сервера Таким образом, когда клиент обращается к сегменту сети 10.0.4.x, он может перейти на наш сервер.
ifconfig-pool-persist ipp.txt #Местоположение файла записи пула адресов
keepalive 10 120 #Время выживания, пинг раз в 10 секунд, 120 Если ответ не получен, он считается отключенным.
max-clients 100 #Максимум 100 клиентов могут подключаться
status openvpn-status.log #Место регистрации
verb 3 #openvpnversion
client-to-client #Поддержка общения между клиентами и клиентами
log /var/log/openvpn.log #openvpnlogging местоположение
persist-key #После обнаружения тайм-аута с помощью Keepalive перезапустите VPN, не перечитывая ключи, и сохраните ключи, использованные в первый раз.
persist-tun #После истечения времени обнаружения повторно включите VPN и продолжайте соединение. В противном случае сеть сначала отключится, а затем подключится.
duplicate-cn
  • Скопируйте сертификат в каталог основного файла конфигурации openvpn.
Язык кода:javascript
копировать
cp /etc/openvpn/pki/ca.crt /etc/openvpn/
cp /etc/openvpn/pki/issued/server.crt  /etc/openvpn/
cp /etc/openvpn/pki/private/server.key /etc/openvpn/
cp /etc/openvpn/pki/dh.pem  /etc/openvpn/
  • Добавить файл проверки
Язык кода:javascript
копировать
[root@openvpn openvpn]# cat /etc/openvpn/check.sh
#!/bin/sh
###########################################################
PASSFILE="/etc/openvpn/openvpnfile"
LOG_FILE="/var/log/openvpn-password.log"
TIME_STAMP=`date "+%Y-%m-%d %T"`

if [ ! -r "${PASSFILE}" ]; then
    echo "${TIME_STAMP}: Could not open password file \"${PASSFILE}\" for reading." >> ${LOG_FILE}
    exit 1
fi

CORRECT_PASSWORD=`awk '!/^;/&&!/^#/&&$1=="'${username}'"{print $2;exit}' ${PASSFILE}`

if [ "${CORRECT_PASSWORD}" = "" ]; then
    echo "${TIME_STAMP}: User does not exist: username=\"${username}\", password=\"${password}\"." >> ${LOG_FILE}
    exit 1
fi
if [ "${password}" = "${CORRECT_PASSWORD}" ]; then
    echo "${TIME_STAMP}: Successful authentication: username=\"${username}\"." >> ${LOG_FILE}
    exit 0
fi

echo "${TIME_STAMP}: Incorrect password: username=\"${username}\", password=\"${password}\"." >> ${LOG_FILE}
exit 1
  • Запустить опенвпн
Язык кода:javascript
копировать
systemctl start openvpn@server.service
systemctl enable openvpn@server.service

Конфигурация клиента

  • Скопируйте сертификат, сгенерированный сервером, в каталог конфигурации каталога OpenVPN Установить.
Язык кода:javascript
копировать
/etc/openvpn/pki/ca.crt
/etc/openvpn/pki/issued/client.crt
/etc/openvpn/pki/private/client.key
  • В каталоге конфигурации каталога OpenVPN Установить.,Создайте новый файл client.ovpn.,Добавьте следующую конфигурацию в файл
Язык кода:javascript
копировать
client #Указываем, что текущая VPN является клиентом
dev tun #Использовать протокол передачи туннеля Tun
proto udp #Используйте протокол udp для передачи данных
remote Это публичный IP 1194 #openvpn IP-адрес сервера номер порта
resolv-retry infinite #Автоматический перезапуск при отключении, очень полезно, когда сеть нестабильна.
nobind #Не привязывайте локальные номера портов
ca ca.crt #Указываем путь к файлу сертификата CA
cert client.crt #Указываем путь к файлу сертификата текущего клиента
key client.key #Указываем путь к файлу закрытого ключа текущего клиента
verb 3 #Укажите уровень детализации записи файла журнала, необязательно, от 0 до 9. Чем выше уровень, тем более подробным будет содержимое журнала.
persist-key #После обнаружения таймаута через Keepalive повторно запустите VPN, не перечитывая ключи и сохраняя ключи, использованные в первый раз.
persist-tun #После истечения времени обнаружения повторно включите VPN и продолжайте соединение. В противном случае сеть сначала отключится, а затем подключится.
  • Запустите openVpn
  • Импортировать файл конфигурации
  • Будьте осторожны при импорте,Воляca.crt,client.crt,client.keyВручную перейти к нашему импортуиз Внутри конфигурации,Вот как это выглядит в итоге

image-20220918212128666

image-20220918212110768

Дважды щелкните «Установить хорошее программное обеспечение OpenVPN», а затем щелкните правой кнопкой мыши «Соединить».

Есть проблема

  • Обратите внимание на локальный брандмауэр,Я обманывался этим уже два дня.(Здесь я хотел бы поблагодарить брата Теджуна за то, что он объяснил все в одном предложении.)

image-20220918212233799

Справочная статья: Посетите интранет компании

openvpn.exeМожно получить из「openvpn-install-2.4.6-I602.exe」https://www.aliyundrive.com/s/rAvbGxEavkGскачать

boy illustration
Учебное пособие по Jetpack Compose для начинающих, базовые элементы управления и макет
boy illustration
Код js веб-страницы, фон частицы, код спецэффектов
boy illustration
【новый! Суперподробное】Полное руководство по свойствам компонентов Figma.
boy illustration
🎉Обязательно к прочтению новичкам: полное руководство по написанию мини-программ WeChat с использованием программного обеспечения Cursor.
boy illustration
[Забавный проект Docker] VoceChat — еще одно приложение для мгновенного чата (IM)! Может быть встроен в любую веб-страницу!
boy illustration
Как реализовать переход по странице в HTML (html переходит на указанную страницу)
boy illustration
Как решить проблему зависания и низкой скорости при установке зависимостей с помощью npm. Существуют ли доступные источники npm, которые могут решить эту проблему?
boy illustration
Серия From Zero to Fun: Uni-App WeChat Payment Practice WeChat авторизует вход в систему и украшает страницу заказа, создает интерфейс заказа и инициирует запрос заказа
boy illustration
Серия uni-app: uni.navigateЧтобы передать скачок значения
boy illustration
Апплет WeChat настраивает верхнюю панель навигации и адаптируется к различным моделям.
boy illustration
JS-время конвертации
boy illustration
Обеспечьте бесперебойную работу ChromeDriver 125: советы по решению проблемы chromedriver.exe не найдены
boy illustration
Поле комментария, щелчок мышью, специальные эффекты, js-код
boy illustration
Объект массива перемещения объекта JS
boy illustration
Как открыть разрешение на позиционирование апплета WeChat_Как использовать WeChat для определения местонахождения друзей
boy illustration
Я даю вам два набора из 18 простых в использовании фонов холста Power BI, так что вам больше не придется возиться с цветами!
boy illustration
Получить текущее время в js_Как динамически отображать дату и время в js
boy illustration
Вам необходимо изучить сочетания клавиш vsCode для форматирования и организации кода, чтобы вам больше не приходилось настраивать формат вручную.
boy illustration
У ChatGPT большое обновление. Всего за 45 минут пресс-конференция показывает, что OpenAI сделал еще один шаг вперед.
boy illustration
Copilot облачной разработки — упрощение разработки
boy illustration
Микросборка xChatGPT с низким кодом, создание апплета чат-бота с искусственным интеллектом за пять шагов
boy illustration
CUDA Out of Memory: идеальное решение проблемы нехватки памяти CUDA
boy illustration
Анализ кластеризации отдельных ячеек, который должен освоить каждый&MarkerгенетическийВизуализация
boy illustration
vLLM: мощный инструмент для ускорения вывода ИИ
boy illustration
CodeGeeX: мощный инструмент генерации кода искусственного интеллекта, который можно использовать бесплатно в дополнение к второму пилоту.
boy illustration
Машинное обучение Реальный бой LightGBM + настройка параметров случайного поиска: точность 96,67%
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция без кодирования и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
LM Studio для создания локальных больших моделей
boy illustration
Как определить количество слоев и нейронов скрытых слоев нейронной сети?
boy illustration
[Отслеживание целей] Подробное объяснение ByteTrack и детали кода