需求
内网服务器无法直接访问公网,内网的客户端可以访问公网,现在想让公网的其他客户端访问内网的服务器
分析
-
常规的方法就是在内网的出口设备上做一个目的NAT,指向内网的服务器
流量走向:其他客户端–>目的NAT的公网地址–>内网服务器 -
利用frp在公网服务器和内网客户端建立连接,在内网客户端利用nginx进行正向的代理,将流量转发至内网服务器
流量走向:其他客户端–>公网服务器–>内网客户端–>内网服务器
配置测试
注:这里的内网服务器为HTTP服务,对外开放80端口;这里将该HTTP服务映射到公网;公网的服务器记得放通对应的端口,否则无法建立连接。
-
公网服务器配置
1.1 配置frps.toml,bondport默认7000即可,用于内网客户端主动连接(公网服务器放通该端口)
1.2运行frp服务端
-
内网客户端配置
2.1配置frpc.toml:
serverAddr:公网服务器的地址
serverPort:前面配置的frps.toml监听口
localPort:本地开放的端口,如果本地有该端口的服务,则通过remotePort就能直接访问到localPort的服务;这里将使用nginx监听该端口,进行转发
remotePort:公网服务器将开放的端口,后续其他客户端通过访问该端口进行转发
2.2 运行frpc客户端
2.3配置nginx转发:
listen 1080:即前面frpc.toml配置的localPort,
server 10.121.230.41:80:即内网服务器的IP地址和端口
2.4运行nginx,这里start nginx是开启进程,-s reload是重新加载nginx的配置,保证没有报错
效果验证
通过访问公网服务器的地址,成功访问到内网服务器的服务