I l@ve RuBoard Previous Section Next Section

3.18 Returning Different Answers to Different Queriers

3.18.1 Problem

You want to configure a name server to return different answers to the same query depending on the IP address from which the query is sent.

3.18.2 Solution

Use BIND 9's view mechanism to create multiple versions of the zone that will contain the answer, and use the match-clients substatement to place the addresses of the queriers in the appropriate view.

For example, to have www.foo.example map to the address 192.168.0.10 for internal queries, and to the address 206.168.119.176 for queries from the Internet, create a db.foo.example.internal zone data file that includes this A record:

www.foo.example.    IN    A    192.168.0.10

Then create a db.foo.example.external zone data file that includes this record:

www.foo.example.    IN    A    206.168.119.176

Define an access control list in named.conf to match internal IP addresses:

acl internal { 192.168/16; };

Then configure the two versions of the zone in two view statements:

view internal {

    match-clients { internal; };

    zone "foo.example" {
        type master;
        file "db.foo.example.internal";
    };

};

view external {

    match-clients { any; };

    zone "foo.example" {
        type master;
        file "db.foo.example.external";
    };

};

3.18.3 Discussion

The first match-clients substatement that matches a querier's address determines which view the querier sees, so queries from addresses that don't match the internal ACL fall through to the external view and are answered from that version of foo.example.

The match-clients substatement defaults to any, so you can leave the substatement out of the external view entirely. However, subtlety is not always a virtue when writing named.conf files, so you might want to use an explicit substatement, as I did here, to make the configuration that much easier to grok.

3.18.4 See Also

If you want the name server to return the same answer, but with the records in a different order, see Section 3.19. If you need to set up a slave name server for zones in multiple views on your primary master -- and you have my sympathy -- brace yourself, then read Section 3.20. For more information on views, see "Views" in Chapter 10 of DNS and BIND.

    I l@ve RuBoard Previous Section Next Section