-
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
如何支持keepalived,无法负载到dns2服务器上. #1307
Comments
推测是这个问题 #167 |
|
有点像是 #167 问题应该出在单接口配置了同网段多个ip上。发送请求到 secondary ip 应该是没问题的,但smartdns向上级查询后返回可能是从primary ip 出去的,导致客户端觉得来源不同,丢弃了。 |
你这个环境和我用的稍有不同。我用keepalived是直接给设备动态增加了一个ip,不涉及端口转发。 也许可以试试vip和smartdns的ip设在不同的网段,使回包也经过keepalived转发 |
反正后来我是弃用keepalived了,前端增加了个Mikrotik RouterBOARD做dns代理 |
源IP不一致了。 |
他回包压根就不经过keepalived,直接从同网段子网出去了。要是修改源ip地址,需要不同网段,keepalived配置为alg网关才行 |
通过这样操作可以解决;; reply from unexpected source: 问题, 但是性能也降低了一半,原本一台qps 有2.2W, 集群合起来也只有2.4W(性能没提升多少.) 比较奇怪,dnsmasq+keepalived 集群不会出现这个问题,为什么我们的smartdns会出现这个问题呢? 有其他什么建议吗? |
用的最新版本吗?之前解决过源路由问题 |
他不是来源路由的问题,他是不同端口号的端口转发到smartdns,回包没走转发前的ip和端口号。
这个可行吗@xiaotudoubaba |
我用的是smartdns.1.2020.09.08-2235.x86-linux-all.tar.gz版本,回头我试试最新版本 |
|
发一下nslookup报错时的debug log |
看log,smartdns收到请求的ip是172.16.0.20,那么回应的IP也应该是这个。但这个IP没看到是哪里的。 可以用tcpdump在smartdns机器上抓下包看看。 |
似乎是,172.16.0.20的udp包直接发送到了172.16.0.87上。然后smartdns处理后,直接将数据包发送到了172.16.0.20的机器。 看了下,这种情况似乎是keepalive的TUN模式? |
tcpdump抓包看上去是这样. |
你172.16.0.87那个机器,收到的包是来自172.16.0.20的IP,NAT转发给smartdns,保留了源IP,所以smartdns回应也是给172.16.0.20的IP的。但nslookup发送的数据包是给100的地址的。收到了87的数据包,报错了。 这里最大的问题可能就是你的20机器和87机器在同一个网段,导致87发送的数据包,直接到了20那个机器,而没有经过keepalive机器NAT转换。 按理说,dnsmasq这种组网也应该是有问题的。 |
试验了一下,查询两次,有一次成功,另外一次失败,看你用的roundrobin,也就是有一台机器是不成功的。 可能是默认网关没配置?数据包发送不出去? |
好像去172.16.0.87这台查询的请求一直不成功的, 这个是华为云上一台云的服务器,不是很明白需要怎么配置默认网关吗? |
在两台机器上都设置DNAT,应该就可以了。 |
问题现象
搭建keepalived, 用来负载smartdns , 通过nslookup -port=9998 www.baidu.com vip(ip) 来请求另外一台机器dns服务
vip: 172.16.0.100
dns2: 172.16.0.87
返回超时
但是单独请求dns nslookup -port=5300 www.baidu.com 172.16.0.87 可以正常返回
[root@dns4-e8a4-0002 dnstools]# nslookup -port=9998 www.baidu.com 172.16.0.100
;; reply from unexpected source: 172.16.0.87#5300, expected 172.16.0.100#9998
;; reply from unexpected source: 172.16.0.87#5300, expected 172.16.0.100#9998
;; reply from unexpected source: 172.16.0.87#5300, expected 172.16.0.100#9998
;; connection timed out; no servers could be reached
是需要单独配置什么参数吗?
The text was updated successfully, but these errors were encountered: