相关文章

基于frp的udp穿透

基于frp的http穿透

目录

简介

相关文档

基于UDP的穿透方案

demo测试

判断是否穿透成功

是否直连


 

简介

frp是一种快速反向代理,可帮助您将NAT或防火墙后面的本地服务器公开到Internet。到目前为止,它支持TCPUDP以及HTTPHTTPS协议,在这些协议中,请求可以通过域名转发到内部服务。

frp还具有P2P连接模式。

相关文档

官方文档:https://github.com/fatedier/frp

基于UDP的穿透方案

  • 首先布置服务器(当前阿里云windows版本),具体步骤如下:

  1. 将下载好的frp_0.31.1_windows_amd64.zip解压到文件夹
  2. 打开文件夹选择服务器配置文件进行修改                                                                                                                                                
  3. 这里进行简单配置,配置如下
    [common]
    #绑定服务器端口
    bind_port = 7000
    
    #管理查看端口、账号、密码
    dashboard_port = 7500
    dashboard_user = admin
    dashboard_pwd = admin
    

     

  4. 配置好过后保存,在当前目录下运行frps -c frps.ini                                                                                                                               
  • 部署需要穿透的客户端(这里也是windows版本),具体如下:

  1. 配置客户端frpc.ini,修改如下
    [common]
    #服务器ip地址
    server_addr = 39.104.xxx.xxx
    #服务器绑定端口
    server_port = 7000
    
    [udp]
    #服务类型
    type = udp
    #本地客户端udp端口
    local_port = 9000
    #自定义远程调用端口
    remote_port = 9001

     

  2. 配置好过后保存,在当前目录下运行frpc -c frpc.ini

demo测试

注意:1.udp访问地址为服务器地址39.104.xxx.xxx,端口为自定义端口9001

           2.请确认自己的云服务器已经配置了相应的安全访问规则

  try {
            DatagramSocket socket = new DatagramSocket(10001);
            InetSocketAddress address= new InetSocketAddress("39.104.xxx.xxx",9001);
            String udpStr = "upd打洞成功!";
            DatagramPacket packet = new DatagramPacket(udpStr.getBytes(),udpStr.getBytes().length,address);
            socket.send(packet);
        } catch (Exception e) {
            e.printStackTrace();
        }

判断是否穿透成功

方式一:利用Wireshark抓包获取对应端口的数据,编码查看是否是自己发送的数据

方式二:直接启动穿透的udp客户端服务,将收到的数据打印出来查看

是否直连

应用udp的方式一般都是想通过内网打洞直连,不走frp中转流量,这里经过测试,通过监测流量大小发现frp还是走的转发,基于xtcp的frp方案也测试失败,具体的点对点传输还需研究

 

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