frp内网穿透

概述

frp是什么

frp是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp, http, https 协议。
1、利用处于内网或防火墙后的机器,对外网环境提供 http 或 https 服务。
2、对于 http, https 服务支持基于域名的虚拟主机,支持自定义域名绑定,使多个域名可以共用一个80端口。
3、利用处于内网或防火墙后的机器,对外网环境提供 tcp 和 udp 服务,例如在家里通过 ssh 访问处于公司内网环境内的主机。

官网资料

https://gofrp.org/#

git下载

https://github.com/fatedier/frp/releases/

wget https://github.com/fatedier/frp/releases/download/v0.xx.xx/frp_0.xx.xx_linux_386.tar.gz

使用示例

frpsfrps.ini 放到具有公网 IP 的机器上。

frpcfrpc.ini 放到处于内网环境的机器上。

阿里云需要开放安全组

通过 ssh 访问公司内网机器

详细配置可以查看官方文档

1、修改服务器 frps.ini 文件:

[common]
#服务端需要开启的端口(与客户端绑定的进行通信的端口)
bind_addr = 0.0.0.0
bind_port = 5443
kcp_bind_port = 5443
#服务端需要开启的端口(访问客户端web服务自定义的端口号,即Http监听的端口)
vhost_http_port = 9080
vhost_https_port = 9081
#授权令牌,需要客户端的token保持一致
token = 123456
#仪表配置
dashboard_addr = 0.0.0.0
dashboard_port = 6443
dashboard_user = admin
dashboard_pwd = admin
#日志配置
log_file = /you/path/
log_level = info
log_max_days = 3
#最大连接数
max_pool_count = 50
max_ports_per_client = 0
authentication_timeout = 900
tcp_mux = true

启动 frps:

./frps -c ./frps.ini

2、修改本地 frpc.ini 文件,假设 frps 所在服务器的公网 IP 为 x.x.x.x;

[common]
server_addr = xxxxxx
server_port = 5443
token = 123456


# 通过tcp的方式可以不使用域名的情况下进行内网穿透,直接访问http://127.0.0.1:8080即可
# tcp穿透需要设置remote_port(为将服务器的8080端口绑定到你的穿透服务,此处的8080端口也需要在防火墙中放开访问权限>)
#[mock-tcp]
#type = tcp
#local_ip = 172.18.50.59
#local_port = 8089
#remote_port = 8080
# custom_domains = mock.frp.test.com[common]
#bind_port = 7000

[ssh]
remote_port = 9082
type = tcp
local_ip = 127.0.0.1
local_port = 22

启动 frpc:

./frpc -c ./frpc.ini

通过 ssh 访问内网机器,假设用户名为 test:

ssh -oPort=6000 test@x.x.x.x

Nginx 反向代理 frp的http端口

# frp的接收http请求的反向代理
    server {
        listen 80;
        #有域名写域名 没域名写localhost
        server_name localhost;

        location / {
            # 7071端口即为frp监听的http端口
            proxy_pass http://127.0.0.1:7071; 
            proxy_set_header Host $host:80;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";

            proxy_connect_timeout 7d;
            proxy_send_timeout 7d;
            proxy_read_timeout 7d;

            }
        # 防止爬虫抓取
        if ($http_user_agent ~* "360Spider|JikeSpider|Spider|spider|bot|Bot|2345Explorer|curl|wget|webZIP|qihoobot|Baiduspider|Googlebot|Googlebot-Mobile|Googlebot-Image|Mediapartners-Google|Adsbot-Google|Feedfetcher-Google|Yahoo! Slurp|Yahoo! Slurp China|YoudaoBot|Sosospider|Sogou spider|Sogou web spider|MSNBot|ia_archiver|Tomato Bot|NSPlayer|bingbot")
            {
                return 403;
            }
    };



# frps 一键脚本安装

