之前介绍过使用Frp来进行内网穿透的教程,不过网上提供免费服务的速度都不是很快,今天自己来搭一个服务端来看看。
2019/7/17更新:frp最新版本我遇到了断线问题,建议frps使用0.24.1版本。
前言
frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp 协议,为 http 和 https 应用协议提供了额外的能力,且尝试性支持了点对点穿透。frp分为客户端和服务端两个部分,分别叫frpc和frps。
我这次使用了一台新的VPS,Hostflyte,支持paypal和支付宝,价格很便宜,就是网上传说这家老板有过跑路前科,所以这个小鸡只适合玩一玩。我买的是kvm架构2核2G内存20G硬盘千兆网络4T流量,12美元一年。
Hostflyte 八折优惠码:cn2gt20 别忘了下单前使用。
安装使用
Frp服务的搭建非常简单,仅仅需要frps程序及一个配置文件即可。
下载frps,https://github.com/fatedier/frp/releases
从这里可以现在最新的版本,包括服务端和客户端程序。
通过WinSCP把frps和frps.ini上传到服务器,比如我把frps放到了/usr/bin/目录,frps.ini放到了/etc/frp/目录下。
建议试一试kcp模式,速度会快一些。
配置说明
[必须]标识头 [common] 是不可或缺的部分 [必须]服务器IP bind_addr = 0.0.0.0 0.0.0.0为服务器全局所有IP可用,假如你的服务器有多个IP则可以这样做,或者填写为指定其中的一个服务器IP,支持IPV6. [必须]FRP通讯端口 bind_port = 7000 用于和客户端内网穿透传输数据的端口,可自定义。 用于KCP协议UDP通讯端口 kcp_bind_port = 7000 也可以和“bind_port”共用同一端口,如果没有设置,则kcp在frps中被禁用,可自定义。 UDP通讯端口 bind_udp_port = 7001 以帮助使UDP打洞穿透NAT,可自定义。 [必须]连接认证密钥 token = www.troyqi.com 客户端连接到本服务端的登录验证密钥,可自定义。 如果你想支持http,必须指定http端口监听 vhost_http_port = 80 指定端口为http网页协议,可自定义。 如果你想支持https,必须指定https端口监听 vhost_https_port = 443 指定端口为https网页协议,可自定义。 限制只能使用服务端的指定端口 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 每个内网穿透可以创建的连接池上限,避免大量资源占用。可自定义。 如果使用tcp流复用,默认值为true tcp_mux=true 不开启则,false 客户端和服务器端之间的连接支持多路复用,不再需要为每一个用户请求创建一个连接,使连接建立的延迟降低,并且避免了大量文件描述符的占用,使 frp 可以承载更高的并发数。 心跳配置,不建议修改,默认值是90 heartbeat_timeout = 90 可自定义。 客户端与服务端时间相差验证 authentication_timeout = 900 假如客户端设备的时间和服务端的时间相差大于设定值,那么拒绝客户端连接。 如果设置为0,则不验证时间,默认值为900秒,可自定义。 通过浏览器查看 frp 的状态以及代理统计信息展示。 绑定服务端IP dashboard_addr = 0.0.0.0 0.0.0.0为服务器全局所有IP可用,假如你的服务器有多个IP则可以这样做,或者填写为指定其中的一个服务器IP,支持IPV6. WEB端口 dashboard_port = 7500 访问WEB服务端IP:端口,可自定义。 用户名 dashboard_user = admin 自定义WEB管理用户名,如果没有设置,默认值是admin。 登录密码 dashboard_pwd = admin 自定义WEB管理密码,如果没有设置,默认值是admin。 记录日志 日志存放路径 log_file = /etc/frp/log/frps.log 日志记录类别 log_level = info 可选:trace, debug, info, warn, error 最多保存多少天日志 log_max_days = 7 可自定义保存多少天。
使用说明
首先需要赋予frps可执行权限
chmod +x /usr/bin/frps
然后后台运行frps服务(不然ssh断开程序就停止了)
nohup /usr/bin/frps -c /etc/frp/frps.ini &
执行成功后,会显示frp的进程号码。你也可以通过命令来查看frps运行的进程编号。
ps -e | grep frps
优化
在/etc/systemd/system/目录下创建frps.service,输入以下内容保存。这样就把frps生成了一个服务。就可以用systemd相关命令进行启动停止了。
# 内容如下
[Unit]
Description=frps daemon
After=syslog.target network.target
Wants=network.target
[Service]
Type=simple
#此处的路劲地址根据自己的实际放置的地址进行修改
ExecStart=/usr/bin/frps -c /etc/frp/frps.ini
Restart=always
RestartSec=1min
[Install]
WantedBy=multi-user.target
2、将frp设置成开机自启动
systemctl enable frps
systemctl restart frps
结合100块自己家搭建网站:免费域名申请和frp穿透或者群晖内网穿透Docker方案(最简单的免费外网访问方法)来配置客户端吧。
参考: http://www.chuantou.org/49.html
除非注明,否则均为Troy小法师原创文章,转载必须以链接形式标明本文链接
0 条评论