【内网穿透路由器】外网环境下使用Frp内网穿透路由器,实现后台的远程访问

外网环境下使用Frp内网穿透路由器,实现后台的远程访问

今天将向大家介绍非公网IP用户如何通过Frp,穿透家庭路由器(本文以梅林固件为例),远程登陆后台。

一、Frp内网穿透

方法一:推荐方法(基于“软件中心”内置Frpc展开配置)

缺点:由于路由器固件下载的Frpc版本固定,因此VPS上的Frps版本需要向Frpc版本看齐(一般就是要求最新版本的Frp),如果之前VPS上已经做过其他穿透,极大可能老的Frps和路由器上的最新Frpc版本不一致,如果没有多余闲置穿透服务器,需要重装Frps版本,在本次穿透完成后可能会花费大量时间更改其他穿透客户端的版本,需要注意。(如果无法接受上述缺陷可直接跳至方法二

1. Frps配置

wget --no-check-certificate https://raw.githubusercontent.com/clangcn/onekey-install-shell/master/frps/install-frps.sh -O ./install-frps.sh

chmod 700 ./install-frps.sh

./install-frps.sh install

【内网穿透路由器】外网环境下使用Frp内网穿透路由器,实现后台的远程访问_第1张图片
【内网穿透路由器】外网环境下使用Frp内网穿透路由器,实现后台的远程访问_第2张图片

【内网穿透路由器】外网环境下使用Frp内网穿透路由器,实现后台的远程访问_第3张图片

./install-frps.sh update      #更新命令
./install-frps.sh uninstall   #卸载命令
/etc/init.d/frps start
/etc/init.d/frps stop
/etc/init.d/frps restart
/etc/init.d/frps status
/etc/init.d/frps config
/etc/init.d/frps version

2. Frpc配置

(1) 前往“软件中心”配置“Frpc”:

【内网穿透路由器】外网环境下使用Frp内网穿透路由器,实现后台的远程访问_第4张图片
【内网穿透路由器】外网环境下使用Frp内网穿透路由器,实现后台的远程访问_第5张图片
【内网穿透路由器】外网环境下使用Frp内网穿透路由器,实现后台的远程访问_第6张图片

方法二:常规方式

方法二相比于第一种方式,没有直观的UI界面,但是能够克服版本冲突的问题,能够自主选择合适的Frp版本,不失为一个极好的解决方案。

1. Frps配置

关于Frps配置方法,十分简单,可参见我的博客文章 点击查看本文

[common]
bind_addr = 0.0.0.0
bind_port = 7000            # 客户端与服务端进行通信的端口,即frp服务端口,需与客户端server_port一致
privilege_token = 123456    # 特权模式密钥,需与客户端frpc.ini一致

vhost_http_port = 8080      # http服务端口,开启后服务端完成通过域名访问部署于内网的 Web 服务部署,这里将 HTTP 访问端口设为 8080
vhost_https_port = 443      # https服务端口

dashboard_port = 7500       # 控制台端口 通过 Dashboard 可以方便的查看 FRP 的状态以及代理统计信息展示 通过 http://[server_addr]:7500 访问 Dashboard 界面,用户名密码默认都为 admin。

2. Frpc配置

查看 Linux 系统架构的命令:

在这里插入图片描述
下载与服务器匹配版本中适配路由器内核的安装包 点此选择
由于第一个提供64位支持的ARM架构是armv8,因此我们看出armv7表示系统架构是32位的。

[common]
server_addr = your_server_ip               #VPS服务器IP
server_port = 7000                         #端口,与服务端bind_port一致  
privilege_token = 123456                   #自定义值,需和服务端frps.ini的一致

#通过自定义域名访问部署于内网的 Web 服务:
[web]  
type = http                                #访问协议
local_ip = 127.0.0.1                       #内网服务器ip 
local_port = 80                            #内网web服务的端口号  
custom_domains = r.顶级域名.com

因使用http或https穿透服务时,所有的“远程主机端口”都会默认绑定到“vhost http port”,懂web服务的应该知道,如果多个http都用80端口,需要绑定域名来进行区分服务,如果不指定域名那么将访问默认的80服务,同样,填写的域名也是不能和服务器上其他的冲突。

按照上述设置后,在完成域名解析后可以通过 http://r.顶级域名.com:8080 这个 URL 访问到处于内网机器上对应的 Web 服务。即:输入 http://r.顶级域名.com:8080 访问 内网 IP:80 内容,这一点可见后文第二部分。

配置文件修改完成后,将程序拷贝到路由器外置U盘内,比如我的在:/tmp/mnt/sda1/frp/

/jffs/scripts/post-mount >>> /tmp/mnt/sda1/restart.sh >>> /tmp/mnt/sda1/scripts/nohup_frp.sh/tmp/mnt/sda1/scripts/nohup_iptables.sh

/jffs/scripts/post-mount(开机启动挂载U盘)添加以下脚本:

#!/bin/sh
sleep 10
nohup "/tmp/mnt/sda1/restart.sh" >> /dev/null 2>&1 &

新增 /tmp/mnt/sda1/restart.sh,并添加以下脚本:

#!/bin/sh
nohup "/tmp/mnt/sda1/scripts/nohup_frp.sh" >>/dev/null 2>&1 &

新增 /tmp/mnt/sda1/scripts/nohup_frp.sh,并添加以下脚本:

#!/bin/sh
cd /tmp/mnt/sda1/frp
./frpc -c ./frpc.ini >/dev/null 2>&1

二、域名解析(不可不设)

【内网穿透路由器】外网环境下使用Frp内网穿透路由器,实现后台的远程访问_第7张图片

三、访问测试

外网环境下可以通过访问 “http://r.顶级域名.com:8080” 的方式登陆路由器后台

【内网穿透路由器】外网环境下使用Frp内网穿透路由器,实现后台的远程访问_第8张图片

如果服务器上开启了nginx的web服务,那么在安装的时候“vhost http port”或“vhost https port”将不能使用80或443端口,如果习惯访问地址后面不添加端口,可以使用nginx反向代理的代码,修改下面的代码后就可以使用“http://你设置的域名”来访问frp了,其他的代码自行百度如何设置反向代理解决,下面给出NGINX的配置:

map $http_x_forwarded_for $clientRealip {
   "" $remote_addr;
   ~^(?P[0-9\.]+),?.*$  $firstAddr;
}

server {
       listen 80;
       server_name manage.frp.com;  #为frp的控制台绑定一个域名,这样你就可以用http://manage.frp.com访问你的控制台了
       location / {
           proxy_pass http://127.0.0.1:6443;  #此处的6443就是你安装frp时设置的dashboard_port端口
           proxy_set_header Host $host;
           proxy_set_header X-Real-IP $clientRealip;  # $remote_addr;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       }
}

server {
       listen 80;
       server_name *.frp.com; #将所有的frp.com子域名都绑定,这样就不用客户端填写一个你设置一个了,这样你可以用http://lisi-route.frp.com或http://zhangsan-route.frp.com访问你的穿透服务了。
       location / {
           proxy_pass http://127.0.0.1:7080; #此处的7080就是你安装frp时设置的vhost_http_port端口
           proxy_set_header Host $host;
           proxy_set_header X-Real-IP $clientRealip;  # $remote_addr;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       }
}

你可能感兴趣的:(★,路由器固件,★,内网穿透)