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
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
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