FRP内网穿透

FRP内网穿透

目录

  • FRP内网穿透
  • 导读
  • 是什么
  • 安装与使用
    • 步骤
    • 内网与公网理解
  • 具体的配置
  • 原理与流程图
  • 总结

FRP内网穿透_第1张图片

导读

校园网内也就是局域网内部机器由于没有公网IP,因此无法被局域网外部的客户端直接访问。FRP就是这样一个用于内网穿透的应用,它需要一台拥有公网IP的服务器作为中转,实现访问内网机器的目的。比如你在实验室的服务器上,需要部署一个其他服务器或者树莓派也能访问的服务,就需要进行frp内网穿透。

FRP内网穿透_第2张图片

是什么

  1. FRP是一款开源的内网穿透工具,它可以让外部用户通过公网访问内网中的服务,而不需要暴露内网的IP地址和端口号。FRP的主要原理是通过一个中转服务器,在公网与内网之间建立一个反向代理通道,将公网用户的请求转发到内网中的服务。
  2. 举个例子,如果你在内网中有一个Web服务器,通常情况下只有内网用户才能访问该服务器。但是,如果你想让外部用户也能够访问该服务器,就需要将该服务器暴露在公网上。这时候,你可以使用FRP来实现内网穿透,将Web服务器的端口映射到FRP服务器的公网IP地址和端口号上,外部用户就可以通过该地址访问该服务器了。
  3. FRP支持多种协议,包括TCP、UDP、HTTP和HTTPS等。它可以在不同的操作系统上运行,包括Windows、Linux、Mac OS等。FRP有两个主要组件:服务器端和客户端。服务器端需要在公网上运行,用来转发公网用户的请求;客户端需要在内网中运行,用来将内网服务映射到公网上。

安装与使用

步骤

  1. 访问FRP的官方网站 https://github.com/fatedier/frp ,并下载适合你操作系统的版本。
  2. 解压下载的压缩包到你想要安装的目录。
  3. 配置FRP客户端和服务器端,可以根据官方文档的指引进行配置。配置文件是一个INI格式的文件,包含了各种参数的配置信息。在 [common] 部分中需要配置服务器的IP地址和端口号等信息,在 [xxx] 部分中需要配置具体的服务信息,包括服务的端口号、类型等。需要根据实际情况进行配置。
  4. 在命令行终端中进入到FRP所在的目录,然后启动FRP服务器端和客户端。启动命令格式如下:
  • 启动FRP服务器端(在服务器上运行):

    ./frps -c frps.ini

其中,frps.ini是FRP服务器端的配置文件。

  • 启动FRP客户端(在内网中运行):

    ./frpc -c frpc.ini

其中,frpc.ini是FRP客户端的配置文件。

  1. 通过公网IP地址和端口号访问内网中的服务。
  2. 启动FRP客户端之后,就可以通过公网IP地址和端口号访问内网中的服务了。访问地址的格式为::。其中,public_ip 是FRP服务器的公网IP地址,public_port 是FRP服务器上对应服务的公网端口号。用户可以通过浏览器或者其他工具访问该地址,就可以访问内网中的服务了。

内网与公网理解

如果你的Linux服务器只有内网IP地址,那么它只能在局域网内部访问。其他不在该局域网内的计算机无法直接访问该服务器,因为它没有公网IP地址,也就无法直接被互联网访问。

如果你需要将该服务器的服务暴露到公网,可以使用内网穿透技术或者其他类似的方案,将内网服务映射到公网IP地址和端口上,以供公网用户访问。常用的内网穿透工具包括FRP、ngrok、花生壳等。

具体的配置

以下是一个基本的FRP配置示例,可以用于将本地的SSH服务映射到公网上:

  1. 在FRP服务器上创建一个配置文件 frps.ini,并添加以下内容:

    [common]
    
    bind_port = 7000
    
    vhost_http_port = 8080
    
    dashboard_port = 7500
    
    dashboard_user = admin
    
    dashboard_pwd = admin123
    
    [ssh]
    
    type = tcp
    
    local_ip = 127.0.0.1
    
    local_port = 22
    
    remote_port = 6000
    

    其中,bind_port 是FRP服务器的监听端口,vhost_http_port 是虚拟主机的HTTP访问端口,dashboard_port 是FRP控制面板的访问端口,dashboard_userdashboard_pwd 是控制面板的登录用户名和密码。

    [ssh] 是一个自定义的服务名称,type 指定了服务类型为TCP,local_ip 是本地服务的IP地址,local_port 是本地服务的端口号,remote_port 是映射到公网的端口号。

  2. 在FRP客户端(即需要映射到公网的本地机器)上创建一个配置文件 frpc.ini,并添加以下内容:

    [common]
    
    server_addr = [your.frp.server.com](http://your.frp.server.com)
    
    server_port = 7000
    
    dashboard_port = 7400
    
    dashboard_user = admin
    
    dashboard_pwd = admin123
    
    [ssh]
    
    type = tcp
    
    local_ip = 127.0.0.1
    
    local_port = 22
    
    remote_port = 6000
    

    其中,server_addrserver_port 是FRP服务器的地址和端口号,dashboard_portdashboard_userdashboard_pwd 是客户端控制面板的访问端口、用户名和密码。

    [ssh] 是一个自定义的服务名称,type 指定了服务类型为TCP,local_ip 是本地服务的IP地址,local_port 是本地服务的端口号,remote_port 是映射到公网的端口号。

  3. 在FRP服务器上启动FRP服务:

    ./frps -c frps.ini
    
  4. 在本地机器上启动FRP客户端:

    ./frpc -c frpc.ini
    

    在启动之后,本地SSH服务就会被映射到 your.frp.server.com:6000 这个公网地址上,可以通过该地址来访问本地机器的SSH服务。

原理与流程图

先说结论:比如你现在有两个服务器,两个网段:一个192开头一个10开头,192可以访问10下的服务,但是10无法访问192下的服务,也就是说大的网段不能访问小的,因此你需要在小的网段也就是在192下运行frpc客户端,大的网段也就是10下运行frps服务端,顺序一定要搞清楚!!

FRP实现内网穿透的流程图:

+-----------------+

|                 |

|   FRP服务器    |

|                 |

+-----------------+

  |

  |

  |

+-----------------+

|                 |

|   FRP客户端    |

|                 |

+-----------------+

  |

  |

  |
+-------------------------------+

|                               |

|   内网服务(IP:Port)         |

|                               |

+-------------------------------+
  1. FRP客户端与FRP服务器建立长连接,并向服务器发送需要穿透到公网的服务信息。
  2. FRP服务器在接收到客户端的服务信息后,为该服务分配一个公网IP地址和端口号,并将其映射到客户端指定的IP地址和端口号上。
  3. 外部用户通过访问FRP服务器的公网IP地址和端口号,就可以访问到内网服务。
  4. FRP客户端和服务器之间采用长连接通信,可以保持连接状态,实现实时数据传输。
  5. FRP还支持多种加密方式,保证数据传输的安全性。

需要注意的是,将内网服务映射到公网上存在一定的安全风险,应该采取一些安全措施,以防止未经授权的访问和攻击。

总结

本文主要讲解了frp是什么,怎么用,原理以及配置文件的修改,可以说是很全面了,如果有问题也欢迎来评论区讨论,谢谢大家!!
FRP内网穿透_第3张图片

你可能感兴趣的:(Linux操作系统,服务器,网络,运维,linux)