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

что такое фрп

frp — это высокопроизводительное приложение обратного прокси, ориентированное на проникновение во внутреннюю сеть. Оно поддерживает несколько протоколов, таких как TCP, UDP, HTTP, HTTPS, и поддерживает P2P-связь. Услуги интрасети могут быть доступны в общедоступной сети посредством транзита через IP-узлы общедоступной сети безопасным и удобным способом. Сегодня я хотел бы поделиться с вами тем, как frp может достичь проникновения во внутреннюю сеть.

Зачем использовать frp?

Развернув сервер frp на узле с общедоступным IP-адресом, вы сможете легко проникнуть через интранет-сервис в общедоступную сеть и предоставить множество профессиональных функций, в том числе:

  1. Связь клиент-сервер поддерживает несколько протоколов, таких как TCP, QUIC, KCP и Websocket.
  2. Воспользуйтесь потоковым мультиплексированием TCP-соединений, чтобы передавать больше запросов между одним соединением, экономя время на установление соединения и уменьшая задержку запроса.
  3. Балансировка нагрузки между группами прокси.
  4. Повторное использование портов, использование одного и того же порта сервера несколькими службами.
  5. поддерживать P2P коммуникация,Трафик не передается через сервер,Полностью используйте ресурсы полосы пропускания.
  6. Несколько нативныхподдерживатьклиентплагин(Просмотр статических файлов,HTTPS/HTTP Преобразование протоколов, HTTP, SOCK5 агент и т. д.) для удобного самостоятельного использования frp Клиент выполняет некоторую работу.
  7. Высокомасштабируемая система плагинов на стороне сервера позволяет легко расширять функции в соответствии с вашими потребностями.
  8. Страницы пользовательского интерфейса сервера и клиента.

Адрес открытого исходного кода: https://github.com/fatedier/frp

установить фрп

скачать фрп

  1. Перейти к страница релизов frp на GitHub,Найдите последнюю версию. Например,Предполагая, что последняя версия v0.52.3
  2. Скачать для CentOS Бинарные файлы frpсервера для 7 архитектур. Например, для 64-битной архитектуры вы можете использовать:
Язык кода:javascript
копировать
mkdir -p /data/
cd /data/
wget https://github.com/fatedier/frp/releases/download/v0.52.3/frp_0.52.3_linux_amd64.tar.gz

Разархивируйте скачанный файл:

Язык кода:javascript
копировать
tar zxvf frp_0.52.3_linux_amd64.tar.gz 
mv frp_0.52.3_linux_amd64 frp
# ll
total 29996
-rwxr-xr-x 1 1001 127 13905920 Oct 24 10:56 frpc
-rw-r--r-- 1 1001 127      142 Oct 24 10:57 frpc.toml
-rwxr-xr-x 1 1001 127 16789504 Oct 24 10:56 frps
-rw-r--r-- 1 1001 127       16 Oct 24 10:57 frps.toml
-rw-r--r-- 1 1001 127    11358 Oct 24 10:57 LICENSE

Настроить frp-сервер

Добавьте конфигурацию сервера frp. Вот пример:

Информацию о том, как писать файлы конфигурации, см.: https://gofrp.org/zh-cn/docs/examples/

Язык кода:javascript
копировать
vi frps.toml
bindPort = 7000
vhostHTTPPort = 80
# auth.token = "abcdef" #Проверка безопасности не может иметь цифр

Запустите сервер с помощью следующей команды: ./frps -c ./frps.toml

Язык кода:javascript
копировать
./frps -c ./frps.toml
2023/11/28 13:34:03 [I] [root.go:102] frps uses config file: ./frps.toml
2023/11/28 13:34:03 [I] [service.go:200] frps tcp listen on 0.0.0.0:7000
2023/11/28 13:34:03 [I] [root.go:111] frps started successfully

Конфигурация брандмауэра

Если брандмауэр включен, откройте необходимые порты (по умолчанию 7000):

Порт прослушивания HTTP-запросов — 80.

