回答
收藏
分享
举报
nginx stream 四层代理udp协议问题
提问于2023-10-25 18:24

浏览 462

文章标签

大家好,请教一个 nginx stream 四层代理 udp 协议的问题。

问题描述:

client  ---> nginx ---> real server

server {
      listen 1234 udp;
      listen [::]:1234 udp;
      proxy_responses 0;
      proxy_pass udp-server;
      proxy_bind $remote_addr:$remote_port transparent;
 }

如上配置,ipv4 时通过 proxy_bind 能将客户端真实 IP 传递给 real server,通过抓包 nginx 服务器看,有 client 直接访问 real server 的报文。

但是 ipv6 访问时 real server 获取不到客户端真实 IP,通过抓包 nginx 服务器看,没有 client 直接访问 real server 的报文,而是 nginx 进行了转发,用 nginx 服务器的 ipv6 地址访问了后端的 real server,请问 ipv6 如何能跟 ipv4 一样透传客户端真实 IP 呢?

已修改于2023-10-25 18:24



写下您的回答
发表回答
全部回答(1)

按点赞数排序

按时间排序

这个我理解IPv4和IPv6关于 transparent 的设置上是没有区别的,只是需要注意的是,IPv6的IP透传需要glibc版本达到一定的条件,我记得是glibc 2.26以上才支持。

查看命令 rpm -aq | grep glibc

然后配合路由表设置,在连路上抓包可看到真实的client ipv6地址,可以根据这个帖子 实际测一下,亲测有效,测试转发成功了 https://www.nginx.org.cn/article/detail/76

赞同

0

回复举报

回答于2023-12-29 14:27



回复Alive
回复
提问者
4379803pyja
这家伙很懒还未留下介绍~
0
文章
1
问答
0
粉丝
相关问答

想办法把 ipv6 用中括号括起来呢

点赞 0
浏览 876

1、IETF的QUIC已经有33个草案了,这是RFC规范,所以现在Nginx不太会去支持其他QUIC版本了。目前Nginx的quic分支,是基于最新的RFC 33 draft草案实现的。你可以参考下spdy与HTTP2在Nginx上的实现,那时HTTP2迟迟未推出时,google的spdy广为使用,Nginx推出了spdy模块,所以这其实是个开发效率、成本的权衡问题。

2、拥塞控制由应用层来实现,还是由内核来实现,对于网络安全性来说,这并不是问题。对于网络来说,每一台主机也未必可信。对于Linux来说,内核也是可以去改的。所以,长期来看,拥塞控制不会是问题,个人看法。

3、11.27号在GOPS上海站还会做HTTP3的进一步探讨。

点赞 0
浏览 1.8k

1. Nginx要开启不同的server,用listen ipv4与ipv6区分开下游过来的ipv4包和ipv6包;

2. 对于ipv4,upstream中的server配置ipv4地址,对于ipv6,则配置ipv6地址。

点赞 0
浏览 2.6k