[项目地址](https://github.com/chauncey09/frp)

### 一键脚本(先运行脚本,在自行修改frps.ini)

1、新建一个存放目录

```bash
mkdir frps

2、拉取一键搭建脚本

#安装
wget https://raw.githubusercontent.com/chauncey09/frps.sh/master/frps.sh && chmod +x frps.sh && ./frps.sh
#卸载
wget https://raw.githubusercontent.com/chauncey09/frps.sh/master/unfrps.s

3、增加脚本权限

chmod 700 ./install-frps.sh

4、安装

./install-frps.sh install

之后他会让你输一些参数,全部参数都有默认值,直接回车就是输入默认值:

Please input frps bind_port [1-65535](Default Server Port: 5443): #输入frp提供服务的端口,用于服务器端和客户端通信,默认即可
Please input frps vhost_http_port [1-65535](Default vhost_http_port: 80): #输入frp进行http穿透的http服务端口,建议选择其他端口,默认的80端口给Nignx,然后用Nginx代理frp的http端口
Please input frps vhost_https_port [1-65535](Default vhost_https_port: 443): #输入frp进行https穿透的https服务端口,同上面的80端口类似,建议分配其他端口,然后通过Nginx代理此端口
Please input frps dashboard_port [1-65535](Default dashboard_port: 6443):#输入frp的控制台服务端口,用于查看frp工作状态,默认即可

Please input dashboard_user (Default: admin):#登录控制台的用户名,默认即可
Please input dashboard_pwd (Default: arepR7VZ):#登录控制台的密码,如果记不住默认的建议修改


Please input privilege_token (Default: 9e2UAeWa6hxrwdc):#输入frp服务器和客户端通信的密码,默认是随机生成的,默认即可
Please input frps max_pool_count [1-200](Default max_pool_count: 50):#设置每个代理可以创建的连接池上限,默认50


##### Please select log_level #####
1: info
2: warn
3: error
4: debug
#####################################################
Enter your choice (1, 2, 3, 4 or exit. default [1]): 默认即可
Please input frps log_max_days [1-30](Default log_max_days: 3 day): 默认即可
##### Please select log_file #####
1: enable
2: disable
#####################################################
Enter your choice (1, 2 or exit. default [1]):默认即可

安装完毕后会弹出以下内容,标明了具体信息,到此服务端操作全部完成。
==============================================
You Server IP      : X.X.X.X
Bind port          : 5443
KCP support        : true
vhost http port    : 8085
vhost https port   : 4435
Dashboard port     : 6443
token              : 9e2UAeWa6hxrwdc
tcp_mux            : true
Max Pool count     : 50
Log level          : info
Log max days       : 3
Log file           : enable
==============================================
frps Dashboard     : http://X.X.X.X:6443/
Dashboard user     : admin
Dashboard password : admin
==============================================


frps status manage : frps {start|stop|restart|status|config|version}
Example:
  start: frps start # 启动frps命令
   stop: frps stop # 停止frps命令
restart: frps restart # 重启frps命令

[root@root frps]#

安装完毕后配置frps.ini

vi /usr/local/frps/frps.ini

配置完成重启frps生效

sudo systemctl restart frps

可以访问ip地址+控制台端口查看(如果是阿里云腾讯云的服务器或者服务器已安装宝塔面板的,记得在安全组放行以上的配置的端口,否则无法访问

frp后台自动启动的几个方法

1、使用nohup来启动

这是frps的后台启动(路径写你服务器上的绝对路径),如果要查看日志的话,就直接使用cat nohup.out,就可以查看了。

nohup /path/to/your/fprs -c /path/to/your/frps.ini

这是frpc的后台启动

nohup /path/to/your/fprc -c /path/to/your/frpc.ini

2、使用systemctl来控制启动

注意:如果用一键安装脚本,请先卸载,不然启动自己配置的启动方式会失败。

这个方法比较好用,很方便
sudo vim /lib/systemd/system/frps.service
在frps.service里写入以下内容

[Unit]
Description=frps service
After=network.target syslog.target
Wants=network.target

[Service]
Type=simple
#启动服务的命令(此处写你的frps的实际安装目录)
ExecStart=/your/path/frps -c /your/path/frps.ini

[Install]
WantedBy=multi-user.target

然后就启动frps
sudo systemctl start frps
再打开自启动
sudo systemctl enable frps

  • 如果要重启应用,可以这样,sudo systemctl restart frps
  • 如果要停止应用,可以输入,sudo systemctl stop frps
  • 如果要查看应用的日志,可以输入,sudo systemctl status frps

3、使用supervisor来控制

首先先安装supervisor,我用的ubuntu
sudo apt install supervisor
创建 supervisor frps 配置文件,在 /etc/supervisor/conf.d 创建 frp.conf

[program:frp]
command = /your/path/frps -c /your/path/frps.ini
autostart = true

同样是你的绝对路径。
写完以后,要重新加载一下supervisor

重启supervisor

sudo systemctl restart supervisor

查看supervisor运行状态

sudo supervisorctl status

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值