当前位置: 首页 > news >正文

使用frp内网穿透实现远程办公

最近需要远程办公,不过居家访问公司服务器遇到一些困难,需求就是在家里安全访问公司内网中的服务器。

    服务器只有一个局域网ip,没有公网ip,同一局域网内的设备可以通过局域网ip访问,而Internet上的设备最多只能找到公司的路由器,进不了局域网。

一、接入上网环境分析

    我们使用公网一般有三种形式:

    1. 路由器分配了一个或多个固定的公网IP:

    这种情况访问内网服务器比较方便,在路由器中做端口映射,然后就可以使用公网ip+端口号访问了。

    2. 路由器被分配了一个动态公网IP:

    也同样在路由中设置端口映射,不过由于公网IP经常在变,因此应该采用动态域名来做解析,采用动态域名+端口号也可以访问。

    3. 路由器被分配了一个动态内网IP:

    这种情况最麻烦,不过目前最常见,我们公司目前就是如此,动态域名解析后得到私有C类地址,比如192.168.2.3,这就必须采用内网穿透了。

二、内网穿透简单了解

    内网穿透即是内网映射,内网(IP)端口映射外网(IP或域名),以实现将内网服务器、网站、和应用发布到外网访问的目的。通常在内网网络环境搭建服务器(解决无公网IP问题),需要外网访问内网场景(如远程办公)。

    内网穿透工具很多,比如开源的frp和ngrok、老牌的nat123和花生壳等,通过比较选择了frp来实现,如果自己搭建需要借助一个有公网ip的云服务器。

三、FRP简介

   frp是一款采用golang编写的开源内网穿透反向代理应用,支持 Windows、macOS与 Linux,支持 TCP、UDP 协议,支持http 和 https 协议,在公网服务器安装一个server端,内网服务器安装一个客户端,起到一个中转转发的作用,从而实现内网暴露到外网,实际就是一个反向代理转发器。

   其软件地址为https://github.com/fatedier/frp,目前最新版本是0.41.0

   frp 支持多种代理类型来适配不同的使用场景。

   tcp :单纯的 TCP 端口映射,服务端会根据不同的端口路由到不同的内网服务。

   udp :单纯的 UDP 端口映射,服务端会根据不同的端口路由到不同的内网服务。

   http :针对 HTTP 应用定制了一些额外的功能,例如修改 Host Header,增加鉴权。

   https :针对 HTTPS 应用定制了一些额外的功能。

   stcp :安全的 TCP 内网代理,需要在被访问者和访问者的机器上都部署   frpc,不需要在服务端暴露端口。

   sudp :安全的 UDP 内网代理,需要在被访问者和访问者的机器上都部署 frpc,不需要在服务端暴露端口。

    xtcp :点对点内网穿透代理,功能同 stcp,但是流量不需要经过服务器中转。

tcpmux :支持服务端 TCP 端口的多路复用,通过同一个端口访问不同的内网服务。

四、FRP   安装使用过程

   下载后的文件很简洁,由于golang的优秀特性,不需要依赖其他安装包,

    其中frps是服务器端运行文件(安装到有公网IP的云服务器上),对应配置文件frps.ini和frps_full.ini,缺省在服务端使用7000端口。

    frpc是客户端运行文件(安装到需要对外发布的内网服务器上),对应配置文件是frpc.ini

    由于我们云和本地服务器都是linux,我们只讨论linux下的安装,windows下大同小异。

    1 下载frp_0.41.0_linux_amd64.tar.gz,分别传到云和本地服务器上,解压

        tar -zxvf frp_0.41.0_linux_amd64.tar.gz

       sudo mkdir /etc/frp

       sudo cp * /etc/frp -r

       其中systemd目录是给自动启动服务用的,在我的服务器上不好用

     配置服务端,用精简版的frps.ini就够用了

     nano frps.ini

     [common]

     bind_port = 7000 #绑定的端口

     dashboard_user = admin #控制台用户名

     dashboard_pwd = password #控制台密码

     dashboard_port = 7500 #控制台的端口

     2 启动云服务器的服务端

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

         3 安装配置客户端的内网服务器

     tar -zxvf frp_0.41.0_linux_amd64.tar.gz

       sudo mkdir /etc/frp

       sudo cp * /etc/frp -r

      配置需要转发的服务

     nano frpc.ini

[common]

server_addr = 公网的IP

server_port = 7000

[ssh]

type = tcp

local_ip = 127.0.0.1

local_port = 22

remote_port = 7001

[oracle]

type = tcp

local_ip = 127.0.0.1

local_port = 1521

remote_port = 7002

[RDPWINDOWS]

type = tcp

local_ip = 192.168.0.109

local_port = 3389

remote_port = 7003

[TOMCAT]

type = tcp

local_ip = 127.0.0.1

local_port = 8080

remote_port = 7008 

  4 启动内网服务器的客户端

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

5 使用

   公网环境下 

     putty 云服务器IP+端口号7001

     公网ip:7004就可以rdp连接到内网的windows等等,就可以方便的访问公司内网服务器了,当然速度会略慢一些了

五、小结

内网穿透方法有不少,对于有公网主机资源的,可以使用像开源的FRP来搭建端口转发服务使用;如果自己确实连个公网IP权限都没有的,需要用类似nat123等三方工具,直接来将内网地址变成公网地址使用。

http://www.lryc.cn/news/617484.html

相关文章:

  • etf期权剩余0天还能交易吗?
  • Rust学习笔记(一)|Rust初体验 猜数游戏
  • 面试题-----RabbitMQ
  • 微算法科技(NASDAQ:MLGO)通过蚁群算法求解资源分配的全局最优解,实现低能耗的区块链资源分配
  • Linux入门DAY21
  • Dify在Windows系统的部署
  • 【运维进阶】LAMPLNMP 最佳实践
  • Nginx学习笔记(一)——Nginx的简介
  • docker部署elasticsearch-8.11.1
  • 【自动化运维神器Ansible】playbook setup模块深度解析:自动收集系统信息与变量应用
  • 实习学习记录
  • Linux系统编程Day12 -- 环境变量(初识)
  • 从预警到干预:ADAS系统如何通过BSD, FCW, AEB等功能保护你?
  • Pyecharts绘制折线图全解析
  • 区间修改 - 差分
  • 大模型中的反向传播是什么
  • 网络编程~
  • 【13-向量化-高效计算】
  • 《番外:Veda的备份,在某个未联网的旧服务器中苏醒……》
  • 飞算 JavaAI 智能进阶:从技术工具到金融科技开发范式的革新
  • 文件操作:fgets与gets区别+fread/fwrite +流定位接口
  • 【图像处理基石】PCA图像压缩与还原:基于OpenCV的Lena图实验
  • 2025 算法面试试题-阿里面试题分析
  • 【算法专题训练】11、字符串中的变位词
  • PyTorch基础(使用Tensor及Antograd实现机器学习)
  • GraalVM !拥抱云原生的 JVM
  • foreach 块并行加速
  • docker compose和docker-compose命令的区别
  • 力扣164:最大间距
  • 大数据系统架构模式:驾驭海量数据的工程范式