Synology NAS настраивает собственный сервер ngrok для проникновения во внутреннюю сеть
Synology NAS настраивает собственный сервер ngrok для проникновения во внутреннюю сеть

Предисловие – Проникновение в интранет

Проникновение во внутреннюю сеть — это технология, которая позволяет внешним сетям получать доступ к устройствам NAS в интрасети, благодаря чему даже в различных сетевых средах к устройствам NAS можно получить доступ и управлять ими удаленно. Ниже приведены некоторые распространенные решения для проникновения в интранет:

QuickConnect официально предоставляется Synology:

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

Служба DDNS Synology:

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

VPN (виртуальная частная сеть):

Настроив VPN-сервер на маршрутизаторе или используя собственную службу VPN NAS, можно установить безопасное удаленное соединение, позволяющее пользователям удаленно получать доступ к ресурсам интрасети, включая устройства NAS.

Переадресация портов/сопоставление портов:

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

Сторонняя служба проникновения в интранет:

Используйте сторонние инструменты или службы, такие как ngrok и frp, для проникновения в интрасеть. Эти службы могут помочь пользователям предоставлять доступ к общедоступным устройствам интрасети, но им необходимо уделять внимание безопасности и защите конфиденциальности.

В этой статье будет представлен собственный сервер ngrok для проникновения во внутреннюю сеть.

Предварительные условия

1. Требуется доменное имя. Если это домашний сервер, его также необходимо зарегистрировать.

2. Нужен сервер Рекомендуется использовать определенное облако за 99 юаней в год. доступ:http://d.xgss.net/2

3. Система centos7

Разрешение доменного имени

Выберите доменное имя второго уровня ngrok.xgss.net. Доменное имя третьего уровня использует пананалитику *.ngrok.xgss.net. Чтобы позже указать имя домена, например nas.ngrok.xgss.net, нет необходимости это анализировать.

Язык кода:javascript
копировать
ngrok.xgss.net      Aанализироватьприезжать    облачный Сервер Публичный IP
*.ngrok.xgss.net    Aанализироватьприезжать    облачный Сервер Публичный IP

Установить сервер Ngrok

Подключитесь к серверу через удаленный ssh.

Загрузите часто используемые зависимые библиотеки

Язык кода:javascript
копировать
yum -y install zlib-devel openssl-devel perl hg cpio expat-devel gettext-devel curl curl-devel perl-ExtUtils-MakeMaker hg wget gcc gcc-c++

Установите go и git

Язык кода:javascript
копировать
# yum -y install git go

Следует отметить, что версия git должна быть выше 1.7.9, а версия go — выше 1.4, иначе могут возникнуть непредвиденные ошибки.

Язык кода:javascript
копировать
Посмотреть версию
# git --версия
git версия 1.8.3.1
# версия Go
версия go go1.13 Linux/amd64

Начать установку ngrok

Лично я предпочитаю устанавливать в каталог /data/. Если вы хотите установить в другой каталог, перейдите в тот каталог, который вы хотите установить.

1. Загрузите исходный код

Язык кода:javascript
копировать
mkdir /data/
cd /data/
# git clone https://github.com/inconshreveable/ngrok.git ngrok

2. Создать сертификат

Язык кода:javascript
копировать
cd /data/ngrok
#Сгенерируйте и замените сертификат по умолчанию в исходном коде. Обратите внимание, что имя домена должно быть изменено на ваше собственное. Вот имя виртуального тестового домена.
NGROK_DOMAIN="ngrok.xgss.net"
#тест Успешно ли вы его настроили?
echo $NGROK_DOMAIN
​
openssl genrsa -out rootCA.key 2048
​
openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=$NGROK_DOMAIN" -days 5000 -out rootCA.pem
​
openssl genrsa -out device.key 2048
​
openssl req -new -key device.key -subj "/CN=$NGROK_DOMAIN" -out device.csr
​
openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000

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

3. Заменить сертификат

Язык кода:javascript
копировать
//Выполняем построчно,Затем вам будет предложено перезаписать,входить “y” Просто нажмите Enter
​
# cp -rf rootCA.pem assets/client/tls/ngrokroot.crt
cp: overwrite ‘assets/client/tls/ngrokroot.crt’? y
​
# cp -rf device.crt assets/server/tls/snakeoil.crt
cp: overwrite ‘assets/server/tls/snakeoil.crt’? y
​
# cp -rf device.key assets/server/tls/snakeoil.key
cp: overwrite ‘assets/server/tls/snakeoil.key’? y

На данный момент подготовка к созданию и копированию сертификата завершена.

4. Создать сервер

Язык кода:javascript
копировать
make release-server

Это создаст файл ngrokd в каталоге bin, который является нашей серверной программой ngrok.

5. Скомпилируйте клиентский ngrok

В разных системах можно использовать следующие команды:

Язык кода:javascript
копировать
32-битный Linux-клиент: GOOS=linux GOARCH=386 make release-client
64-битный Linux-клиент: GOOS=linux GOARCH=amd64 make release-client
32-битный клиент Windows: GOOS=windows GOARCH=386 make release-client
64-битный клиент Windows: GOOS=windows GOARCH=amd64 make release-client
32-битный клиент платформы Mac: GOOS=darwin GOARCH=386 make release-client
Клиент 64-битной платформы Mac: GOOS=darwin GOARCH=amd64 make release-client
Linux-клиент платформы ARM: GOOS=linux GOARCH=arm make release-client

Вот 64-битные клиенты Linux и 64-битные Windows, скомпилированные в системе Mac.

Язык кода:javascript
копировать
GOOS=linux GOARCH=amd64 make release-client
GOOS=windows GOARCH=amd64 make release-client
GOOS=darwin GOARCH=amd64 make release-client

После последовательного выполнения этих трех команд все клиентские файлы будут созданы в каталоге bin. Клиентская платформа — это имя папки, а клиент помещается в соответствующий каталог. Текущий клиент платформы Linux находится непосредственно в каталоге bin. . программа нгрока

6. Настройте стартовый сервер

  • httpAddr — это номер порта, используемый для доступа к обычному http. Используйте имя субдомена .ngrok.xgss.net позже для доступа к службе.
  • httpsAddr — это номер порта, используемый для доступа к https, такой же, как указано выше, за исключением того, что этот порт используется только тогда, когда требуется доступ к службе https (обычно не используется).
  • TunnelAddr — номер порта канала ngrok. Этот порт используется Ngrok для связи, поэтому настройки порта на сервере и клиенте должны соответствовать обычному каналу. Порт по умолчанию — 4443.

Полная команда:

Язык кода:javascript
копировать
bin/ngrokd -domain="$NGROK_DOMAIN" -httpAddr=":80" -httpsAddr=":443" -tunnelAddr=":4443"

что я использую

Язык кода:javascript
копировать
bin/ngrokd -domain="$NGROK_DOMAIN" -httpAddr=":80"
nohup /data/ngrok/bin/ngrokd -domain="ngrok.xgss.net" -httpAddr=":80" -httpsAddr=":443" -tunnelAddr=":4443" &
Нет вывода nohup.out
nohup /data/ngrok/bin/ngrokd -domain="ngrok.xgss.net" -httpAddr=":80" -httpsAddr=":443" -tunnelAddr=":4443" >/dev/null 2>&1 &

7. Автозапуск конфигурации сервера

Язык кода:javascript
копировать
chmod +x /etc/rc.d/rc.local
echo 'nohup /data/ngrok/bin/ngrokd -domain="ngrok.xgss.net" -httpAddr=":80" -httpsAddr=":443" -tunnelAddr=":4443" >/dev/null 2>&1 &' >> /etc/rc.d/rc.local
​
​
# Это нормально?
# netstat -tunpl|grep ngrok
tcp6       0      0 :::80                   :::*                    LISTEN      21387/ngrokd        
tcp6       0      0 :::4443                 :::*                    LISTEN      21387/ngrokd        
tcp6       0      0 :::443                  :::*                    LISTEN      21387/ngrokd   
​
# curl http://ngrok.xgss.net
Tunnel ngrok.xgss.net not found
нормальный

Контролируйте службу ngork и автоматически запускайте ее, если служба аварийно завершает работу.

Язык кода:javascript
копировать
​
vi /root/jiankong.sh
Напишите следующее:
#!/bin/bash
process_pid=`ps -aux|grep -v 'grep'|grep -c 'ngrok'`
#echo "$process_pid"
#Количество ключевых слов, которые можно использовать grep -c
​
if [ $process_pid -eq 0 ]
    then
    pkill ngrok
    nohup /data/ngrok/bin/ngrokd -domain=ngrok.7477.com -httpAddr=:80 -httpsAddr=:443 -tunnelAddr=:4443 >/dev/null 2>&1 &
    now=`date  +%Y-%m-%d[%H:%M:%S]`
    echo "at $now start ngrok" >> /data/restart_ngrok.log
fi
​
​

Запланированное выполнение

Язык кода:javascript
копировать
# chmod +x /root/jiankong.sh
# echo '*/5 * * * * root /root/jiankong.sh' >> /etc/crontab
# systemctl restart crond

тест

Язык кода:javascript
копировать
# cat /data/restart_ngrok.log
# pkill ngrok
# /root/jiankong.sh
# # cat /data/restart_ngrok.log
at 2023-11-27[15:16:57] start ngrok

На этом установка ngrok завершена.

Загрузите файлы клиента ngrok

Скачать клиент

Язык кода:javascript
копировать
ls /data/ngrok/bin
darwin_386  darwin_amd64  go-bindata  linux_386  linux_arm  ngrok  ngrokd  windows_386  windows_amd64

