应用场景
一个简单的例子,家里有内网摄像头,想要暴露到外网,实现随时在互联网访问,但又不能在ISP那里申请到公网IP,这里就可以使用内网穿透,你只需一台有公网ip的服务器,和一台内网服务器就可以实现。
或者我们自己在home server上运行了一个项目,但想在互联网上访问,我们可以在home server上运行frpc,在外网服务器运行frps。
穿透方案
使用软件:Frp
Frp
是一款流行的跨平台开源免费内网穿透反向代理应用,在公网服务器安装一个server端,内网服务器安装一个客户端,起到一个中转转发的作用,从而实现内网暴露到外网,实际就是一个反向代理转发器。
代理类型
frp 支持多种代理类型来适配不同的使用场景。
类型 |
描述 |
tcp |
单纯的 TCP 端口映射,服务端会根据不同的端口路由到不同的内网服务。 |
udp |
单纯的 UDP 端口映射,服务端会根据不同的端口路由到不同的内网服务。 |
http |
针对 HTTP 应用定制了一些额外的功能,例如修改 Host Header,增加鉴权。 |
https |
针对 HTTPS 应用定制了一些额外的功能。 |
stcp |
安全的 TCP 内网代理,需要在被访问者和访问者的机器上都部署 frpc,不需要在服务端暴露端口。 |
sudp |
安全的 UDP 内网代理,需要在被访问者和访问者的机器上都部署 frpc,不需要在服务端暴露端口。 |
xtcp |
点对点内网穿透代理,功能同 stcp,但是流量不需要经过服务器中转。 |
tcpmux |
支持服务端 TCP 端口的多路复用,通过同一个端口访问不同的内网服务。 |
软件安装(客户端与服务端)
检查架构
arch
X86_64选择amd64
wget https://github.com/fatedier/frp/releases/download/v0.34.3/frp_0.34.3_linux_amd64.tar.gz
其他架构在GitHub可以找到下载链接
以0.34.3版本为例
解压
tar -zxvf frp_0.34.3_linux_amd64.tar.gz
顺便重命名
mv frp_0.34.3_linux_amd64 frp
或者
cp -r frp_0.34.3_linux_amd64 frp
服务端设置
cd path/to/frp
vim frps.ini
bind_port = 1234
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = password
[ssh]
type = tcp
listen_port = 8888
auth_token = xxxx
不用dashboard
可以不设置,主要设置的是bind_port
、listen_port
bind_port
是供客户端的端口号,对应客户端server_port的设置
listen_port
是对外开放的端口,连接成功后通过公网ip
+这个端口可以访问到内网local_port
端口上的服务
配置完成后,
./frps -c frps.ini&
即可启动服务。
客户端设置
cd path/to/frp
vim frpc.ini
[common]
server_addr = x.x.x.x
server_port = 1234
auth_token = xxxx
[ssh]
type = tcp
local_ip = x.x.x.x
local_port = 22
remote_port = 8888
auth_token = xxxx
主要设置的是server_addr
、local_ip
、local_port
、server_port
、remote_port
server_port
是连接服务端的端口号,对应服务端bind_port
的设置
remote_port
是对应服务端listen_port
的设置
配置完成后,
./frpc -c frpc.ini&
即可启动服务。
更多
baiduzheLV6
外网服务器是不是要买
NiimiSoraLV4
是的,需要一个有公网ip的外网服务器,可以是VPS或者轻量应用服务器
wxccnaLV3
甚至你还能学习到运维