You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

寻求支持UDP转发且保留源IP的高性能代理工具解决方案

满足UDP转发并保留原始源IP的高性能代理方案

针对你需要将UDP日志流量从中央日志服务器转发至各集群,同时保留原始发送端IP的需求,以下是几种可行的工具及配置方案:

1. Envoy

  • 原生支持UDP代理,性能优异,适用于大规模流量场景。
  • 核心配置要点:在UDP监听器和集群配置中禁用SNAT,确保源IP不被修改。示例配置片段:
static_resources:
  listeners:
  - name: udp_log_listener
    address:
      socket_address: { address: 0.0.0.0, port_value: 514 }
    udp_listener_config:
      downstream_socket_config: {}
    filter_chains:
    - filters:
      - name: envoy.filters.network.udp_proxy
        typed_config:
          "@type": type.googleapis.com/envoy.extensions.filters.network.udp_proxy.v3.UdpProxy
          stat_prefix: udp_log_proxy
          cluster: log_clusters
  clusters:
  - name: log_clusters
    type: STRICT_DNS
    lb_policy: ROUND_ROBIN
    preserve_source_ip: true # 关键配置:保留原始源IP
    load_assignment:
      cluster_name: log_clusters
      endpoints:
      - lb_endpoints:
        - endpoint: { address: { socket_address: { address: cluster1-log, port_value: 514 } } }
        - endpoint: { address: { socket_address: { address: cluster2-log, port_value: 514 } } }

2. Nginx(带UDP Stream模块)

  • 从1.9.13版本开始支持UDP代理,配置简单,适合中小规模场景。
  • 要保留源IP,需开启透明代理模式,示例配置:
stream {
    server {
        listen 514 udp; # 监听日志常用UDP端口
        proxy_pass log_clusters;
        proxy_bind $remote_addr transparent; # 透传原始源IP
    }

    upstream log_clusters {
        server cluster1-log:514;
        server cluster2-log:514;
        least_conn; # 可选负载均衡策略
    }
}
  • 注意事项:需要赋予NginxCAP_NET_ADMIN权限(如setcap cap_net_admin=ep /usr/sbin/nginx),并在主机上配置路由规则,确保后端返回流量能正确回传给原始客户端。

3. IPVS(Linux内核负载均衡)

  • 基于Linux内核的负载均衡方案,性能最优,适合超大规模UDP流量场景。
  • 采用DR(Direct Routing)模式实现源IP保留,流量直接从后端服务器返回至原始客户端,无需经过代理转发返回流量。配置命令示例:
# 创建UDP虚拟服务(中央日志服务器IP:514)
ipvsadm -A -u 10.0.0.10:514 -s rr # rr表示轮询负载均衡
# 添加后端集群服务器,-g指定DR模式
ipvsadm -a -u 10.0.0.10:514 -r 192.168.1.10:514 -g
ipvsadm -a -u 10.0.0.10:514 -r 192.168.1.11:514 -g
  • 注意事项:后端集群服务器需配置ARP抑制,避免响应虚拟IP(VIP)的ARP请求,确保流量路由正确。

核心实现逻辑

所有方案的核心是避免SNAT(源地址转换):要么通过透明代理让代理工具直接使用原始源IP发送流量,要么通过直接路由模式让后端服务器直接响应原始客户端,从根本上避免源IP被代理IP替换。

内容的提问来源于stack exchange,提问作者bqrsmn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 14:52:38