frp内网穿透
一:官方介绍:
frp是一种快速反向代理,可帮助您将NAT或防火墙后面的本地服务器公开到Internet。目前,它支持TCP和UDP,以及HTTP和HTTPS协议,在这些协议中,请求可以通过域名转发到内部服务。frp还具有P2P连接模式。
官方文档:https://gofrp.org/
二:下载软件包
https://github.com/fatedier/frp/releases
我这里下载两个,一个win和一个linux的,注意对应版本号。
我这里要实现这么一个玩意儿,通过访问linux服务器(公网),穿透到win服务器(内网)。要实现这个必须满足两个条件:
1:需要有一个公网固定IP的linux服务器
2:linux和win通过frp保持连接
三:服务端安装:
我这里用linux做服务端,我下载的是:frp_0.42.0_linux_amd64.tar.gz
tar -xvf frp_0.42.0_linux_amd64.tar.gz解压后进入目录:
打开配置文件frps.ini看一下:
[common] bind_port = 7000
这里先不管,我们把上面这些干掉,加入以下:
[common] bind_port = 7000 #服务端口,后面另外一端就配置指向这个端口 vhost_http_port = 8080 #vhost_http_port 用于接收 HTTP 请求,还额外提供了基于 HTTP 协议的功能。
注意:这里的7000端口必须要打开,否则从外面访问不进来,我这里是为了说明,实际配置中必须去掉注释,否则有意想不到的错误
然后启动:
nohup ./frps -c ./frps.ini &报:nohup: ignoring input and appending output to 'nohup.out' 忽略错误,直接回车
看看启动是否成功:
# ps -ef | grep frps root 24365 17909 0 02:07 pts/0 00:00:00 ./frps -c ./frps.ini root 24392 17909 0 02:07 pts/0 00:00:00 grep --color=auto frps服务端启动OK
四:配置内网 win环境
我这里下载的是frp_0.42.0_windows_amd64.zip。直接解压,我这里放在D盘吧,编辑ftpc.ini
[common] server_addr = x.x.x.x #这个是上面那个服务端,linux的ip server_port = 7000 #这个是上面那个服务端的绑定端口 # 我这里配置两个访问域名 [web] type = http local_ip = 127.0.0.1 #映射到本地ip local_port = 8081 #映射到本地端口 custom_domains = www.abc.com [web2] type = http local_ip = 127.0.0.1 local_port = 8082 custom_domains = www.efg.com
实际配置的时候把上面那个注释去掉,不然可能会报错
(1):将 www.abc.com 和 www.efg.com 的域名 A 记录解析到 IP x.x.x.x,如果服务器已经有对应的域名,也可以将 CNAME 记录解析到服务器原先的域名。或者可以通过修改 HTTP 请求的 Host 字段来实现同样的效果。
(2):通过浏览器访问 http://www.abc.com:8080 即可访问到处于内网机器上 8081 端口的服务,访问 http://www.efg.com:8080 则访问到内网机器上 8082端口的服务。
cmd 到目录,执行:
frpc.exe -c frpc.ini
有没有发现什么?外网用的是frps,内网用的是frpc,两个都在一个包下面,分别配置、启动。