termux + frp + screen 实现内网穿透

内网穿透方法

当本地服务运行时,它会通过端口转发将内容暴露出去,而 frp 的配置文件会将本地端口暴露到外部网络。因此,在修改 frp 配置文件后,相关的本地服务也需要重新启动。例如,如果配置的是 SSH 穿透,在修改 frp 配置后,本地需要重新启动 sshd 服务。类似地,对于 nginx 服务,修改 frp 配置后,也需要执行 nginx -s reload 来重新加载配置。

ssh连接-termux

服务器布置

一、 下载frp arm64!!

1
2
# 网络好的话
wget https://github.com/fatedier/frp/releases/download/v0.61.0/frp_0.61.0_linux_arm64.tar.gz

二、复制到服务器中解压

1
2
tar zxvf frp_0.37.0_linux_arm64.tar.gz
cd frp_0.37.0_linux_arm64

三、下载 screen 并使用它创建frp服务器端

可以根据需要修改端口,我这里选择使用默认的,后期根据需要再去修改

1
2
3
4
pkg install -y screen
screen -S frps
./frps -c frps.ini
# 退出该screen:Ctrl + a,Ctrl + d
frps.ini
1
2
[common]
bind_port = 7000

客户端布置

frps与frpc的运行都在同一个设备上的termux中,通过screen创建多个实例来运行frps与fprc

1
2
3
4
5
screen -S frpc
vim frpc.ini	# 将该配置文件的ssh配置下的默认22端口修改成8022,因为手机上面低的端口有安全限制,所以这里 openssh 默认的 sshd 默认的服务端口号为 8022
./frpc -c frpc.ini
# 退出该screen:Ctrl + a,Ctrl + d
sshd	# 退出screen实例后运行 sshd 命令,使 6000 端口配置生效
fprc.ini
1
2
3
4
5
6
7
8
9
[common]
server_addr = x.x.x.x
server_port = 7000

[ssh]
type = tcp
local_ip = x.x.x.x
local_port = 8022
remote_port = 6000

测试frp内网穿透

1
ssh username@x.x.x.x -p 6000

web访问-nginx

在配置 frp 与 nginx 时,选择使用 TCP 协议而不是 HTTP 协议,是因为 HTTP 协议涉及的配置项较多且相对复杂,尤其是大多数示例都基于域名来进行配置。尽管我拥有域名,但考虑到不想花费过多时间在复杂的配置上,同时也只是想进行简单的验证,因此我选择了使用 TCP 协议。

服务器布置

一、 下载frp arm64!!

1
2
# 网络好的话
wget https://github.com/fatedier/frp/releases/download/v0.61.0/frp_0.61.0_linux_arm64.tar.gz

二、复制到服务器中解压

1
2
tar zxvf frp_0.37.0_linux_arm64.tar.gz
cd frp_0.37.0_linux_arm64

三、下载 screen 并使用它创建frp服务器端

可以根据需要修改端口,我这里选择使用默认的,后期根据需要再去修改

1
2
3
4
pkg install -y screen
screen -S frps
./frps -c frps.ini
# 退出该screen:Ctrl + a,Ctrl + d
frps.ini
1
2
[common]
bind_port = 7000

客户端布置

frps与frpc的运行都在同一个设备上的termux中,通过screen创建多个实例来运行frps与fprc

1
2
3
4
5
screen -S frpc
vim frpc.ini	
./frpc -c frpc.ini
# 退出该screen:Ctrl + a,Ctrl + d
sshd	# 退出screen实例后运行 sshd 命令,使 9000 端口配置生效
fprc.ini
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
[common]
server_addr = x.x.x.x
server_port = 7000

[ssh]
type = tcp
local_ip = x.x.x.x
local_port = 8022
remote_port = 6000

[nginx]
type = tcp              
local_ip = x.x.x.x
local_port = 8080       
remote_port = 9000

测试frp内网穿透

浏览器访问

1
x.x.x.x:9000