1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/wefeng-frp

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Мы можем предоставить HTTP или HTTPS-сервис с помощью FRP.

  1. Измените frps.ini, настройте порт HTTP 8080:
# frps.ini
[common]
bind_port = 7000
vhost_http_port = 8080
  1. Запустите FRPS:

./frps -c ./frps.ini

  1. Измените frpc.ini и установите IP удалённого сервера FRPS как x.x.x.x. local_port — это порт вашего веб-сервиса:
# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000

[web]
type = http
local_port = 80
custom_domains = www.yourdomain.com
  1. Запустите frpc:

./frpc -c ./frpc.ini

  1. Разрешите запись A для www.yourdomain.com на IP x.x.x.x или запись CNAME на ваш исходный домен.

  2. Теперь посетите свой локальный веб-сервис, используя URL http://www.yourdomain.com:8080.

Переадресация запроса DNS

  1. Измените frps.ini:
# frps.ini
[common]
bind_port = 7000
  1. Запустите FRPS:

./frps -c ./frps.ini

  1. Измените frpc.ini, установите IP удалённого FRPS-сервера как x.x.x.x, переадресуйте запрос DNS-запроса на сервер Google DNS 8.8.8.8:53:
# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000

[dns]
type = udp
local_ip = 8.8.8.8
local_port = 53
remote_port = 6000
  1. Запустите frpc:

./frpc -c ./frpc.ini

  1. Отправьте запрос DNS с помощью команды dig:

dig @x.x.x.x -p 6000 www.google.com

Перенаправление через сокет Unix-домена

Используя TCP-порт для подключения к сокету Unix-домена, например, демона Docker.

Настройте FRPS так же, как указано выше.

  1. Запустите frpc с конфигурациями:
# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000

[unix_domain_socket]
type = tcp
remote_port = 6000
plugin = unix_domain_socket
plugin_unix_path = /var/run/docker.sock
  1. Получите версию Docker с помощью команды curl:

curl http://x.x.x.x:6000/version

Предоставление простого HTTP-файлового сервера

Простой способ просмотра файлов в локальной сети.

Настройте FRPS так же, как указано выше.

  1. Запустите frpc с конфигурациями:
# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000

[test_static_file]
type = tcp
remote_port = 6000
plugin = static_file
plugin_local_path = /tmp/file
plugin_strip_prefix = static
plugin_http_user = abc
plugin_http_passwd = abc
  1. Посетите http://x.x.x.x:6000/static/ с помощью браузера, введите правильные имя пользователя и пароль, чтобы увидеть файлы в /tmp/file.

Включение HTTPS для локального HTTP-сервиса

  1. Запустите frpc с конфигурациями:
# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000

[test_htts2http]
type = https
custom_domains = test.yourdomain.com

plugin = https2http
plugin_local_addr = 127.0.0.1:80
plugin_crt_path = ./server.crt
plugin_key_path = ./server.key
plugin_host_header_rewrite = 127.0.0.1
  1. Посетите https://test.yourdomain.com.

Предоставьте свой сервис в безопасности

Для некоторых сервисов прямое предоставление их общедоступной сети может представлять угрозу безопасности.

stcp (секретный TCP) помогает создать прокси, избегая любого доступа к нему.

Настройте FRPS так же, как указано выше.

  1. Запустите frpc, перенаправьте порт SSH, а remote_port не нужен:
# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000

[secret_ssh]
type = stcp
sk = abcdefg
local_ip = 127.0.0.1
local_port = 22
  1. Запустите ещё один frpc, в котором вы хотите подключиться к этому SSH-серверу:
# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000

[secret_ssh_visitor]
type = stcp
role = visitor
server_name = secret_ssh
sk = abcdefg
bind_addr = 127.0.0.1
bind_port = 6000
  1. Подключитесь к серверу в локальной сети по SSH, предполагая, что имя пользователя — test:

ssh -oPort=6000 test@127.0.0.1

Режим P2P

xtcp предназначен для передачи большого объёма данных напрямую между двумя клиентами.

Теперь он не может проникать через все типы устройств NAT. Вы можете попробовать stcp, если xtcp не работает.

  1. Настройте UDP-порт для xtcp:
bind_udp_port = 7001
  1. Запустите frpc, перенаправьте порт SSH и remote_port не нужны:
# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000

[p2p_ssh]
type = xtcp
sk = abcdefg
local_ip = 127.0.0.1 **Без UDP**

Здесь приведён пример для сервиса https:

