前言
假设有如下网络拓扑
A可以访问B,但B无法访问A。A和B都能访问C。如果B需要访问A的8000端口,一般有如下方法:
- 网络管理员做路由转发。硬件层面网络转发,性能一般来说更好,但需要熟悉路由配置。
- 用C作为代理,基于frp实现内网穿透。配置更灵活,网络管理员无介入或低介入。
部署frp服务端
- 系统:centos 7
- 下载地址:GitHub - fatedier/frp - Release
- 登录主机C
- 下载linux-amd64版的压缩包
- 解压
tar xf frp_0.44.0_linux_amd64.tar.gz -C /home/apps/
- 启动。如果是公司内网环境,直接用默认配置即可。默认端口为7000,需要保证该端口不冲突。有防火墙的话需要开一下该端口。
cd /home/apps/frp_0.44.0_linux_amd64
nohup ./frps -c ./frps.ini > app.log 2>&1 &
部署frp客户端
- 系统:windows 10
- 下载地址:GitHub - fatedier/frp - Release
- 在主机A下载windows版的压缩包并解压
- 编辑配置文件
frpc.ini
[common]
server_addr = 192.168.30.10
server_port = 7000
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 8000
remote_port = 6000
common 里为代理人主机C的IP,ssh里为本地配置, remote_port为主机C的端口,需要保证主机C的6000端口没有被占用
- cmd里启动
.\frpc.exe -c .\frpc.ini
测试
主机B访问主机C的6000端口,查看是否正常打开。