使用frp实现内网穿透

需求说明

我的需求是需要在公司远程访问家里的电脑和需要访问一下家里的web测试。

那么就需要使用内网穿透

架构大概就是:需要一台有公网的服务器安装frps作为内网穿透的服务端,在家里的电脑安装frpc作为客户端,服务端转发客户端的端口,然后访问公网+转发的端口,即可访问家里的电脑。

frp下载

frp是golang写的开源软件,代码发布在github,所以直接在github下载相关代码即可。

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

根据自己需求下载版本

服务端和客户端都在一个包里,解压下来即可

部署服务端 frps

我会把Windows和linux两种方式都写上,共大家参考。

Windows安装方式

Windows server 和 Windows 普通版本的安装方法一致

解压下来后,大概是有一下几个文件:

  • frpc.exe
  • frpc.ini
  • frps.exe
  • frps.ini
  • LICENSE

部署

在服务端我们仅需要frps.exe和frps.ini两个文件就好了

创建一个安装目录 : C:\frps

把frps.exe和frps.ini两个文件放入 C:\frps

修改frps.ini文件:

[common]
bind_port = 7000

临时运行:

PS C:\frps> .\frps.exe -c .\frps.ini
2022/08/10 16:43:41 [I] [root.go:209] frps uses config file: .\frps.ini
2022/08/10 16:43:41 [I] [service.go:194] frps tcp listen on 0.0.0.0:7000
2022/08/10 16:43:41 [I] [root.go:218] frps started successfully

加入入站规则

控制面板\系统和安全\Windows Defender 防火墙 选择 高级设置 进入 高级安全 Windows Defender 防火墙

点击入站规则 -> 新建规则 -> 程序 -> 此程序路径(%SystemDrive%\frps\frps.exe) -> 允许连接 -> 配置文件(默认全选) -> 设置名称(frps.exe) -> 完成

linux安装方式

创建安装目录,然后把 程序和配置文件拷贝进去

sudo mkdir -p /usr/local/frps
sudo cp frps frps.ini /usr/local/frps

修改frps.ini文件:

[common]
bind_port = 7000

运行:

$ sudo /usr/local/frps/frps -c /usr/local/frps/frps.ini 
2022/08/10 17:03:38 [I] [root.go:209] frps uses config file: /usr/local/frps/frps.ini
2022/08/10 17:03:38 [I] [service.go:194] frps tcp listen on 0.0.0.0:7000
2022/08/10 17:03:38 [I] [root.go:218] frps started successfully

通过防火墙, 7000为通讯端口,6000为代理端口,到时候只需要IP:6000就可以访问我们需要的应用了

firewall-cmd --zone=public --add-port=7000/tcp --permanent
firewall-cmd --zone=public --add-port=6000/tcp --permanent
firewall-cmd --reload

Windows安装方式

Windows server 和 Windows 普通版本的安装方法一致

部署

在服务端我们仅需要frpc.exe和frpc.ini两个文件就好了

创建一个安装目录 : C:\frpc

把frpc.exe和frpc.ini两个文件放入 C:\frpc

修改frpc.ini文件:

server_addr = x.x.x.x 把 x.x.x.x 替换成公网IP

[common]
server_addr = x.x.x.x
server_port = 7000

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

运行:

PS C:\frpc> .\frpc.exe -c .\frpc.ini
2022/08/10 17:47:02 [I] [service.go:349] [70ff33af6b36ab57] login to server success, get run id [70ff33af6b36ab57], server udp port [0]
2022/08/10 17:47:02 [I] [proxy_manager.go:144] [70ff33af6b36ab57] proxy added: [ssh]
2022/08/10 17:47:02 [I] [control.go:181] [70ff33af6b36ab57] [ssh] start proxy success

加入入站规则

控制面板\系统和安全\Windows Defender 防火墙 选择 高级设置 进入 高级安全 Windows Defender 防火墙

点击入站规则 -> 新建规则 -> 程序 -> 此程序路径(%SystemDrive%\frpc\frpc.exe) -> 允许连接 -> 配置文件(默认全选) -> 设置名称(frps.exe) -> 完成

linux安装方式

创建安装目录,然后把 程序和配置文件拷贝进去

sudo mkdir -p /usr/local/frpc
sudo cp frpc frpc.ini /usr/local/frpc

修改frpc.ini文件:

server_addr = x.x.x.x 把 x.x.x.x 替换成公网IP

[common]
server_addr = x.x.x.x
server_port = 7000

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

运行:

$ sudo  ./frpc -c frpc.ini 
2022/08/10 17:41:35 [I] [service.go:349] [0f5cc898110af7a1] login to server success, get run id [0f5cc898110af7a1], server udp port [0]
2022/08/10 17:41:35 [I] [proxy_manager.go:144] [0f5cc898110af7a1] proxy added: [ssh]
2022/08/10 17:41:35 [I] [control.go:181] [0f5cc898110af7a1] [ssh] start proxy success

通过防火墙

firewall-cmd --zone=public --add-port=7000/tcp --permanent
firewall-cmd --zone=public --add-port=6000/tcp --permanent
firewall-cmd --reload

验证是否成功

  1. 通过 SSH 访问内网机器,假设用户名为 test:
   ssh -oPort=6000 test@x.x.x.x

frp 会将请求 x.x.x.x:6000 的流量转发到内网机器的 22 端口。

相关文章

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注