frp — это высокопроизводительное приложение обратного прокси, ориентированное на проникновение во внутреннюю сеть. Оно поддерживает несколько протоколов, таких как TCP, UDP, HTTP, HTTPS, и поддерживает P2P-связь. Услуги интрасети могут быть доступны в общедоступной сети посредством транзита через IP-узлы общедоступной сети безопасным и удобным способом. Сегодня я хотел бы поделиться с вами тем, как frp может достичь проникновения во внутреннюю сеть.
Развернув сервер frp на узле с общедоступным IP-адресом, вы сможете легко проникнуть через интранет-сервис в общедоступную сеть и предоставить множество профессиональных функций, в том числе:
Адрес открытого исходного кода: https://github.com/fatedier/frp
v0.52.3
。mkdir -p /data/
cd /data/
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
# 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. Вот пример:
Информацию о том, как писать файлы конфигурации, см.: https://gofrp.org/zh-cn/docs/examples/
vi frps.toml
bindPort = 7000
vhostHTTPPort = 80
# auth.token = "abcdef" #Проверка безопасности не может иметь цифр
Запустите сервер с помощью следующей команды: ./frps -c ./frps.toml
./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.
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
Создайте служебный файл frp systemd:
vi /etc/systemd/system/frps.service
Добавьте следующее:
[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:
systemctl enable frps
systemctl start frps
Убедитесь, что служба запущена
systemctl restart frps
# netstat -tunpl|grep 7000
tcp6 0 0 :::7000 :::* LISTEN 19949/frps
Войдите в Synology, используя ssh-соединение,
Загрузите клиент frp для архитектуры Synology.
Перейдите на страницу выпуска frp GitHub, чтобы найти версию для Synology. Обязательно загрузите клиент frp, соответствующий архитектуре Synology.
скачать клиент фрп。
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
vi frpc.toml
[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.
# /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 &
тест:
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.
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, к доменному имени, доступному здесь, необходимо добавить порт:
nasweb.frp.xgss.net:8080
nas.frp.xgss.net:80
Перейти к страница релизов frp на GitHub,Найдите последнюю версию
https://github.com/fatedier/frp/releases/download/v0.52.3/frp_0.52.3_windows_amd64.zip
Загрузите и извлеките на рабочий стол.
serverAddr = "x.x.x.x"
serverPort = 7000
[[proxies]]
name = "test-tcp"
type = "tcp"
localIP = "127.0.0.1"
localPort = 3389
remotePort = 6002
Отредактируйте его с помощью блокнота и запустите от имени администратора.
@echo off
cd /d C:\Users\Administrator\Desktop\frp
frpc.exe -c frpc.toml
Проверьте удаленный вход.
Параметры в файле конфигурации можно предварительно проверить, выполнив команду frpcverify -c ./frpc.toml или frpsverify -c ./frps.toml.
./frps verify -c ./frps.toml
frpc: the configuration file ./frpc.toml syntax is ok
Если этот результат возникает, это означает, что новый файл конфигурации не содержит ошибок, в противном случае будет выведена конкретная информация об ошибке.
проходить includes
Параметры могут включать в основную конфигурацию другие файлы конфигурации, таким образом реализуя Разделение Воля прокси. конфигурация для управления несколькими файлами.
# 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 сервера.
# 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, вам необходимо иметь собственный сервер и выполнить соответствующее развертывание и обслуживание.