按理来说,现在ipv6普及了,我们应该使用ipv6+ddns,而不是frp内网穿透。
可最近有一酷友QQ上跟我说,他还在折腾frp,且搭建不起来,要我帮他搭建.....。
那好吧,楼主以前使用frp不知道是什么时候了,正所谓孔子曰,温故而知新,所以写下心得。
FRP内网穿透,顾名思义,就是外网服务器为内网需要暴露的机器提供端口转发服务。
其原理就是利用了反向连接,内网的机器先连接服务器,然后别人请求服务器,最后服务器为其转发到内网的机器。
frp搭建较为简单,到GitHub下载好对应系统的软件包,里面已经包含了服务端frps和客户端frpc,分别将其放置到对应的机器就可以。
linux和windows的搭建方法是一样,改好配置文件,输入启动命令就好了。
本文以3389远程桌面,http,ssh三合一整合搭建,其他服务可自行添加。
服务端修改 frps.ini
[common]
bind_port = 7000
vhost_http_port = 80
进入frp所在目录,注意windows按住shift,右键用powershell打开,不要用cmd。
./frps -c ./frps.ini
客户端修改 frpc.ini
[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
[3389]
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 6001
[web]
type = http
local_port = 80
custom_domains = 123.com
进入frp所在目录,注意windows按住shift,右键用powershell打开,不要用cmd。
./frpc -c ./frpc.ini
服务器防水墙放行7000,6000,6001,80。
客户端防水墙放行相关服务的端口即可。
域名123.com解析到x.x.x.x服务器ip。
这样访问123.com的6000,6001,80就会分别到达内网的ssh,3389远程,80网站了。
开机启动
以服务端为例,客户端对照frpc即可
Linux
把软件包文件夹systemd里的frps.service放到/etc/systemd/system/
这里。
把frps放到/usr/bin/
,把frps.ini放到/etc/frp/
。
systemctl enable frps.service
Windows
打开运行窗口,输入shell:Common Startup
,即可打开开机启动文件夹。
在里面新建一个批处理文件,后缀为.bat,输入如下内容:
cd \
cd E:\frp\
frps.exe -c frps.ini
第二行为frp所在目录,保存,开机即可启动。
结语:如果单单只为了解决内网问题,建议ipv6+ddns,简单粗暴,直连。如果是反向代理,为什么不选择nginx,同样可以转发tcp和http,还省去了反向连接的过程。当然,无论怎样,frp在ipv4时代,确实是一个不错的选择。
有才 有文采
没有没有