跳至正文

frp内网穿透

路由器安装图形化客户端(不建议使用)

https://github.com/kuoruan/luci-app-frpc/releases

opkg install luci-app-frpc_1.2.1-1_all.ipk

opkg install luci-i18n-frpc-zh-cn_1.2.1-1_all.ipk

安装frp官方程序

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

1.安装客户端

路由器根据cpu架构选择程序包

详细可参考以下文章

https://doc.natfrp.com/#/frpc/usage/linux

运行dpkg –print-architecture即可查询主机架构,树莓派安装arm版

路由器cpu mt7620使用mipsle

客户端使用fprc和fprc.ini

服务端使用fprs和fprs.ini

拷贝到合适的位置即可

2.客户端配置

[common]
server_addr = 47.100.63.235
server_port = 7000

[web]
type = http
local_ip = 127.0.0.1
local_port = 80
custom_domains = 47.100.63.235

参考范例

[common]
server_addr = 120.56.37.48 #公网服务器ip
server_port = 7000 #与服务端bind_port一致

公网通过ssh访问内部服务器

[ssh]
type = tcp #连接协议
local_ip = 192.168.3.48 #内网服务器ip
local_port = 22 #ssh默认端口号
remote_port = 6000 #自定义的访问内部ssh端口号

公网访问内部web服务器以http方式

[web]
type = http #访问协议
local_port = 8081 #内网web服务的端口号
custom_domains = repo.iwi.com #所绑定的公网域名服务器

如需使用二级域名则可参考以下,三级四级域名仍然需要解析

[common]

# frp连接的端口
bind_port = 7000

# http监听端口
vhost_http_port = 8080
# https监听端口
vhost_https_port = 8443

# frp客户端连接服务端时的token 为了安全 建议添加
token = tPaALZKtCBfN6IAp

# 二级域名 后面访问的格式是a.frp.xxx.net或b.frp.xxx.net
subdomain_host = frp.xxx.net


使用命令启动./frps -c ./frps.ini
[common]
# 公网ip 就是frps所在的服务器的ip
server_addr = xxx.xxx.xxx.xxx
# frps规定的连接端口
server_port = 7000
# 连接token 与frps中的token
token = tPaALZKtCBfN6isP
# 定义第一个转发
[web01]
type = http
# 本地(内网)服务的端口
local_port = 8001
# 与frps中的subdomain_host连接起来就是a.frp.xxx.net
subdomain = a

# 定义第二个转发
[web02]
type = http
# 本地(内网)服务的端口
local_port = 8002
# 与frps中的subdomain_host连接起来就是b.frp.xxx.net
subdomain = b

修改客户端ini文件后可使用reload热加载

./frpc -c ./frpc.ini --reload

3.配置开机自启动

在/etc/rc.local文件中写入或者在网页端启动项中写入

/mnt/sda1/frp/frpc -c /mnt/sda1/frp/frpc.ini > /dev/null 2>&1 &

4.安装服务端

把frps和frps.ini放到/usr/local/frp目录下

修改ini文件

[common]

bind_port = 7000 #与客户端绑定的进行通信的端口

vhost_http_port = 9000 #公网服务器如果没有80端口权限,需要修改访问端口,也可不添加该端口,在frpc配置中指定remote_port = port

保存然后启动服务./frps -c ./frps.ini,这是前台启动,后台启动命令为nohup ./frps -c ./frps.ini &

如果提示权限不足,修改文件权限为775

出现篮字即运行成功

5.服务端配置

新建/etc/init.d/frps文件,写入以下内容,文件路径适当修改

#!/bin/sh
### BEGIN INIT INFO
# Provides: frps
# Required-Start: $remote_fs $network
# Required-Stop: $remote_fs $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Aria2 Downloader
### END INIT INFO
 
case "$1" in
start)
 
 echo -n "已开启frps"
 nohup /usr/local/frp/frps -c /usr/local/frp/frps.ini >/dev/null 2>&1 &
;;
stop)
 
 echo -n "已关闭frps"
 killall frps
;;
restart)
 
 killall frps
 nohup /usr/local/frp/frps -c /usr/local/frp/frps.ini >/dev/null 2>&1 &
;;
esac
exit

添加文件可执行权限

sudo chmod 755 /etc/init.d/frps

添加frp服务到开机启动

sudo update-rc.d frps defaults

启动服务

sudo service frps start

查看服务状态

sudo systemctl status frps

参考

https://gofrp.org/docs/reference/

如果服务器80端口可用,可以通过配置nginx端口转发使用80端口

server {
	listen 8000;
        server_name service.i0x0.cn;
        location / {
                proxy_pass http://service.i0x0.cn:9000;
        }
}

附上例子

frps

[common]
bind_port = 7000
token = qweasdzxc

frpc

[common]
server_addr = 47.100.63.235
server_port = 7000
token = qweasdzxc
tcp_mux=true
protocol=tcp

[server]
type = tcp
local_ip = 127.0.0.1
local_port = 80
use_encryption=true
remote_port = 12333

2022.4.7设置笔记

服务端

[common]
bind_port = 端口
token = 密码
protocol = tcp

客户端

[common]
server_addr = 服务端公网地址
server_port = 服务端端口
token = 密码

[mstsc]
type = tcp
local_ip = 127.0.0.1
local_port = 本地端口
remote_port = 远程访问端口
use_encryption=true #开启加密
use_compression=true #开启压缩

注册服务

vim /lib/systemd/system/frps.service #创建服务文件

[Unit]
Description=Frps Service
After=network.target syslog.target
Wants=network.target

[Service]
Type=simple
Restart=on-failure
RestartSec=5s
ExecStart=/bin/sh -c '/etc/frp/frps -c /etc/frp/frps.ini'

[Install]
WantedBy=multi-user.target

systemctl daemon-reload #重新加载系统服务

systemctl start frps #启动服务

systemctl status frps #查看服务状态

服务设置参考

发表回复