frp实现内网穿透 作者: ciniao 时间: 2020-07-24 分类: 技术 * 本文发布时间较久,请自行判断有效性 ####准备工作 1. 一个域名,只要能够正常解析就行 2. xshell或其他ssh软件 3. 一台云服务器,流量尽可能多,带宽能够尽量跑满自己家庭宽带的上行即可 4. 基础linux知识 查看frp目前的版本:https://github.com/fatedier/frp/releases, 本教程以0.33版本作为例子 ####服务端 ``` wget https://github.com/fatedier/frp/releases/download/v0.33.0/frp_0.33.0_linux_amd64.tar.gz tar -zxvf frp_0.33.0_linux_amd64.tar.gz cd frp_0.33.0_linux_amd64 vi frps.ini ``` 编辑frps.ini文件 ``` [common] bind_addr = 0.0.0.0 bind_port = 7000 (数据传输端口,需要服务端客户端一致) privilege_token = 2fd165jtyjsd0g5t4hdga16 (token,需要服务端客户端一致) vhost_http_port = 5000 (服务端http端口) vhost_https_port = 6000 (服务端https端口) #服务器用以显示连接状态的站点端口,以下配置中可以通过访问IP:7500登录查看frp服务端状态等信息 dashboard_addr = 0.0.0.0 dashboard_port = 7500 dashboard_user = 自定义的用户名 dashboard_pwd = 自定义的密码 #其他一些进阶的配置 #用于KCP协议UDP通讯端口 kcp_bind_port = 7000 #也可以和“bind_port”共用同一端口,如果没有设置,则kcp在frps中被禁用,可自定义 #UDP通讯端口 bind_udp_port = 7001 #以帮助使UDP打洞穿透NAT,可自定义 #限制只能使用服务端的指定端口 privilege_allow_ports = 2000-3000,3001,3003,4000-50000 #只允许客户端绑定你列出的端口,如果你什么都不设置的话,不会有任何限制。可自定义!开放这些端口,给客户端使用,包括tcp、udp、kcp #自定义二级域名 subdomain_host = frps.com #通过在 frps 的配置文件中配置 subdomain_host,就可以启用该特性。之后在 frpc 的 http、https 类型的代理中可以不配置 custom_domains,而是配置一个 subdomain 参数。 #只需要将 *.{subdomain_host} 解析到 frps 所在服务器。之后用户可以通过 subdomain 自行指定自己的 web 服务所需要使用的二级域名,通过 {subdomain}.{subdomain_host} 来访问自己的 web 服务 #每个内网穿透服务限制最大连接池上限 max_pool_count = 5 #每个内网穿透可以创建的连接池上限,避免大量资源占用。可自定义 #客户端与服务端时间相差验证 authentication_timeout = 900 #假如客户端设备的时间和服务端的时间相差大于设定值,那么拒绝客户端连接。 #如果设置为0,则不验证时间,默认值为900秒,可自定义 #日志存放路径 log_file = /etc/frp/log/frps.log #日志记录类别 log_level = info #可选:trace, debug, info, warn, error #最多保存多少天日志 log_max_days = 7 ``` 保存后启动服务端, 测试没问题后用nohup在后台运行就行了 ``` nohup ./frps -c ./frps.ini & ```  上图为直接执行./frps -c ./frps.ini返回的成功启动语句,使用nohup启动不会显示 ####群晖客户端 请开启群晖ssh功能 ``` wget https://github.com/fatedier/frp/releases/download/v0.33.0/frp_0.33.0_linux_amd64.tar.gz tar -zxvf frp_0.33.0_linux_amd64.tar.gz cd frp_0.33.0_linux_amd64 vi frpc.ini ``` 编辑frpc.ini文件 ``` [common] server_addr = nas.com #这里填服务器端的IP或者域名 server_port = 7000 #数据传输端口,需要服务端客户端一致 auth_token = 2fd165jtyjsd0g5t4hdga16 #token,需要服务端客户端一致 pool_count = 1 [httpname] #穿透协议类型 type = http #可选:tcp,udp,http,https,stcp,xtcp #本地群晖的网页端口 local_port = 5000 #服务器端的域名 custom_domains = nas.com #其他一些进阶配置 #本地监听IP local_ip = 127.0.0.1 #可以是本地的局域网IP,也可以是本机的127.0.0.1 IP,例如你的局域网是互通的,你可以在本设备建立穿透局域网其他IP的应用 #远程监听端口 remote_port = 6001 #用于frps服务端的,分配建立穿透到内网对应应用的公网端口。 #需要frps服务端已开放此端口给frpc客户端允许对接使用。 #例如我可以连接到此(frps服务端IP:端口),则可以穿透到我的内网对应应用服务 ``` 群晖上使用 nohup后台启动程序 ``` nohup ./frpc -c ./frpc.ini & ``` ####群晖客户端设置开机自启 ``` vi /usr/syno/etc.defaults/rc.sysv/frpc.sh //在文本中写入: cd /root/frp_0.33.0_linux_amd64 nohup ./frpc -c ./frpc.ini & ``` 设置脚本权限 ``` cd /usr/syno/etc.defaults/rc.sysv/ chmod +x frpc.sh ``` 编辑启动文件 ``` vi /etc/rc ``` 在倒数第二排添加 ``` /usr/syno/etc.defaults/rc.sysv/frpc.sh ```  然后可以重启群晖测试自启脚本了 标签: none