frp内网穿透
frp 是一个开源、简洁易用、高性能的内网穿透和反向代理软件,支持 tcp, udp, http, https等协议。frp 项目官网是 https://github.com/fatedier/frp
frp工作原理
- 服务端运行,监听一个主端口,等待客户端的连接;
- 客户端连接到服务端的主端口,同时告诉服务端要监听的端口和转发类型;
- 服务端fork新的进程监听客户端指定的端口;
- 外网用户连接到客户端指定的端口,服务端通过和客户端的连接将数据转发到客户端;
- 客户端进程再将数据转发到本地服务,从而实现内网对外暴露服务的能力。
服务端安装配置
需要根据服务器情况下载相应版本,一般是amd64
# 下载
wget https://github.com/fatedier/frp/releases/download/v0.45.0/frp_0.45.0_linux_amd64.tar.gz
# 解压
tar -zxvf frp_0.45.0_linux_amd64.tar.gz
mv frp_0.45.0_linux_amd64 /usr/local/frp_0.45.0
服务端配置 /opt/frp/frps.ini
[common]
server_addr = x.x.x.x
bind_port = 7000
token = xxx******
# frp管理后台端口,请按自己需求更改
dashboard_port = 7100
# frp管理后台用户名和密码,请改成自己的
dashboard_user = admin
dashboard_pwd = admin
enable_prometheus = true
# frp日志配置
log_file = /var/log/frps.log
log_level = info
log_max_days = 3
防火墙配置
firewall-cmd --permanent --zone=public --add-port=7000-7100/tcp
启动脚本
ps -ef |grep frps |awk {'print $2'} | sed -e "s/^/kill -9 /g" |sh -
nohup /usr/local/frp_0.45.0/frps -c /usr/local/frp_0.45.0/frps.ini > /dev/null 2>&1 &
客户端安装配置
需要根据情况下载相应版本,服务器一般是amd64,手机一般是arm64
# 下载
wget http://dl.your-domain.com/frp_0.45.0_linux_arm64.tar.gz
tar -zxvf frp_0.45.0_linux_arm64.tar.gz
mv frp_0.45.0_linux_arm64 /usr/local/frp_0.45.0
客户端配置 /opt/frp/frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000
token = xxx******
[centos_ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 7022
[centos_flask]
type = tcp
local_ip = 127.0.0.1
local_port = 5000
remote_port = 7050
启动脚本
ps -ef |grep frpc |awk {'print $2'} | sed -e "s/^/kill -9 /g" |sh -
nohup /usr/local/frp_0.45.0/frpc -c /usr/local/frp_0.45.0/frpc.ini > /dev/null 2>&1 &
Termux安装和启动
wget http://dl.your-domain.com/frp_0.45.0_linux_arm64.tar.gz
tar -zxvf frp_0.45.0_linux_arm64.tar.gz
mv frp_0.45.0_linux_arm64 frparm64
rm -f frp_0.45.0_linux_arm64.tar.gz
cat >$HOME/frparm64/frpc.ini<<EOF
[common]
server_addr = x.x.x.x
bind_port = 7000
token = xxx******
[sshclientname]
type = tcp
local_ip = 127.0.0.1
local_port = 8022
remote_port = 30022
EOF
read -p 'frp client name:' cliname
sed -i "s/sshclientname/${cliname}_ssh/g" $HOME/frparm64/frpc.ini
nohup $HOME/frparm64/frpc -c $HOME/frparm64/frpc.ini > /dev/null 2>&1 &