<p>Hi Bert,</p>
<p> </p>
<p>Thank you for your answer it helped me to get what I wanted.</p>
<p> </p>
<p>I think this previous post might help you to understand what I wanted :</p>
<p>https://mailman.powerdns.com/pipermail/dnsdist/2016-December/000247.html</p>
<p> </p>
<p>To summarize, </p>
<p>I want queries going to 10.255.0.100 to be treated by the bind1 pool</p>
<p>And I want queries going to 10.255.0.200 to be treated by the bind2 pool</p>
<p>Finally, if all the BIND servers (containers) go down, I send the incoming queries to the other dnsdist on the second host server.</p>
<p> </p>
<p>I was using the addPoolRule() function the opposite way, so I added the "false' parameter in order to match the destination ip:port.</p>
<p> </p>
<p> </p>
<p>This is now how my config and function look like: </p>
<p> </p>
<p><span style="font-size: xx-small;">bind1NMG = newNMG()</span></p>
<p><span style="font-size: xx-small;">bind1NMG:addMask("10.255.0.100/32")</span></p>
<p><span style="font-size: xx-small;">bind1NMG:addMask("10.255.1.100/32")</span></p>
<p><span style="font-size: xx-small;">bind1NMG:addMask("172.17.0.11/24")</span></p>
<p> </p>
<p><span style="font-size: xx-small;">addPoolRule(NetmaskGroupRule(bind1NMG , <strong>false</strong>),"bind")</span></p>
<p> </p>
<p><span style="font-size: xx-small;">bind2NMG = newNMG()</span></p>
<p><span style="font-size: xx-small;">bind2NMG:addMask("10.255.0.200/32")</span></p>
<p><span style="font-size: xx-small;">bind2NMG:addMask("10.255.1.200/32")</span></p>
<p><span style="font-size: xx-small;">bind2NMG:addMask("172.17.0.11/24")</span></p>
<p> </p>
<p><span style="font-size: xx-small;">addPoolRule(NetmaskGroupRule(bind2NMG ,<strong><span style="color: #000000;"> false</span></strong>),"bind2")</span></p>
<p> </p>
<p><span style="font-size: xx-small;">function portSelection(dq)</span></p>
<p><span style="font-size: xx-small;">        if(dq.<strong>local</strong>Addr:getPort()==5353) then</span></p>
<p><span style="font-size: xx-small;">                return DNSAction.Pool, "bind"</span></p>
<p><span style="font-size: xx-small;">        else if(dq.<strong>local</strong>Addr:getPort()==5354) then</span></p>
<p><span style="font-size: xx-small;">                return DNSAction.Pool, "bind2"</span></p>
<p><span style="font-size: xx-small;">        end</span></p>
<p><span style="font-size: xx-small;">        end</span></p>
<p><span style="font-size: xx-small;">end</span></p>
<p> </p>
<div>
<div><span style="font-size: xx-small;">addLuaAction("172.17.0.10/24", portSelection)</span></div>
<div> </div>
<div>I hope it also helps you as much as it helped me.</div>
<div> </div>
<div>Regards,</div>
<div>Thibaud</div>
</div>
<div> </div>
<p> </p>
<p> </p>
<p> </p>
<blockquote style="padding-left: 5px; margin-left: 5px; border-left: #ff0000 2px solid;">> Message du 23/03/17 13:29<br />> De : "bert hubert" <bert.hubert@powerdns.com><br />> A : "Thibaud Dublé" <thibaud.duble@wanadoo.fr><br />> Copie à : dnsdist@mailman.powerdns.com<br />> Objet : Re: [dnsdist] Trafic redirect via ports<br />> <br />> On Thu, Mar 23, 2017 at 09:51:09AM +0100, Thibaud Dublé wrote:<br />> > The first idea was to send traffic to the other dnsdist for "pool1" on port 5353 and traffic for "pool2" on port 5354,<br />> > but it looks like it is impossible to add Pool Rules to a specific IP:port.<br />> <br />> Hi Thibaud,<br />> <br />> I am a bit confused. I think I know what you mean, but perhaps can you<br />> clarify. <br />> <br />> > Ideally, the pool rule config would look like this :<br />> >  <br />> > bind1NMG = newNMG()<br />> > bind1NMG:addMask("10.255.0.100/32")<br />> > bind1NMG:addMask("10.255.1.100/32")<br />> > bind1NMG:addMask("172.17.0.11:5353")<br />> <br />> So you want to add source port selection to the rule?<br />> <br />> Are you sure traffic will always come in from that source port? Usually that<br />> is not the case as source ports tend to be dynamic.<br />> <br />> If this is what you want, today you could do that with a Lua selection rule:<br />> function luarule(dq)<br />> if(dq.remoteAddr:getPort()==5353) <br />> then<br />> return DNSAction.Pool, "bind" <br />> else<br />> return DNSAction.Pool, "bind2" <br />> end<br />> end<br />> <br />> And then:<br />> addLuaAction("172.17.0.11/32", luarule)<br />> <br />> You may need to change this a little bit to compensate for typos or errors,<br />> but this is the idea.<br />> <br />> Good luck - if this really solves your problem we could make a direct rule<br />> for it. Please let us know.<br />> <br />> Bert<br />> </blockquote>