[GH-ISSUE #1003] frpc连接frps成功,内网穿透访问失败 #793

Closed
opened 2026-05-05 12:30:25 -06:00 by gitea-mirror · 18 comments
Owner

Originally created by @droplet-js on GitHub (Dec 10, 2018).
Original GitHub issue: https://github.com/fatedier/frp/issues/1003

Issue is only used for submiting bug report and documents typo. If there are same issues or answers can be found in documents, we will close it directly.
(为了节约时间,提高处理问题的效率,不按照格式填写的 issue 将会直接关闭。)

Use the commands below to provide key information from your environment:
You do NOT have to include this information if this is a FEATURE REQUEST

What version of frp are you using (./frpc -v or ./frps -v)?

./frpc -v
0.21.0
./frps -v
0.21.0

What operating system and processor architecture are you using (go env)?
docker: hyperapp/frp

  frps:
    container_name: frps
    image: hyperapp/frp
    restart: always
    hostname: frps
    ports:
#      - 80
#      - 443
#      - 6000
      - 7000:7000
#      - 7500
    volumes:
      - ./frp/frps.ini:/frps.ini
    command: -c frps.ini
    entrypoint:
      - /frps
    labels:
      - "traefik.frp.backend=frp"
      - "traefik.frp.port=80"
      - "traefik.frp.frontend.entryPoints=http"
      - "traefik.frp.frontend.rule=Host:frp.${SERVER_DOMAIN},*.frp.${SERVER_DOMAIN}"
      - "traefik.frps.backend=frps"
      - "traefik.frps.port=7500"
      - "traefik.frps.frontend.entryPoints=http"
      - "traefik.frps.frontend.rule=Host:frps.${SERVER_DOMAIN}"
  www:
    container_name: www
    image: nginx:1.15.6
    restart: always
    hostname: www
#    ports:
#      - 80
    volumes:
      - ../dev-ops-repo/www/html:/usr/share/nginx/html
    environment:
      - TZ=${TIME_ZONE}
  frpc:
    container_name: frpc
    image: hyperapp/frp
    restart: always
    hostname: frpc
#    ports:
#      - 80
#      - 443
#      - 6000
#      - 7000
#      - 7500
    network_mode: host
    volumes:
      - ./frp/frpc.ini:/frpc.ini
    command: -c frpc.ini
    entrypoint:
      - /frpc
    depends_on:
      - www

Configures you used:
frps.ini

[common]
bind_addr = 0.0.0.0
bind_port = 7000

# udp
# bind_udp_port = 7001

# http/ https
vhost_http_port = 80
# vhost_https_port = 443

# dashboard
dashboard_addr = 0.0.0.0
dashboard_port = 7500
dashboard_user = frps
dashboard_pwd = frps

# trace, debug, info, warn, error
log_level = info

# auth token
# token = frps

# subdomain
subdomain_host = frp.{your domain}.com

frpc.ini

[common]
server_addr = frp.{your domain}.com
server_port = 7000

# trace, debug, info, warn, error
log_level = trace

# auth token
# token = frps

[www]
type = http
local_ip = www
local_port = 80
subdomain = www

Steps to reproduce the issue:

Describe the results you received:

  1. frpc 可以正常连接 frps,frps dashboard 也能正常访问,并发现注册的服务
    2.内网穿透访问失败

Describe the results you expected:

Additional information you deem important (e.g. issue happens only occasionally):
frpc log

2018/12/10 11:43:58 [I] [proxy_manager.go:300] proxy removed: []
2018/12/10 11:43:58 [I] [proxy_manager.go:310] proxy added: [www]
2018/12/10 11:43:58 [I] [proxy_manager.go:333] visitor removed: []
2018/12/10 11:43:58 [I] [proxy_manager.go:342] visitor added: []
2018/12/10 11:43:58 [I] [control.go:246] [8e5d1657db18a759] login to server success, get run id [8e5d1657db18a759], server udp port [0]
2018/12/10 11:43:58 [I] [control.go:169] [8e5d1657db18a759] [www] start proxy success
2018/12/10 11:44:28 [D] [control.go:340] [8e5d1657db18a759] send heartbeat to server
2018/12/10 11:44:28 [D] [control.go:361] [8e5d1657db18a759] receive heartbeat from server

frps log

2018/12/10 11:43:41 [I] [service.go:130] frps tcp listen on 0.0.0.0:7000
2018/12/10 11:43:41 [I] [service.go:172] http service listen on 0.0.0.0:80
2018/12/10 11:43:41 [I] [service.go:216] Dashboard listen on 0.0.0.0:7500
2018/12/10 11:43:41 [I] [root.go:207] Start frps success
2018/12/10 11:43:51 [I] [dashboard_api.go:67] Http request: [/api/serverinfo]
2018/12/10 11:43:51 [I] [dashboard_api.go:64] Http response [/api/serverinfo]: code [0]
2018/12/10 11:43:51 [I] [dashboard_api.go:178] Http request: [/api/proxy/http]
2018/12/10 11:43:51 [I] [dashboard_api.go:174] Http response [/api/proxy/http]: code [0]
2018/12/10 11:43:51 [I] [dashboard_api.go:175] /api/proxy/http
2018/12/10 11:43:51 [I] [dashboard_api.go:176] 
2018/12/10 11:43:58 [I] [service.go:319] client login info: ip [112.111.40.24:53131] version [0.21.0] hostname [] os [linux] arch [amd64]
2018/12/10 11:43:58 [I] [proxy.go:291] [8e5d1657db18a759] [www] http proxy listen for host [www.frp.{your domain}.com] location []
2018/12/10 11:43:58 [I] [control.go:335] [8e5d1657db18a759] new proxy [www] success
2018/12/10 11:44:00 [I] [dashboard_api.go:67] Http request: [/api/serverinfo]
2018/12/10 11:44:00 [I] [dashboard_api.go:64] Http response [/api/serverinfo]: code [0]
2018/12/10 11:44:00 [I] [dashboard_api.go:178] Http request: [/api/proxy/http]
2018/12/10 11:44:00 [I] [dashboard_api.go:174] Http response [/api/proxy/http]: code [0]
2018/12/10 11:44:00 [I] [dashboard_api.go:175] /api/proxy/http
2018/12/10 11:44:00 [I] [dashboard_api.go:176] 
2018/12/10 11:44:02 [I] [dashboard_api.go:309] Http request: [/api/traffic/www]
2018/12/10 11:44:02 [I] [dashboard_api.go:307] Http response [/api/traffic/www]: code [0]

Can you point out what caused this issue (optional)

Originally created by @droplet-js on GitHub (Dec 10, 2018). Original GitHub issue: https://github.com/fatedier/frp/issues/1003 Issue is only used for submiting bug report and documents typo. If there are same issues or answers can be found in documents, we will close it directly. (为了节约时间,提高处理问题的效率,不按照格式填写的 issue 将会直接关闭。) Use the commands below to provide key information from your environment: You do NOT have to include this information if this is a FEATURE REQUEST **What version of frp are you using (./frpc -v or ./frps -v)?** ```` ./frpc -v 0.21.0 ```` ```` ./frps -v 0.21.0 ```` **What operating system and processor architecture are you using (`go env`)?** docker: hyperapp/frp ```` frps: container_name: frps image: hyperapp/frp restart: always hostname: frps ports: # - 80 # - 443 # - 6000 - 7000:7000 # - 7500 volumes: - ./frp/frps.ini:/frps.ini command: -c frps.ini entrypoint: - /frps labels: - "traefik.frp.backend=frp" - "traefik.frp.port=80" - "traefik.frp.frontend.entryPoints=http" - "traefik.frp.frontend.rule=Host:frp.${SERVER_DOMAIN},*.frp.${SERVER_DOMAIN}" - "traefik.frps.backend=frps" - "traefik.frps.port=7500" - "traefik.frps.frontend.entryPoints=http" - "traefik.frps.frontend.rule=Host:frps.${SERVER_DOMAIN}" ```` ```` www: container_name: www image: nginx:1.15.6 restart: always hostname: www # ports: # - 80 volumes: - ../dev-ops-repo/www/html:/usr/share/nginx/html environment: - TZ=${TIME_ZONE} frpc: container_name: frpc image: hyperapp/frp restart: always hostname: frpc # ports: # - 80 # - 443 # - 6000 # - 7000 # - 7500 network_mode: host volumes: - ./frp/frpc.ini:/frpc.ini command: -c frpc.ini entrypoint: - /frpc depends_on: - www ```` **Configures you used:** frps.ini ```` [common] bind_addr = 0.0.0.0 bind_port = 7000 # udp # bind_udp_port = 7001 # http/ https vhost_http_port = 80 # vhost_https_port = 443 # dashboard dashboard_addr = 0.0.0.0 dashboard_port = 7500 dashboard_user = frps dashboard_pwd = frps # trace, debug, info, warn, error log_level = info # auth token # token = frps # subdomain subdomain_host = frp.{your domain}.com ```` frpc.ini ```` [common] server_addr = frp.{your domain}.com server_port = 7000 # trace, debug, info, warn, error log_level = trace # auth token # token = frps [www] type = http local_ip = www local_port = 80 subdomain = www ```` **Steps to reproduce the issue:** **Describe the results you received:** 1. frpc 可以正常连接 frps,frps dashboard 也能正常访问,并发现注册的服务 2.内网穿透访问失败 **Describe the results you expected:** **Additional information you deem important (e.g. issue happens only occasionally):** frpc log ```` 2018/12/10 11:43:58 [I] [proxy_manager.go:300] proxy removed: [] 2018/12/10 11:43:58 [I] [proxy_manager.go:310] proxy added: [www] 2018/12/10 11:43:58 [I] [proxy_manager.go:333] visitor removed: [] 2018/12/10 11:43:58 [I] [proxy_manager.go:342] visitor added: [] 2018/12/10 11:43:58 [I] [control.go:246] [8e5d1657db18a759] login to server success, get run id [8e5d1657db18a759], server udp port [0] 2018/12/10 11:43:58 [I] [control.go:169] [8e5d1657db18a759] [www] start proxy success 2018/12/10 11:44:28 [D] [control.go:340] [8e5d1657db18a759] send heartbeat to server 2018/12/10 11:44:28 [D] [control.go:361] [8e5d1657db18a759] receive heartbeat from server ```` frps log ```` 2018/12/10 11:43:41 [I] [service.go:130] frps tcp listen on 0.0.0.0:7000 2018/12/10 11:43:41 [I] [service.go:172] http service listen on 0.0.0.0:80 2018/12/10 11:43:41 [I] [service.go:216] Dashboard listen on 0.0.0.0:7500 2018/12/10 11:43:41 [I] [root.go:207] Start frps success 2018/12/10 11:43:51 [I] [dashboard_api.go:67] Http request: [/api/serverinfo] 2018/12/10 11:43:51 [I] [dashboard_api.go:64] Http response [/api/serverinfo]: code [0] 2018/12/10 11:43:51 [I] [dashboard_api.go:178] Http request: [/api/proxy/http] 2018/12/10 11:43:51 [I] [dashboard_api.go:174] Http response [/api/proxy/http]: code [0] 2018/12/10 11:43:51 [I] [dashboard_api.go:175] /api/proxy/http 2018/12/10 11:43:51 [I] [dashboard_api.go:176] 2018/12/10 11:43:58 [I] [service.go:319] client login info: ip [112.111.40.24:53131] version [0.21.0] hostname [] os [linux] arch [amd64] 2018/12/10 11:43:58 [I] [proxy.go:291] [8e5d1657db18a759] [www] http proxy listen for host [www.frp.{your domain}.com] location [] 2018/12/10 11:43:58 [I] [control.go:335] [8e5d1657db18a759] new proxy [www] success 2018/12/10 11:44:00 [I] [dashboard_api.go:67] Http request: [/api/serverinfo] 2018/12/10 11:44:00 [I] [dashboard_api.go:64] Http response [/api/serverinfo]: code [0] 2018/12/10 11:44:00 [I] [dashboard_api.go:178] Http request: [/api/proxy/http] 2018/12/10 11:44:00 [I] [dashboard_api.go:174] Http response [/api/proxy/http]: code [0] 2018/12/10 11:44:00 [I] [dashboard_api.go:175] /api/proxy/http 2018/12/10 11:44:00 [I] [dashboard_api.go:176] 2018/12/10 11:44:02 [I] [dashboard_api.go:309] Http request: [/api/traffic/www] 2018/12/10 11:44:02 [I] [dashboard_api.go:307] Http response [/api/traffic/www]: code [0] ```` **Can you point out what caused this issue (optional)**
Author
Owner

@fatedier commented on GitHub (Dec 10, 2018):

请先自行排查问题。

<!-- gh-comment-id:445794651 --> @fatedier commented on GitHub (Dec 10, 2018): 请先自行排查问题。
Author
Owner

@droplet-js commented on GitHub (Dec 10, 2018):

请先自行排查问题。

排查好几遍了,尝试了改 docker 容器的网络模式为 host,然而并没有用 ...

<!-- gh-comment-id:445797930 --> @droplet-js commented on GitHub (Dec 10, 2018): > 请先自行排查问题。 排查好几遍了,尝试了改 docker 容器的网络模式为 host,然而并没有用 ...
Author
Owner

@droplet-js commented on GitHub (Dec 10, 2018):

改成这样依然没用,该有的端口都映射到本地了

  www:
    container_name: www
    image: nginx:1.15.6
    restart: always
    hostname: www
    ports:
      - 8080:80
    volumes:
      - ../dev-ops-repo/www/html:/usr/share/nginx/html
    environment:
      - TZ=${TIME_ZONE}

  frpc:
    container_name: frpc
    image: hyperapp/frp
    restart: always
    hostname: frpc
#    ports:
#      - 80
#      - 443
#      - 6000
#      - 7000
#      - 7500
    network_mode: host
    volumes:
      - ./frp/frpc.ini:/frpc.ini
    command: -c frpc.ini
    entrypoint:
      - /frpc
    depends_on:
      - www
[common]
server_addr = frp.{your domain}.com
server_port = 7000

# trace, debug, info, warn, error
log_level = trace

# auth token
# token = frps

[www]
type = http
#local_ip = www
local_port = 8080
subdomain = www
<!-- gh-comment-id:445798682 --> @droplet-js commented on GitHub (Dec 10, 2018): 改成这样依然没用,该有的端口都映射到本地了 ```` www: container_name: www image: nginx:1.15.6 restart: always hostname: www ports: - 8080:80 volumes: - ../dev-ops-repo/www/html:/usr/share/nginx/html environment: - TZ=${TIME_ZONE} frpc: container_name: frpc image: hyperapp/frp restart: always hostname: frpc # ports: # - 80 # - 443 # - 6000 # - 7000 # - 7500 network_mode: host volumes: - ./frp/frpc.ini:/frpc.ini command: -c frpc.ini entrypoint: - /frpc depends_on: - www ```` ```` [common] server_addr = frp.{your domain}.com server_port = 7000 # trace, debug, info, warn, error log_level = trace # auth token # token = frps [www] type = http #local_ip = www local_port = 8080 subdomain = www ````
Author
Owner

@fatedier commented on GitHub (Dec 10, 2018):

先不要用 docker,把 frpc 和 frps 放在同一台物理机上验证配置是否正确,是否能够正常工作。
再在 docker 环境里做验证,用排除法排查问题。

<!-- gh-comment-id:445815274 --> @fatedier commented on GitHub (Dec 10, 2018): 先不要用 docker,把 frpc 和 frps 放在同一台物理机上验证配置是否正确,是否能够正常工作。 再在 docker 环境里做验证,用排除法排查问题。
Author
Owner

@droplet-js commented on GitHub (Dec 11, 2018):

问题找到并解决了,是traefik配置问题。建议frp也弄出一套类似traefik,利用command或environment配置frps,利用labels配置frpc。

  # bind: frp.${SERVER_DOMAIN}
  frps:
    container_name: frps
    image: hyperapp/frp
    restart: always
    hostname: frps
    ports:
#      - 80 # vhost - http
#      - 443 # vhost - https
#      - 6000
      - 7000:7000 # bind
#      - 7500 # dashboard
    volumes:
      - ./frp/frps.ini:/frps.ini
    command: -c frps.ini
    entrypoint:
      - /frps
    labels:
      - "traefik.vhost.backend=vhost"
      - "traefik.vhost.port=80"
      - "traefik.vhost.frontend.entryPoints=http"
      - "traefik.vhost.frontend.rule=HostRegexp:{subdomain:[a-z]+}.frp.${SERVER_DOMAIN}"
      - "traefik.dashboard.backend=frps"
      - "traefik.dashboard.port=7500"
      - "traefik.dashboard.frontend.entryPoints=http"
      - "traefik.dashboard.frontend.rule=Host:frps.${SERVER_DOMAIN}"
<!-- gh-comment-id:446047145 --> @droplet-js commented on GitHub (Dec 11, 2018): 问题找到并解决了,是traefik配置问题。建议frp也弄出一套类似traefik,利用command或environment配置frps,利用labels配置frpc。 ```` # bind: frp.${SERVER_DOMAIN} frps: container_name: frps image: hyperapp/frp restart: always hostname: frps ports: # - 80 # vhost - http # - 443 # vhost - https # - 6000 - 7000:7000 # bind # - 7500 # dashboard volumes: - ./frp/frps.ini:/frps.ini command: -c frps.ini entrypoint: - /frps labels: - "traefik.vhost.backend=vhost" - "traefik.vhost.port=80" - "traefik.vhost.frontend.entryPoints=http" - "traefik.vhost.frontend.rule=HostRegexp:{subdomain:[a-z]+}.frp.${SERVER_DOMAIN}" - "traefik.dashboard.backend=frps" - "traefik.dashboard.port=7500" - "traefik.dashboard.frontend.entryPoints=http" - "traefik.dashboard.frontend.rule=Host:frps.${SERVER_DOMAIN}" ````
Author
Owner

@fatedier commented on GitHub (Dec 11, 2018):

环境变量可以考虑。

<!-- gh-comment-id:446047454 --> @fatedier commented on GitHub (Dec 11, 2018): 环境变量可以考虑。
Author
Owner

@droplet-js commented on GitHub (Dec 11, 2018):

请教一下 7000 端口用的 TCP 协议还是 UDP 协议?我想用 traefik 转发,避免服务器多开一个 7000 端口。

<!-- gh-comment-id:446049863 --> @droplet-js commented on GitHub (Dec 11, 2018): 请教一下 7000 端口用的 TCP 协议还是 UDP 协议?我想用 traefik 转发,避免服务器多开一个 7000 端口。
Author
Owner

@fatedier commented on GitHub (Dec 11, 2018):

tcp

<!-- gh-comment-id:446050306 --> @fatedier commented on GitHub (Dec 11, 2018): tcp
Author
Owner

@Tiger-zzZ commented on GitHub (May 16, 2019):

请教一下 7000 端口用的 TCP 协议还是 UDP 协议?我想用 traefik 转发,避免服务器多开一个 7000 端口。

能请问一下frp在swarm中启动时需要什么label吗,我不知道怎样让frpc访问到frps

<!-- gh-comment-id:493003437 --> @Tiger-zzZ commented on GitHub (May 16, 2019): > 请教一下 7000 端口用的 TCP 协议还是 UDP 协议?我想用 traefik 转发,避免服务器多开一个 7000 端口。 能请问一下frp在swarm中启动时需要什么label吗,我不知道怎样让frpc访问到frps
Author
Owner

@droplet-js commented on GitHub (May 17, 2019):

@Tiger-zzZ

traefik

# 版本
version: "3.7"

# 服务
services:

  # 暂不支持设置时区
  traefik:
    image: traefik:1.7.9
    ports:
      - 80:80
      - 443:443
#      - 8080
    networks:
      - net # traefik_net
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ../../dev-ops-repo/traefik/acme:/etc/traefik/acme
#    environment:
#      - TZ=${TIME_ZONE:-Asia/Shanghai}
    command:
#      - "--logLevel=DEBUG"
      - "--api"
      - "--entrypoints=Name:http Address::80"
      - "--entrypoints=Name:https Address::443 TLS"
      - "--defaultentrypoints=http,https"
      - "--acme"
      - "--acme.storage=/etc/traefik/acme/acme.json"
      - "--acme.entryPoint=https"
      - "--acme.caServer=https://acme-v02.api.letsencrypt.org/directory" # default
#      - "--acme.caServer=https://acme-staging-v02.api.letsencrypt.org/directory"
      - "--acme.httpChallenge.entryPoint=http"
      - "--acme.onHostRule=true"
      - "--acme.onDemand=false"
      - "--acme.email=${TRAEFIK_ACME_EMAIL:-foobar@example.com}"
      - "--docker"
      - "--docker.exposedbydefault=false"
      - "--docker.swarmMode"
      - "--docker.domain=${SERVER_DOMAIN:-localhost}"
      - "--docker.watch"
    deploy:
      mode: global
      placement:
        constraints:
          - node.role == manager # 部署位置,只在管理节点部署
      update_config:
        parallelism: 1
        delay: 10s
      restart_policy:
        condition: on-failure
      labels:
        - "traefik.enable=true"
        - "traefik.docker.network=traefik_net"
        - "traefik.port=8080"
        - "traefik.frontend.redirect.entryPoint=https"
        - "traefik.frontend.rule=Host:traefik.${SERVER_DOMAIN:-localhost}"
        - "traefik.frontend.auth.basic=${TRAEFIK_AUTH_BASIC}"

networks:
  # docker stack deploy -c <(docker-compose -f docker-swarm.yml config) traefik
  # Creating network traefik_net
  # 外部引用 "traefik_net"
  net:
    driver: overlay
    attachable: true

frps

# 版本
version: "3.7"

# 服务
services:

  frps:
    image: v7lin/frps:0.26.0
    ports:
#      - 80 # vhost - http
#      - 443 # vhost - https
      - 6000-6010:6000-6010 # ssh
      - 7000:7000 # bind
#      - 7500 # dashboard
    networks:
      - traefik_net
    environment:
      - TZ=${TIME_ZONE:-Asia/Shanghai}
    command:
      - "--log_level=info"
      - "--token=${FRP_TOKEN:-frp}"
      - "--dashboard_port=7500" # 没有默认值
      - "--dashboard_user=${FRP_DASHBOARD_USER:-frps}"
      - "--dashboard_pwd=${FRP_DASHBOARD_PWD:-frps}"
      - "--vhost_http_port=80"
#      - "--vhost_https_port=443"
      - "--subdomain_host=frp.${SERVER_DOMAIN:-localhost}"
    deploy:
      mode: global
      placement:
        constraints:
          - node.role == manager
      update_config:
        parallelism: 1
        delay: 10s
      restart_policy:
        condition: on-failure
      labels:
        - "traefik.enable=true"
        - "traefik.docker.network=traefik_net"
        - "traefik.dashboard.port=7500"
        - "traefik.dashboard.frontend.redirect.entryPoint=https"
        - "traefik.dashboard.frontend.rule=Host:frps.${SERVER_DOMAIN:-localhost}"
        - "traefik.vhttp.port=80"
        - "traefik.vhttp.frontend.entryPoints=http"
        - "traefik.vhttp.frontend.rule=HostRegexp:{subdomain:[a-z]+}.frp.${SERVER_DOMAIN:-localhost}"
        - "traefik.frpc-http.port=80"
        - "traefik.frpc-http.frontend.entryPoints=http"
        - "traefik.frpc-http.frontend.rule=HostRegexp:{subdomain:demo}.${SERVER_DOMAIN:-localhost}"
        - "traefik.frpc-https-demo.port=80"
        - "traefik.frpc-https-demo.frontend.entryPoints=https"
        - "traefik.frpc-https-demo.frontend.rule=Host:demo.${SERVER_DOMAIN:-localhost}"

networks:
  traefik_net:
    external: true

frpc-http

# 版本
version: "3.7"

# 服务
services:

  demo:
    container_name: demo
    image: nginx:1.15.9-alpine
    restart: always
#    ports:
#      - 80
    environment:
      - TZ=${TIME_ZONE:-Asia/Shanghai}

  demo-frpc:
    container_name: demo-frpc
    image: v7lin/frpc:0.26.0
    restart: always
    environment:
      - TZ=${TIME_ZONE:-Asia/Shanghai}
    command:
      - "http"
      - "--proxy_name=demo"
      - "--local_ip=demo"
      - "--local_port=80"
#      - "--sd=demo" # subdomain
      - "--custom_domain=demo.${SERVER_DOMAIN:-localhost}"
      - "--server_addr=${FRP_SERVER_DOMAIN:-host.docker.internal}:7000"
      - "--token=${FRP_TOKEN:-frps}"
      - "--log_level=trace"
    depends_on:
      - demo

frpc-ssh

# 版本
version: "3.7"

# 服务
services:

  # SSH内网服务器
  frpc-ssh:
    container_name: frpc-ssh
    image: v7lin/frpc:0.26.0
    restart: always
    environment:
      - TZ=${TIME_ZONE:-Asia/Shanghai}
    command:
      - "tcp"
      - "--proxy_name=frpc-ssh"
      - "--local_ip=host.docker.internal"
      - "--local_port=22" # 没有默认值
      - "--remote_port=6000" # TODO 为不同机器分配不同端口
      - "--server_addr=${FRP_SERVER_DOMAIN:-host.docker.internal}:7000"
      - "--token=${FRP_TOKEN:-frps}"
      - "--log_level=info"
<!-- gh-comment-id:493316203 --> @droplet-js commented on GitHub (May 17, 2019): @Tiger-zzZ traefik ```` # 版本 version: "3.7" # 服务 services: # 暂不支持设置时区 traefik: image: traefik:1.7.9 ports: - 80:80 - 443:443 # - 8080 networks: - net # traefik_net volumes: - /var/run/docker.sock:/var/run/docker.sock - ../../dev-ops-repo/traefik/acme:/etc/traefik/acme # environment: # - TZ=${TIME_ZONE:-Asia/Shanghai} command: # - "--logLevel=DEBUG" - "--api" - "--entrypoints=Name:http Address::80" - "--entrypoints=Name:https Address::443 TLS" - "--defaultentrypoints=http,https" - "--acme" - "--acme.storage=/etc/traefik/acme/acme.json" - "--acme.entryPoint=https" - "--acme.caServer=https://acme-v02.api.letsencrypt.org/directory" # default # - "--acme.caServer=https://acme-staging-v02.api.letsencrypt.org/directory" - "--acme.httpChallenge.entryPoint=http" - "--acme.onHostRule=true" - "--acme.onDemand=false" - "--acme.email=${TRAEFIK_ACME_EMAIL:-foobar@example.com}" - "--docker" - "--docker.exposedbydefault=false" - "--docker.swarmMode" - "--docker.domain=${SERVER_DOMAIN:-localhost}" - "--docker.watch" deploy: mode: global placement: constraints: - node.role == manager # 部署位置,只在管理节点部署 update_config: parallelism: 1 delay: 10s restart_policy: condition: on-failure labels: - "traefik.enable=true" - "traefik.docker.network=traefik_net" - "traefik.port=8080" - "traefik.frontend.redirect.entryPoint=https" - "traefik.frontend.rule=Host:traefik.${SERVER_DOMAIN:-localhost}" - "traefik.frontend.auth.basic=${TRAEFIK_AUTH_BASIC}" networks: # docker stack deploy -c <(docker-compose -f docker-swarm.yml config) traefik # Creating network traefik_net # 外部引用 "traefik_net" net: driver: overlay attachable: true ```` frps ```` # 版本 version: "3.7" # 服务 services: frps: image: v7lin/frps:0.26.0 ports: # - 80 # vhost - http # - 443 # vhost - https - 6000-6010:6000-6010 # ssh - 7000:7000 # bind # - 7500 # dashboard networks: - traefik_net environment: - TZ=${TIME_ZONE:-Asia/Shanghai} command: - "--log_level=info" - "--token=${FRP_TOKEN:-frp}" - "--dashboard_port=7500" # 没有默认值 - "--dashboard_user=${FRP_DASHBOARD_USER:-frps}" - "--dashboard_pwd=${FRP_DASHBOARD_PWD:-frps}" - "--vhost_http_port=80" # - "--vhost_https_port=443" - "--subdomain_host=frp.${SERVER_DOMAIN:-localhost}" deploy: mode: global placement: constraints: - node.role == manager update_config: parallelism: 1 delay: 10s restart_policy: condition: on-failure labels: - "traefik.enable=true" - "traefik.docker.network=traefik_net" - "traefik.dashboard.port=7500" - "traefik.dashboard.frontend.redirect.entryPoint=https" - "traefik.dashboard.frontend.rule=Host:frps.${SERVER_DOMAIN:-localhost}" - "traefik.vhttp.port=80" - "traefik.vhttp.frontend.entryPoints=http" - "traefik.vhttp.frontend.rule=HostRegexp:{subdomain:[a-z]+}.frp.${SERVER_DOMAIN:-localhost}" - "traefik.frpc-http.port=80" - "traefik.frpc-http.frontend.entryPoints=http" - "traefik.frpc-http.frontend.rule=HostRegexp:{subdomain:demo}.${SERVER_DOMAIN:-localhost}" - "traefik.frpc-https-demo.port=80" - "traefik.frpc-https-demo.frontend.entryPoints=https" - "traefik.frpc-https-demo.frontend.rule=Host:demo.${SERVER_DOMAIN:-localhost}" networks: traefik_net: external: true ```` frpc-http ```` # 版本 version: "3.7" # 服务 services: demo: container_name: demo image: nginx:1.15.9-alpine restart: always # ports: # - 80 environment: - TZ=${TIME_ZONE:-Asia/Shanghai} demo-frpc: container_name: demo-frpc image: v7lin/frpc:0.26.0 restart: always environment: - TZ=${TIME_ZONE:-Asia/Shanghai} command: - "http" - "--proxy_name=demo" - "--local_ip=demo" - "--local_port=80" # - "--sd=demo" # subdomain - "--custom_domain=demo.${SERVER_DOMAIN:-localhost}" - "--server_addr=${FRP_SERVER_DOMAIN:-host.docker.internal}:7000" - "--token=${FRP_TOKEN:-frps}" - "--log_level=trace" depends_on: - demo ```` frpc-ssh ```` # 版本 version: "3.7" # 服务 services: # SSH内网服务器 frpc-ssh: container_name: frpc-ssh image: v7lin/frpc:0.26.0 restart: always environment: - TZ=${TIME_ZONE:-Asia/Shanghai} command: - "tcp" - "--proxy_name=frpc-ssh" - "--local_ip=host.docker.internal" - "--local_port=22" # 没有默认值 - "--remote_port=6000" # TODO 为不同机器分配不同端口 - "--server_addr=${FRP_SERVER_DOMAIN:-host.docker.internal}:7000" - "--token=${FRP_TOKEN:-frps}" - "--log_level=info" ````
Author
Owner

@Tiger-zzZ commented on GitHub (May 17, 2019):

我在traefik用文档中swarm mode的案例起的
docker-machine ssh manager "docker service create \ --name traefik \ --constraint=node.role==manager \ --publish 80:80 --publish 8080:8080 \ --mount type=bind,source=/var/run/docker.sock,target=/var/run/docker.sock \ --network traefik-net \ traefik \ --docker \ --docker.swarmMode \ --docker.domain=traefik \ --docker.watch \ --api"

然后这是我的frps
docker service create --name frps --label traefik.vhost.backend=vhost --label traefik.vhost.port=80 --label traefik.vhost.frontend.entryPoints=http --publish 7000:7000 frp-server

现在我可以通过7000端口连接上frps,但是不能通过访问到客户端服务,请问这是应怎么配置

<!-- gh-comment-id:493355002 --> @Tiger-zzZ commented on GitHub (May 17, 2019): 我在traefik用文档中swarm mode的案例起的 `docker-machine ssh manager "docker service create \ --name traefik \ --constraint=node.role==manager \ --publish 80:80 --publish 8080:8080 \ --mount type=bind,source=/var/run/docker.sock,target=/var/run/docker.sock \ --network traefik-net \ traefik \ --docker \ --docker.swarmMode \ --docker.domain=traefik \ --docker.watch \ --api"` 然后这是我的frps ` docker service create --name frps --label traefik.vhost.backend=vhost --label traefik.vhost.port=80 --label traefik.vhost.frontend.entryPoints=http --publish 7000:7000 frp-server` 现在我可以通过7000端口连接上frps,但是不能通过访问到客户端服务,请问这是应怎么配置
Author
Owner

@droplet-js commented on GitHub (May 17, 2019):

-_-||| ... 纯 docker 命令看得好蛋疼啊,能用docker-compose么?

<!-- gh-comment-id:493367244 --> @droplet-js commented on GitHub (May 17, 2019): -_-||| ... 纯 docker 命令看得好蛋疼啊,能用docker-compose么?
Author
Owner

@Tiger-zzZ commented on GitHub (May 17, 2019):

还不太熟悉compose,期望是通过80端口能够直接访问到我frpc上的nginx,在本地测试中不知道怎么样让traefik转发请求

<!-- gh-comment-id:493368148 --> @Tiger-zzZ commented on GitHub (May 17, 2019): 还不太熟悉compose,期望是通过80端口能够直接访问到我frpc上的nginx,在本地测试中不知道怎么样让traefik转发请求
Author
Owner

@droplet-js commented on GitHub (May 17, 2019):

-_-||| ... 直接上我上面发的配置就好了,从swarm的网络创建到 frpc-demo 都能直接用 docker-compose

<!-- gh-comment-id:493372479 --> @droplet-js commented on GitHub (May 17, 2019): -_-||| ... 直接上我上面发的配置就好了,从swarm的网络创建到 frpc-demo 都能直接用 docker-compose
Author
Owner

@Tiger-zzZ commented on GitHub (May 17, 2019):

谢谢,我在去试试,万分感谢

<!-- gh-comment-id:493383438 --> @Tiger-zzZ commented on GitHub (May 17, 2019): 谢谢,我在去试试,万分感谢
Author
Owner

@Tiger-zzZ commented on GitHub (May 24, 2019):

非常不好意思,最后在问你一次,能不能只在traefik上开7000端口然后直接连接,frps那个容器不暴露端口

<!-- gh-comment-id:495493669 --> @Tiger-zzZ commented on GitHub (May 24, 2019): 非常不好意思,最后在问你一次,能不能只在traefik上开7000端口然后直接连接,frps那个容器不暴露端口
Author
Owner

@droplet-js commented on GitHub (May 24, 2019):

暂时还不行,因为 traefik 2.0 之前不支持 tcp 转发。不过,希望快临近了,traefik 2.0 已经 alpha-4 了,离正式发布不久了,再忍忍咯 ... 我都忍了大半年了,就等 traefik 发布 release 版本了

<!-- gh-comment-id:495523981 --> @droplet-js commented on GitHub (May 24, 2019): 暂时还不行,因为 traefik 2.0 之前不支持 tcp 转发。不过,希望快临近了,traefik 2.0 已经 alpha-4 了,离正式发布不久了,再忍忍咯 ... 我都忍了大半年了,就等 traefik 发布 release 版本了
Author
Owner

@Tiger-zzZ commented on GitHub (May 24, 2019):

万分感谢

<!-- gh-comment-id:495524430 --> @Tiger-zzZ commented on GitHub (May 24, 2019): 万分感谢
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: github-starred/frp#793
No description provided.