Язык кода:javascript
копировать
sudo firewall-cmd --zone=public --add-port=7000/tcp --permanent
sudo firewall-cmd --reload
или ВОЗ
iptables -A INPUT -p tcp --dport 7000 -j ACCEPT
service iptables save
systemctl restart iptables.service
​
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -p tcp --match multiport --dports 6000:7000 -j ACCEPT #Открываем порты 6000-7000 пакетно.
service iptables save
systemctl restart iptables
​
service iptables save
systemctl restart iptables

Настройте службу systemd (необязательно, но рекомендуется)

Создайте служебный файл frp systemd:

Язык кода:javascript
копировать
vi /etc/systemd/system/frps.service

Добавьте следующее:

Язык кода:javascript
копировать
[Unit]
Description=frpсервер
After=network.target
​
[Service]
Type=simple
ExecStart=/data/frp/frps -c /data/frp/frps.toml
Restart=on-failure
​
[Install]
WantedBy=multi-user.target

Включите и запустите службу frp:

Язык кода:javascript
копировать
systemctl enable frps
systemctl start frps

Убедитесь, что служба запущена

Язык кода:javascript
копировать
systemctl restart frps
# netstat -tunpl|grep 7000
tcp6       0      0 :::7000                 :::*                    LISTEN      19949/frps   

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

скачать клиент фрп

Войдите в Synology, используя ssh-соединение,

Загрузите клиент frp для архитектуры Synology.

Перейдите на страницу выпуска frp GitHub, чтобы найти версию для Synology. Обязательно загрузите клиент frp, соответствующий архитектуре Synology.

скачать клиент фрп。

Язык кода:javascript
копировать
cd /root
wget https://github.com/fatedier/frp/releases/download/v0.52.3/frp_0.52.3_linux_amd64.tar.gz
tar -zxvf frp_0.52.3_linux_amd64.tar.gz 
mv frp_0.52.3_linux_amd64 frp
cd /root/frp
ls
frpc  frpc.toml  frps  frps.toml  LICENSE

Настроить клиент frp

Язык кода:javascript
копировать
vi frpc.toml
Язык кода:javascript
копировать
[common]
serverAddr = "127.0.0.1"
serverPort = 7000

[[proxies]]
name = "stars-nas-ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6000

Замените serverAddr на IP-адрес сервера frp.

Убедитесь, что токен соответствует токену, настроенному на сервере frp.

При необходимости настройте другие правила переадресации портов. В приведенном выше примере локальная служба SSH (локальный порт 22) сопоставляется с удаленным портом 6000.

Запустить клиент frp

Язык кода:javascript
копировать
# /root/frp/frpc -c /root/frp/frpc.toml
2023/11/28 13:58:38 [I] [root.go:139] start frpc service for config file [/root/frp/frpc.toml]
2023/11/28 13:58:38 [I] [service.go:299] [c22cfeca075e01e1] login to server success, get run id [c22cfeca075e01e1]

Если вам нужно запустить его в фоновом режиме, вы можете использовать что-то вроде nohup ./frpc -c frpc.ini & Такой порядок.

nohup /root/frp/frpc -c /root/frp/frpc.toml >/dev/null 2>&1 &

тест:

Язык кода:javascript
копировать
ssh -o Port=6000 user@{frpсерверip}
Synology strongly advises you not to run commands as the root user, who has
the highest privileges on the system. Doing so may cause major damages
to the system. Please note that if you choose to proceed, all consequences are
at your own risk.
user@star-nas:~$ 

На этом этапе вы можете войти в систему удаленно через ssh.

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

открыть Интернет и SSH

Язык кода:javascript
копировать
vi /root/frp/frpc.toml
serverAddr = "xx.xx.xx.xx"
serverPort = 7000

[[proxies]]
name = "stars-nas-ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 60920
remotePort = 6000

[[proxies]]
name = "web"
type = "http"
localPort = 80
customDomains = ["nasweb.frp.xgss.net"]

