-
Notifications
You must be signed in to change notification settings - Fork 1.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
在ipv6与ipv4都存在的情况下,怎么样仅仅返回ipv6? #1585
Comments
大概和 #1407差不多。 |
|
移动iptv 全移动都可以用 |
nginx用 proxy_pass http://dbiptv.sn.chinamobile.com/xxx.xxx 会从resolver获取到的nds随机设置一个,可能是ipv4也有可能是ipv6 |
这个设置是仅仅对特定的域名dbiptv.sn.chinamobile.com 禁用ipv4 ,我是想对所有的域名,如果有ipv6与ipv4就只要ipv6,如果是单ipv4,就直接返回ipv4. |
但对电信运营商,屏蔽了ipv4地址,但是ipv6可以用。所以我的应用场景:对于所有域名,如果有ipv4与ipv6地址的,只要返回ipv6而不需要同时返回ipv4 。而单ipv4的还是直接返回ipv4。 |
懂了,Nginx拿到DNS结果后的随机使用问题 |
稍微查了一下,nginx在解析域名时的确是ipv6优先的,除非nginx自身所在的操作系统没有ipv6 https://github.com/nginx/nginx/blob/f9a25736fd049075baf76a35628d2351b20f8ab8/src/core/ngx_resolver.c |
但是从Nginx的错误日志来看,有时会解析到ipv4,操作系统有Ipv6的,我的nds服务器禁用ipv4以后,可以访问到ipv6的。 |
。。。有时会?nginx不是只在启动时解析一次吗 |
请求proxy_pass 的时候再解析的 |
查了一些资料,Nginx在proxy-pass配置域名时,仅在启动时解析一次。如果要在ttl超时后重新解析,需要使用resolv指定使用哪个dns服务器。 |
我在nginx使用了resolver 指定dns的(resolver 192.168.8.200;),我也关闭smartdns的测速和双栈ip优选。问题是smartdns同时返回ipv6与ipv4以后,nginx会随机选一个ip使用。所以smartdns最好能配置在双栈ip的情况下仅仅返回ipv6 (优选有时并不能满足特定场景) |
需求应用场景
有些域名比如dbiptv.sn.chinamobile.com(陕西) 会有ipv6与ipv4,但ipv4外省电信网络被屏蔽了,对于普通客户端会优先使用ipv6的,这个没有问题。但我需要用ngxin转发这个地址(proxy_pass http://dbiptv.sn.chinamobile.com/xxx),用nginx的resolver 做dns解析时,nginx会随机选择一个ip(可能是ipv6,也可能是ipv4),这样导致有时访问超时
建议的方案
希望可以增加配置属性,在ipv6与ipv4同时存在的情况下,只返回ipv6 (可以扩展为 在ipv6与ipv4同时存在的情况下,只返回ipv4)
(dualstack-ip-allow-force-AAAA yes 不起作用)
设备信息
研凌工控机j3160
The text was updated successfully, but these errors were encountered: