frp内网穿透

作为程序员,终归是要有自己的服务器的,之前一直使用各种云服务,但是每年续费也是个不小的开销,而且云服务的磁盘和网络也受限(主要是付给云服务的米少,配置低),后来想着自己买一台服务器物理机,放在家中使用,还是挺好的。服务买回来后,怎么通过公网,去远程访问,是个麻烦的事情。试了好几种方案,最终使用 frp 完美解决我的问题

 想实现内网穿透的前提,必须得有一个公网ip和内网进行映射,公网ip可以是家庭网络的公网(打电话找电信运营商申请),也可以是云服务的公网ip

方案1:电信外网ip + 域名

      申请电信外网ip, 和自己的域名进行绑定,然后在路由器上设置 外网端口和自己的物理机内网端口的绑定和映射,即可实现。

      由于电信外网ip 是免费的,会不定时动态更换,这也是需要绑定域名的原因。只要解决域名和动态ip的动态绑定问题,则在使用中,就可以直接使用域名,以不变(域名)应万变(动态的外网ip)。

解决域名和外网ip动态绑定,阿里云提供的有api, 整体思路是:物理服务器可定时检测(linux cron 定时跑执行)外网ip是否变更,如变更,则调用阿里云的api,动态绑定新的ip到域名。具体也可以

GitHub - limoxi/aliyun_ddns: 基于阿里云解析的动态域名解析 可参考这个。

弊端:

内外网 端口映射,必须在路由器上进行设置,当远程登录在服务器上搭建一个组件比如 redis mysql  zookeeper  kafka 等,如果没有提前配置对应的内外网的端口映射,也会阻塞工作的进度。要想远程登录访问内网的路由器管理端,也是一件麻烦的事情。(笔者是linux 系统,最终通过配置VNC开启远程可访问桌面模式,实现先远程登录桌面,然后在桌面模式下,再打开路由器管理界面,进行配置和映射,整体还是有点麻烦)

方案2:花生壳   net123

这两个工具,免费的都支持端口映射,但是映射数量支持2个,对于开发者而言,实际需要暴露的端口会是比较多的,这一点就满足不了了,所以也只能临时用来支持一下22端口,进行远程访问。

他们的收费方案中,端口也不是随心自由定义的,而且整体数量也会受限,就不再考虑了。

方案3:frp 内网穿透--开源解决方案

前提:需要一台带有公网ip的云服务

官网:frp

文档:https://gofrp.org/docs/setup/

github: https://github.com/fatedier/frp

在 Github 的 Release 页面中下载到最新版本的客户端和服务端二进制文件,可以选择符合自己系统的版本进行下载

 

下载后,解压frp 可以看到 frps  和  frpc相关的文件,分别表示应用在服务端和客户端。服务端指的是带有公网ip的云服务,客户端指的的是本地内网的物理机服务器。分别把 frp 下载到 服务端和客户端。

在服务端进行配置frps.ini:

[common]
# clien端绑定的端口
bind_port = 7000
# 授权给cliend 端的token 随便写
token = 12345678
# 服务端 自动后 访问的端口,和对应的用户名 密码
dashboard_user = admin
dashboard_pwd = admin
dashboard_port = 7500
# 开启的 映射的 80端口 和 443端口
vhost_http_port = 10080
vhost_https_port = 10443
#bind_addr 是云主机的内网 ip
bind_addr= 192.168.16.4

# frp日志配置
log_file = /my/frp_0.32.1_linux_amd64/log/frps.log
log_level = info
log_max_days = 3

启动命令:

nohup ./frps -c ./frps.ini &

然后通过公网ip:7500进行访问,如下即表示成功

 

在客户端服务进行配置 frpc.ini

[common]
#  公网服务器ip 或域名
server_addr = 
##与服务端bind_port一致
server_port = 7000
#与服务端bind_port一致
token = 12345678

log_file = /my/neiwangchuantou/frp_0.32.1_linux_amd64/log/frpc.log
log_level = info
log_max_days = 3

# RDP,即Remote Desktop 远程桌面,Windows的RDP默认端口是3389,协议为TCP,建议使用frp远程连接前,在局域网中测试好,能够成功连接后再使用frp穿透连接。
#SMB,即Windows文件共享所使用的协议,默认端口号445,协议TCP,本条规则可实现远程文件访问
[rdp]
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 7001

[smb]
type = tcp
local_ip = 127.0.0.1
local_port = 445
remote_port = 7002

# 连接vnc
[vnc]
type = tcp
local_ip = 127.0.0.1
local_port = 5900
remote_port = 5900
use_encryption = true
use_compression = true

# 访问内网http/https服务
[web]
type = http
local_ip = 192.168.1.26
local_port = 80
remote_port = 80
custom_domains = # 公网ip 或者域名


# 连接内网SSH
[ssh]
type = tcp
# 内网服务器ip
local_ip = 192.168.1.26
local_port = 22
remote_port = 22
custom_domains = # 公网ip 或者域名

[redis]
type = tcp
# 内网服务器ip
local_ip = 192.168.1.26
local_port = 6379
remote_port = 6379
custom_domains = # 公网ip 或者域名

启动命令:

nohup ./frpc -c ./frpc.ini &

此时再次访问公网ip:7500, 即可看到proxies 端口映射已经正常了

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值