找回密码
 立即注册
首页 业界区 安全 frp实现内网穿透

frp实现内网穿透

榷另辑 6 天前
frp实现内网穿透

实现原理:在公网服务器上运行服务端(frps)和在内网主机运行客户端(frpc),将内网服务快速暴露到公网上个【实现端口转发,支持多种协议】
用法:公网服务器跑frps,内网跑fprc,配置映射规则。
适合长期使用。
注意事项【也是排错思路】:

  • selinux和filewalld和NetworkManager都要关闭,指令如下,如果开启,一定要关闭。
    1. systemctl status selinux
    2. systemctl status filewalld
    3. systemctl status NetworkManager
    复制代码
  • 服务端bind_port端口和客户端server_port保持一致
  • server_addr为服务端ip
  • 不要开代理(不管是规则还是全局,直接关掉)
环境相关:

  • 服务端【centos7.8 设置为NAT模式,让他相对于内网处于公网状态 192.168.144.133】
  • 客户端【win10 划分子网  我设置为192.168.1.11】
1、部署服务端

环境相关:centos7.8【NAT模式】安装了frp53.0 版本(linux版)。
服务端的IP为:192.168.144.133
1、进入到/opt目录下,将frp53版本拖动到该目录下
  1. # 1.解压
  2. tar -zxf frp_0.53.0_linux_amd64.tar.gz
  3. # 2.进入frp_0.53.0_linux_amd64目录
  4. cd frp_0.53.0_linux_amd64
  5. # 3.添加服务端接收外部 HTTP 请求的端口
  6.     vim frps.toml
  7.     # 添加这行配置
  8.     vhostHTTPPort = 80
  9. """
  10. 这里区分一下:
  11. bindPort       # 服务端与客户端之间的通信端口
  12. vhostHTTPPort  # 服务端接收外部 HTTP 请求的端口
  13. """
  14. # 4.启动服务端
  15. ./frps -c frps.toml
复制代码
1.png

2、部署客户端

环境相关:win10【划分子网,让他处于内网】安装了frp53.0(windows版)。
客户端(内网)IP为:192.168.1.11
下载链接:https://github.com/fatedier/frp/releases?page=2
1、使用小皮部署一个网站

  • 把目录列表功能打开
  • 将http对应端口改为8888
  • 在www目录下创建一个cs文件夹,然后里面放file.pdf文件(不管什么pdf都行,方便测试)
  • 启动,我用的nginx + mysql + ftp,如下图所示
    2.png

2、将安装包解压到C:\tools\frp_0.53.0_windows_amd64目录下
3、配置客户端【在frpc.toml文件中】
  1. # 介绍一下配置
  2. """
  3. serverAddr                                          # 服务端的公网ip
  4. serverPort                                                 # 服务端通信端口
  5. name="web-alex"                                  # 代理名称,随意取
  6. customDomains = "web.alex.com"  # 绑定的域名
  7. # 下面两行即告诉服务端我内网要暴露的ip和端口
  8. localIP"192.168.1.10"               # 内网服务的IP
  9. localPort = 8888                # 内网服务的端口
  10. """
  11. # 配置如下【这个实验我的配置以域名访问为准】【注意:通过域名访问和通过公网的ip和端口访问的客户端配置是不一样的。】
  12. # 通过域名访问的配置【使用这个配置,就使用web.alex.com进行访问】
  13. """
  14. serverAddr = "192.168.144.133"
  15. serverPort = 7000
  16. [[proxies]]
  17. name = "web"
  18. type = "http"
  19. localIP = "192.168.1.11"
  20. localPort = 8888
  21. customDomains = ["web.alex.com"]
  22. """
  23. # 通过公网ip:端口访问的配置【使用这个配置,就使用公网:ip进行访问】
  24. """
  25. serverAddr = "192.168.144.133"
  26. serverPort = 7000
  27. [[proxies]]
  28. name = "web"
  29. type = "tcp"                    # 使用 tcp 类型
  30. localIP = "192.168.1.11"        # 内网服务的 IP 地址
  31. localPort = 8888                # 内网服务的端口
  32. remotePort = 8888               # 公网访问的端口
  33. """
  34. # 能够看出来两者配置不同在于:
  35.         域名访问:         通常使用 http 或 https 类型的代理
  36.         公网:端口访问:通常使用 tcp 或 udp 类型的代理
复制代码
3、启动客户端,在解压目录下打开终端,执行以下命令
  1. frpc.exe -c frpc.toml
复制代码
3.png

查看服务端,有下列响应
4.png

4、在宿主机上手动域名解析,在C:\Windows\System32\drivers\etc下的hosts文件中配置
  1. 192.168.144.133         web.alex.com
复制代码
5、访问web.alex.com就能访问到内网中的主机,如下图所示
5.png

我再访问一下内网中的pdf文件,如下图所示
6.png

现在我来捋一下做内网穿透的这个过程。
1、启动 frpc(客户端),做了以下动作

  • 与frps(服务端建立连接);并告诉他我的代理名为web,绑定了``www.alex.com`;这个时候通道保持开放。
2、服务端运行中

  • 服务端监听的7000端口与客户端进行通信,80接收外部HTTP请求(服务端已知道web.alex.com对应某个客户端的代理)
3、游览器访问呢web.alex.com

  • 经过解析到达192.168.144.133:80后,看到web.alex.com找到对应代理,通过现有的7000端口转发给客户端
4、客户端收到请求后,转发给192.168.1.11:8888

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册