в /data/ngrok/bin/ngrok Это Linux-клиент
в windows_amd64 Это клиент Windows
# cd /data/ngrok/bin
# tar -zcvf ngork-client.tar.gz ngrok darwin_amd64/ windows_amd64/
ngrok
darwin_amd64/
darwin_amd64/ngrok
windows_amd64/
windows_amd64/ngrok.exe
Пучок ngork-client.tar.gz Конфигурация загрузки файлов.

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

Загрузите файл сервера ngrok /data/ngrok/bin/ngrok на Synology NAS в каталоге 192.168.1.4 /root/ngrok:

Synology использует ngork для сопоставления портов SSH

Требования: Настройка сопоставления 22 портов ngork на Synology.

Язык кода:javascript
копировать
root@star-nas:~# mkdir  /root/ngrok
root@star-nas:~# vi /root/ngrok/start_ngrok.sh

# cat start_ngrok.sh 
#!/bin/bash
pkill ngrok
#ngrok-webprotocol
/root/ngrok/ngrok -subdomain=nas -config="/root/ngrok/ngrok.cfg" 5000 >/dev/null 2>&1 &

root@star-nas:~/ngrok# cat /root/ngrok/ngrok.cfg
server_addr: "ngrok.xgss.net:4443"
trust_host_root_certs: false
root@star-nas:~/ngrok# chmod +x /root/ngrok/start_ngrok.sh

Synology использует ngork для сопоставления веб-портов

Требования: Настройте порт 80 ngork на Synology для сопоставления с общедоступной сетью.

Создайте новый файл конфигурации:

Язык кода:javascript
копировать
mkdir /data/ngrok
vi /data/ngrok/ngrok_8000.cfg
Заполните содержимое

server_addr: "ngrok.xgss.net:4443"
trust_host_root_certs: false

vi /data/ngrok/ngrok_8082.cfg
Заполните содержимое
server_addr: "ngrok.xgss.net:4443"
trust_host_root_certs: false
Загрузите файл ngrok, сгенерированный на сервере, в каталог /data/ngrok/.
chmod +x /data/ngrok/ngrok
nohup /data/ngrok/ngrok -log=/data/ngrok/ngrok_8000.log -subdomain=seafiles -config="/data/ngrok/ngrok_8000.cfg" 8000 &
nohup /data/ngrok/ngrok -log=/data/ngrok/ngrok_8082.log -subdomain=down -config="/data/ngrok/ngrok_8082.cfg" 8082 &
netstat -tunpl |grep ngrok
tcp        0      0 127.0.0.1:4040          0.0.0.0:*               LISTEN      20609/ngrok

бревно: -log=/data/ngrok/ngrok_8000.log Он записывает журнал ngrok. Если вы добавите этот параметр во время ранней отладки, вы сможете проверить, в чем проблема, если вы не можете получить к нему доступ. Имя субдомена: -subdomain=seafiles Это имя поддомена, определенное при доступе. Посетите сейчас. seafiles.ngrok.xgss.net Вы можете получить доступ к службе через порт 8000 на этом компьютере.

Язык кода:javascript
копировать
ngrok
Tunnel Status online
Version 1.7/1.7
Forwarding https://test.ngrok.xgss.net -> 127.0.0.1:80
Forwarding http://test.ngrok.xgss.net -> 127.0.0.1:80
Web Interface 127.0.0.1:4040
Conn 0
Avg Conn Time 0.00ms

Если здесь не произойдет ничего неожиданного, он запустится успешно. Когда вы получите доступ к test.ngrok.xgss.net, это будет ваш локальный IP-адрес. Вы можете настроить доменное имя test.ngrok.xgss.net через apache или nginx, чтобы указать свой каталог. чтобы начать использовать его.

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

Создайте новый каталог ngrok на диске D. Как показано на рисунке, есть четыре файловые функции:

add.bat — добавить start.bat в элемент загрузки, ngrok.cfg — конфигурация порта, ngrok.exe — файл, загружаемый сервером, start.bat запускает ngrok

содержимое add.bat

Язык кода:javascript
копировать
reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v lin /t REG_SZ /d D:\ngrok\start.bat /f

Содержимое ngrok.cfg

Язык кода:javascript
копировать
server_addr: "ngrok.xgss.net:4443"
trust_host_root_certs: false

tunnels:
    mstsc:
        remote_port: 3378
        proto:
         tcp: "127.0.0.1:3389"

Содержимое start.bat

Язык кода:javascript
копировать
D:
cd D:\ngrok
ngrok -config=ngrok.cfg start mstsc

Дважды щелкните start.bat.

Используйте тестовую сеть 4G мобильного телефона для удаленного подключения к машине.

Адрес: ngrok.xgss.net:3378

Вы можете подключиться удаленно.

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 и детали кода