On Wed, Oct 30, 2024 at 01:18:08PM +0000, Djerk Geurts wrote:

> On 30 Oct 2024, at 07:30, Otto Moerbeek <o...@drijf.net> wrote:
> > 
> > On Tue, Oct 29, 2024 at 10:14:29PM +0000, Djerk Geurts via Pdns-users wrote:
> > 
> >> Hi all,
> >> 
> >> Is there a way to return NXDOMAIn instead of a valid response?
> >> 
> >> test IN LUA CNAME 
> >> "view({{{'10.0.0.0/16'},{‘ns0.internal.domain.com.'}},{{'0.0.0.0/0'},{''}}})”
> >> 
> >> I would like to return NXDOMAIN instead of SERVFAIL for sources outside 
> >> 10.0/16.
> >> 
> >> Thanks,
> >> Djerk Geurts
> > 
> > I don't think NXDOMAIN responses are possible from Lua records.
> 
> I saw a request on GitHub for this from a while ago, so if it could be added, 
> that would be great.
> 
> > I guess a NODATA (rcode NOERROR + empty answer section) is the closest you
> > can come.
> > 
> > views do not like empty response sets, but this worked for me to get a
> > a NODATA:
> > 
> > test.example     10      IN      LUA     A "; if (0==1) then return 
> > {'1.2.3.4'} else return {} end"
> > 
> > Maybe you can work from this.
> > 
> >     -Otto
> 
> That’s helpful, but I’ll need to work out how to combine the two. `view()` 
> takes all text literally so `return{}` doesn’t yield NODATA.
> 
> Equally I don’t know how to test for a source address in the if statement. 
> https://doc.powerdns.com/authoritative/lua-records/ only gives examples for 
> `if(continent`, but this article has some interesting LUA records: 
> https://blog.powerdns.com/2017/12/15/powerdns-authoritative-lua-records
> 
> I tried this, but it’s not working:
> 
> "if(netmask({'10.0.0.0/16'})) then return {’true.domain.com.'} else return 
> {‘false.domain.com'} end"

This works here:

test.example     10       IN      LUA     A "; nmg = newNMG(); 
nmg:addMask('10.0.0.0/8'); if nmg:match(who) then return {'1.2.3.4'} else 
return {} end"

        -Otto
_______________________________________________
Pdns-users mailing list
Pdns-users@mailman.powerdns.com
https://mailman.powerdns.com/mailman/listinfo/pdns-users

Reply via email to