[[proxies]]
name = "web2"
type = "http"
localPort = 5000
customDomains = ["nas.frp.xgss.net"]

исследовать

Проникновение в интранет успешно.

Если вы используете vhostHTTPPort = 8080, к доменному имени, доступному здесь, необходимо добавить порт:

Язык кода:javascript
копировать
nasweb.frp.xgss.net:8080
nas.frp.xgss.net:80

клиент Windows

Скачать клиент для Windows

Перейти к страница релизов frp на GitHub,Найдите последнюю версию

Язык кода:javascript
копировать
https://github.com/fatedier/frp/releases/download/v0.52.3/frp_0.52.3_windows_amd64.zip

Загрузите и извлеките на рабочий стол.

Отредактируйте файл конфигурации frpc.toml.

Язык кода:javascript
копировать
serverAddr = "x.x.x.x"
serverPort = 7000

[[proxies]]
name = "test-tcp"
type = "tcp"
localIP = "127.0.0.1"
localPort = 3389
remotePort = 6002

Напишите start.bat и запустите

Отредактируйте его с помощью блокнота и запустите от имени администратора.

Язык кода:javascript
копировать
@echo off
cd /d C:\Users\Administrator\Desktop\frp
frpc.exe -c frpc.toml

Проверьте удаленный вход.

Проверка конфигурации

Параметры в файле конфигурации можно предварительно проверить, выполнив команду frpcverify -c ./frpc.toml или frpsverify -c ./frps.toml.

Язык кода:javascript
копировать
./frps verify -c ./frps.toml 
frpc: the configuration file ./frpc.toml syntax is ok

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

Разделение конфигурации

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

Язык кода:javascript
копировать
# frpc.toml
serverAddr = "x.x.x.x"
serverPort = 7000
includes = ["./confd/*.toml"]
# ./confd/test.toml
[[proxies]]
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6000

Вышеуказанная конфигурация находится в frpc.toml серединапроходить includes дополнительно включено ./confd Все в каталоге toml Содержимое файла конфигурации прокси-сервера эквивалентно объединению двух файлов в один.

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

Токен аутентификации безопасности

Аутентификация по токену — это простой метод аутентификации. Вам нужно только настроить один и тот же токен в файлах конфигурации frpc клиента frp и frps сервера.

Пример конфигурации

Язык кода:javascript
копировать
# frps.toml
bindPort = 7000
auth.token = "abc"

# frpc.toml
auth.token = "abc"

Подвести итог

ngrok и frp имеют свои преимущества и недостатки

Преимущества нгрока:

Простота в использовании: ngrok имеет очень простой пользовательский интерфейс и удобные в использовании инструменты командной строки, что значительно упрощает проникновение во внутреннюю сеть.

Быстрая настройка: вам не обязательно иметь собственный сервер, просто загрузите клиент ngrok, чтобы начать его использовать.

Кроссплатформенная поддержка: ngrok поддерживает несколько операционных систем, включая Windows, Linux, macOS и т. д.

Оснащен функциями безопасности: ngrok обеспечивает базовую аутентификацию, передачу с шифрованием TLS и другие функции безопасности.

Недостатки нгрока:

Ограниченная и платная версии: ngrok предоставляет бесплатную версию, но ее функции ограничены, например, ограничения на количество одновременных подключений и туннелей. Платная версия предлагает более расширенные функции.

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

Преимущества ФРП:

Открытый исходный код и бесплатно: frp — это программное обеспечение с открытым исходным кодом, бесплатное в использовании и поддерживаемое активным сообществом. Гибкая конфигурация: frp предоставляет гибкие возможности настройки, позволяя пользователям выполнять сопоставление портов, переадресацию TCP/UDP и т. д. Самостоятельное размещение: вы можете легко создать службу frp и управлять ею на своем собственном сервере. Поддерживает несколько типов прокси: включая TCP, HTTP, UDP и другие типы прокси.

Недостатки ФРП:

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

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