用frp实战内网穿透
大神的frp工具可以高效简便的进行内网穿透,我实践了一下用家里的斐讯K2P路由器作为服务器进行内网穿透,把遇到的坑写出来。
解释一下,之所以用家里的路由器作为服务器是因为家里是拨号,有公网IP,不用就浪费了。
路由器默认不接受传入数据
我遇到最大的坑是,路由器开了端口,从外面还是连不上。想了一下,觉得是端口没有正常开放,用nc -z -vv
一试果然如此。新建一个防火墙规则开放相应的端口就好了,代码是这样的
1 | config rule |
上面的代码放在/etc/config/firewall
然后/etc/init.d/firewall reload
,就好了。如果想安全可以限定连接的IP,就是加一条option src_ip '111.111.111.111
,限定来源IP,这样彻底安全了。
一些写firewall规则的参考送给感兴趣的读者
https://oldwiki.archive.openwrt.org/doc/uci/firewall
K2P上安装配置frps
K2P内存太小了,根本安不上frps
,我只能把它放在/tmp
里。具体的下载安装方法不赘述,需要注意的是K2P需要下载mipsle版本。
配置按照最简单的来,也容易。难的是要写一个启动脚本,下面的是我写的,我觉得还比较优雅。
1 |
|
上面的代码存为/etc/init.d/frps
,然后/etc/init.d/frps start
等等就可以了。
自动更新IP
用的是Duck DNS,就叫它鸭鸭DNS吧。
配置方法看官方的文档就好。
http://www.duckdns.org/install.jsp
配置内网的服务器
内网的服务器当然是Arch Linux啦,frp在AUR上有,安装就好了,不多说了。需要注意的是配置文件里每一项的含义,我解释一下
1 | [common] |
试着解释一下原理:
- 有公网IP的路由器开放7000端口。
- 服务器在内网,主动连路由器的7000端口。
- 建立连接后,路由器开6000端口,把收到的包转给在内网的服务器。
- 我在其他地方连路由器的6000端口,相当于连到内网服务器上,实现了穿透。
实际效果
如果用VPN,延迟要50 ms,实际使用的延迟更高。用frp后延迟可以忍受,因为我的服务器和家里的路由器直线距离才2 km,ping的延迟5 ms,可如果走糟糕的VPN,慢太多了。
心得是,纸上得来终觉浅,绝知此事要躬行。
或者您可以把评论发在别处,添加指向本页的连接,然后把网址告诉我:
本文标题:用frp实战内网穿透
文章作者:Chris
发布时间:2018-11-30
最后更新:2023-09-06
原始链接:https://chriszheng.science/2018/11/30/Practical-frp/
版权声明:本博客所有文章除特别声明外,均采用 CC BY 4.0 许可协议。转载请注明出处!
分享