```ini
# frpc.ini
[web]
type = https
local_port = 443
custom_domains = test.yourdomain.com

# теперь поддерживается версия v1 и v2
proxy_protocol_version = v2

Вы можете включить поддержку Proxy Protocol в nginx, чтобы анализировать реальный IP-адрес пользователя в заголовке HTTP X-Real-IP.

Затем вы можете получить его из заголовка HTTP-запроса в вашем локальном сервисе.

Защита веб-сервиса паролем

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

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

Её можно включить только тогда, когда тип прокси — http.

# frpc.ini
[web]
type = http
local_port = 80
custom_domains = test.yourdomain.com
http_user = abc
http_pwd = abc

Посетите http://test.yourdomain.com, и теперь вам нужно ввести имя пользователя и пароль.

Пользовательские имена поддоменов

Удобно использовать конфигурацию subdomain для типов http и https, когда многие люди используют один сервер frps вместе.

# frps.ini
subdomain_host = frps.com

Разрешите *.frps.com на IP-адрес сервера frps.

# frpc.ini
[web]
type = http
local_port = 80
subdomain = test

Теперь вы можете посетить свой веб-сервис по хосту test.frps.com.

Обратите внимание, что если subdomain_host не пуст, custom_domains не должен быть поддоменом subdomain_host.

Маршрутизация URL

frp поддерживает переадресацию HTTP-запросов на разные обратные веб-сервисы с помощью маршрутизации URL.

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

# frpc.ini
[web01]
type = http
local_port = 80
custom_domains = web.yourdomain.com
locations = /

[web02]
type = http
local_port = 81
custom_domains = web.yourdomain.com
locations = /news,/about

HTTP-запросы с префиксом URL /news и /about будут перенаправлены на web02, а остальные — на web01.

Подключение frps через HTTP PROXY

frpc может подключаться к frps с использованием HTTP PROXY, если вы установите среду ОС HTTP_PROXY или настроите параметр http_proxy в файле frpc.ini.

Он работает только тогда, когда протокол — tcp.

# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000
http_proxy = http://user:pwd@192.168.1.128:8080

Отображение портов диапазона

Имя прокси с префиксом range: будет поддерживать сопоставление портов диапазона.

# frpc.ini
[range:test_tcp]
type = tcp
local_ip = 127.0.0.1
local_port = 6000-6006,6007
remote_port = 6000-6006,6007

frpc сгенерирует 8 прокси, таких как test_tcp_0, test_tcp_1... test_tcp_7.

Плагин

По умолчанию frpc только пересылает запрос на локальный порт tcp или udp.

Плагин используется для предоставления расширенных функций. Существуют встроенные плагины, такие как unix_domain_socket, http_proxy, socks5, static_file, и вы можете увидеть пример использования.

Укажите, какой плагин использовать, с помощью параметра plugin. Параметры конфигурации плагина должны начинаться с plugin_. local_ip и local_port бесполезны для плагина.

Используя плагин http_proxy:

# frpc.ini
[http_proxy]
type = tcp
remote_port = 6000
plugin = http_proxy
plugin_http_user = abc
plugin_http_passwd = abc

plugin_http_user и plugin_http_passwd — это параметры конфигурации, используемые в плагине http_proxy.

План разработки

  • Регистрировать информацию о HTTP-запросах во frps.

Вклад

Хотите поучаствовать? Мы хотели бы помочь вам!

  • Взгляните на наш список проблем и рассмотрите отправку запроса на вытягивание в ветку dev.
  • Если вы хотите добавить новую функцию, пожалуйста, сначала создайте проблему, чтобы описать новую функцию, а также подход к реализации. Как только предложение будет принято, создайте реализацию новых функций и отправьте её в виде запроса на вытягивание.
  • Извините за мой плохой английский, и мы будем рады улучшить этот документ, даже если это просто исправление опечатки.
  • Если у вас есть какие-то замечательные идеи, отправьте электронное письмо на адрес fatedier@gmail.com.

Примечание: Мы предпочитаем, чтобы вы давали свои советы в проблемах, чтобы другие могли задать тот же вопрос. Если FRP вам сильно помог, вы можете поддержать нас:

Группа FRP в QQ: 606194980.

AliPay

donation-alipay

Wechat Pay

donation-wechatpay

Paypal

Пожертвуйте деньги через paypal на мой счёт fatedier@gmail.com.

Комментарии ( 0 )

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

Введение

Описание недоступно Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/wefeng-frp.git
git@api.gitlife.ru:oschina-mirror/wefeng-frp.git
oschina-mirror
wefeng-frp
wefeng-frp
master