linux下使用frp实现内网穿透

2023年01月06日 2431点热度 0人点赞 0条评论

本来家里网络开了电信公网IP的,结果一次移机后电信悄悄取消了这个功能,投诉过,很坑爹的说必须开 399+100 元套餐才能重新开回公网IP!当然,在这个神奇的国家被这些神奇的国企坑也不是一次两次了,不能改变别人就只能改变自己了!
我有NAS服务器需要在互联网上访问,没公网IP就只能玩玩内网穿透了!
选了很多种内网穿透的软件,最后选择了最简单的 frpc 和 frps。

下载frp

# 源代码
https://github.com/fatedier/frp
# 编译好的包
https://github.com/fatedier/frp/releases/

我们是在 Linux 上使用,直接下载 frp_0.46.0_linux_amd64.tar.gz

https://github.com/fatedier/frp/releases/download/v0.46.0/frp_0.46.0_linux_amd64.tar.gz

下载的文件包含服务端和客户端:

配置服务端

服务端需要文件 frps 和 frps.ini

将服务端文件放在 /usr/local/frps
编辑 frps.ini

[common]
# 服务器IP,0.0.0.0为服务器全局所有IP可用,
# 假如你的服务器有多个IP则可以这样做,
# 或者填写为指定其中的一个服务器IP,支持IPV6
bind_addr = 0.0.0.0
# 通讯端口,用于和客户端内网穿透传输数据的端口,可自定义
bind_port = 7000
#UDP通讯端口,用于点对点内网穿透
bind_udp_port = 7001
# 用于KCP协议UDP通讯端口,在弱网环境下传输效率提升明显,
但是会有一些额外的流量消耗。设置后frpc客户端须设置 protocol = kcp
kcp_bind_port = 7000
# 信息展示面板监听端口,可自定义
dashboard_port = 8000
# http监听端口,注意可能和服务器上其他服务用的80冲突,比如centos有些默认有Apache,可自定义
vhost_http_port = 8880
# https监听端口,可自定义
vhost_https_port = 8443
# 信息展示面板登录账号和密码
dashboard_user = admin
dashboard_pwd = 123456
# 日志文件
log_file = ./frps.log
# 日志文件级别:debug, info, warn, error
log_level = info
# 日志文件保留天数
log_max_days = 30
# 特权模式认证密钥
token = SdXZ8C7FkM3VcT5F
# 端口白名单,为了防止端口被滥用,可以手动指定允许哪些端口被使用
allow_ports = 1025-65535
# 每个内网穿透服务限制最大连接池上限,避免大量资源占用,可自定义
max_pool_count = 50
# 是否使用tcp复用,默认为true, frp只对同意客户端的连接进行复用
tcp_mux = true
# 二级域名后缀
subdomain_host = wocao.online

开机启动:

nano /etc/rc.local

在最后增加

/usr/local/frps/frps -c /usr/local/frps/frps.ini &

这样就能自动启动 frps 服务器了!

登录 http://你的IP:8000 就能看到如下界面:

然后在防火墙开放服务器必要的端口和客户端需要映射的端口:
# 请根据自己的情况开放端口,别跟我学,会害死一车人的。

firewall-cmd --permanent --add-port=7000/tcp
firewall-cmd --permanent --add-port=8000/tcp
firewall-cmd --permanent --add-port=19280/tcp
firewall-cmd --permanent --add-port=19282/tcp
firewall-cmd --permanent --add-port=19380/tcp
firewall-cmd --permanent --add-port=19382/tcp
firewall-cmd --permanent --add-port=19999/tcp
firewall-cmd --reload

也可以学我,找一个喜欢的域名指定你的服务器IP,但会涉及到备案问题,这个自己想办法解决。

如果是云主机别忘了到服务商的管理系统中打开对应的防火墙端口!

配置客户端

客户端需要文件 frpc 和 frpc.ini

将客户端文件放在 /usr/local/frpc
编辑 frpc.ini

[common]
# 服务器IP地址或绑定的域名
server_addr = wocao.xyz
# 服务器通讯端口
server_port = 7000
# 认证密钥,必须和服务器一样!
token = SdXZ8C7FkM3VcT5F

# 本地客户端映射端口
[Downloader]
# 类型,我这里全用的tcp,还支持udp啥的自己研究
type = tcp
# 本地网终需要映射的IP地址
local_ip = 10.0.0.6
# 本地需要映射的端口
local_port = 8000
# 远程服务器转发端口
remote_port = 19280

[DiskStation]
type = tcp
local_ip = 192.168.1.5
local_port = 8000
remote_port = 19282

[Downloader_SSH]
local_ip = 192.168.1.5
local_port = 22
remote_port = 19380

[DiskStation_SSH]
local_ip = 192.168.1.5
local_port = 22
remote_port = 19382

[Route]
local_ip = 192.168.1.1
local_port = 80
remote_port = 19999

设置开机启动:

nano /etc/rc.local

在最后增加(延迟15秒启动,别问我为什么,问就是我喜欢我高兴):

sleep 15 && /usr/local/frpc/frpc -c /usr/local/frpc/frpc.ini &

客户端启动后服务器展示面板的 Proxies -> TCP 中将看到:

status 状态为绿色的 online 表示转发生效

现在就可以通过 http://你的IP:remote_port 访问对应的内网端口了!

最后说明下

frpc 使用广泛,所有的软路由、openwrt、群晖啥的都能装,某些国产路由器也能装,实在不行装在你运行的 windows 电脑上也行,frpc 也有windows版的,配置方法完全一样。一经安装,你网内所有设备都能映射到互联网了!

我个人是在咸鱼买了个树莓派小板装个Linux,很便宜的,再配个外壳加个小风扇,电源可以直接插在路由器USB上取电,方便好用,小巧美观还不占地方!还可以插个移动硬盘下载东西玩玩~或是装个博客什么的都行,可玩度很高!

至于访问速度取决于你服务器的带宽,推荐使用腾讯云的轻量级服务器,2C2G5M的,在淘宝上购买大概80元就可以玩一年!5M的带宽每秒传输速度500K左右,传个文件放个电影基本上都能用了!土豪请随意。

 

路灯

这个人很懒,什么都没留下

文章评论