需求说明
我的需求是需要在公司远程访问家里的电脑和需要访问一下家里的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
验证是否成功
- 通过 SSH 访问内网机器,假设用户名为 test:
ssh -oPort=6000 test@x.x.x.x
frp 会将请求 x.x.x.x:6000
的流量转发到内网机器的 22 端口。