On Thu, 17 May 2007 [EMAIL PROTECTED] wrote: > i seem to be having a dns/fw issues that i can't figure out. > > basically, wifi clients can't lookup dns successfully unless the entry > is already cached on the openbsd 4.0 box first.
I guess you have to add the wifi network in the acl clients list in named.conf. -moj > this has just started after introducing a new firewall config but i have > _no_ idea what the difference between a fresh vs cached lookup should be > from the client side! this is surely a misunderstanding on my part. can > you see what i'm missing? > > what's there: > openbsd 4.0 dns servers 10.0.0.11 & 12 > openbsd 4.1 firewall > sis2 internet, 121.73.27.x > sis1/2 bridged 10.0.0.11 & 12 via crossover > ath0 wifi 172.16.x.x dhcp for clients > > dhcp side: > the clients (macos, windows, whatever) receive a dhcp address & can > access services such as email on the 10.x network, and anything on the > internet via IP address. > > but when a name lookup is done from 172. to the 10. dns servers, the > request goes through to the 10. dns server just fine - which then > replies with a 'not found' type error. running the same lookup again on > the 10. dns server directly works. then re-running the same query from > the client side retrieves the new cached version correctly. > > presumably the fw rules are ok as traffic is passing each time. but what > am i missing? > > i've not changed the dns servers since 3.9, but there is a new pfSense > firewall in between. > > pf.conf & named.conf follow the dns trace. > > en1: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500 > tunnel inet --> > inet 172.16.0.10 netmask 0xffffff00 broadcast 172.16.0.255 > ether 00:19:e3:0f:1a:6b > media: autoselect status: active > supported media: autoselect > vlan: 0 parent interface: <none> > bond interfaces: <none> > > > non-cached from client: > May 17 07:19:52.391667 172.16.0.10.49319 > 10.0.0.11.53: [udp sum ok] > 21247+ A? www.novell.com. (32) (ttl 63, id 17885, len 60) > > return to client: > May 17 07:19:52.392233 10.0.0.11.53 > 172.16.0.10.49319: 21247- 0/13/13 > (451) (ttl 64, id 20192, len 479) > > non-cached from dns server: > May 17 07:20:08.675725 10.0.0.2.40578 > 203.96.152.4.53: [udp sum ok] > 13112+ [1au] A? www.novell.com. (43) (ttl 64, id 6400, len 71) > > reply from dns forwarder: > May 17 07:20:08.686623 203.96.152.4.53 > 10.0.0.2.40578: 13112 1/3/3 > www.novell.com. A 130.57.5.25 (162) (DF) (ttl 124, id 11878, len 190) > > cached from client: > May 17 07:20:13.695183 172.16.0.10.49320 > 10.0.0.11.53: [udp sum ok] > 50027+ A? www.novell.com. (32) (ttl 63, id 17961, len 60) > > cached reply from dns server: > May 17 07:20:13.695563 10.0.0.11.53 > 172.16.0.10.49320: 50027- 1/3/2 > www.novell.com. A 130.57.5.25 (151) (ttl 64, id 18118, len 179) > > > pf.conf > =================================================================== > # $OpenBSD: pf.conf,v 1.34 2007/02/24 19:30:59 millert Exp $ > # > # See pf.conf(5) and /usr/share/pf for syntax and examples. > # Remember to set net.inet.ip.forwarding=1 and/or net.inet6.ip6.forwarding=1 > # in /etc/sysctl.conf if packets are to be forwarded between interfaces. > > ############################################################ > # macro definitions > ############################################################ > # interfaces > > ext_if = "sis2" > wii_if = "ath0" > dmz_if = "{ sis0 sis1 bridge0 }" > int_if = "{ sis0 sis1 bridge0 ath0 }" > > # networks > ext_nw = "{ 121.73.27.0/24 }" > wii_nw = "{ 172.16.0.0/24 }" > dmz_nw = "{ 10.0.0.0/24 }" > int_nw = "{ 10.0.0.0/24 172.16.0.0/24 }" > > # dmz hosts > dmz_web = "10.0.0.20" > dmz_mail = "10.0.0.21" > dmz_ssh = "10.0.0.31" > > # port groups > mail_ports = "{ imap, imaps, smtp }" > web_ports = "{ http, https }" > ############################################################ > # tables > ############################################################ > > table <spamd-white> persist > table <internal_net> persist {10.0.0.0/24, 172.16.0.0/24} > > ############################################################ > # options > ############################################################ > > set skip on lo > set require-order yes > set block-policy drop > set optimization normal > set loginterface none > set loginterface ath0 > > ############################################################ > # normalisation > ############################################################ > > scrub in all > scrub out all > > ############################################################ > # translation & redirection > ############################################################ > > nat on $ext_if inet proto {icmp, tcp, udp} \ > from !($ext_if) -> ($ext_if:0) > rdr pass on $ext_if inet proto tcp \ > from any to $ext_nw port $web_ports -> $dmz_web > rdr pass on $ext_if inet proto tcp \ > from any to $ext_nw port $mail_ports -> $dmz_mail > rdr pass on $ext_if inet proto tcp \ > from any to $ext_nw port ssh -> $dmz_ssh > > ############################################################ > # filtering > ############################################################ > > block in all > block out log all > > block quick proto { tcp, udp } from any port = 0 to any > block quick proto { tcp, udp } from any to any port = 0 > > # block anything from private networks on WAN interface > antispoof for $ext_if > block in log quick on $ext_if from 10.0.0.0/8 to any > block in log quick on $ext_if from 127.0.0.0/8 to any > block in log quick on $ext_if from 172.16.0.0/12 to any > block in log quick on $ext_if from 192.168.0.0/16 to any > > # pass all ICMP connections > pass out inet proto icmp all icmp-type echoreq > > # permit wan interface to ping out (ping_hosts.sh) > pass quick proto icmp from 121.73.27.12 to any > > # allow outgoing DNS > pass out quick proto { tcp, udp } from any to any port 53 > > # allow access to DHCP server on wii > pass in quick on $wii_if proto udp \ > from any port = 68 to 255.255.255.255 port = 67 > pass in quick on $wii_if proto udp \ > from any port = 68 to 172.16.0.1 port = 67 > pass out quick on $wii_if proto udp \ > from 172.16.0.1 port = 67 to any port = 68 > block in log quick on $ext_if proto udp \ > from any port = 67 to 10.0.0.0/24 port = 68 > > # pass all connections originating from the firewall > pass out quick on $ext_if inet \ > from ($ext_if) to any > # pass all connections originating from dmz > pass in quick on $dmz_if \ > from <internal_net> to any > > pass quick on $int_if no state > antispoof for $ext_if > > #pass out on $int_if proto tcp to ($int_if) port ssh > #pass in log on $ext_if proto tcp to ($ext_if) port smtp > #pass out log on $ext_if proto tcp from ($ext_if) to port smtp > > pass in quick on $wii_if from any to any > pass in quick on $dmz_if from any to any > > > named.conf > ==================================================================== > // $OpenBSD: named-simple.conf,v 1.6 2004/08/16 15:48:28 jakob Exp $ > // > // Example file for a simple named configuration, processing both > // recursive and authoritative queries using one cache. > > > // Update this list to include only the networks for which you want > // to execute recursive queries. The default setting allows all hosts > // on any IPv4 networks for which the system has an interface, and > // the IPv6 localhost address. > // > acl clients { > localnets; > ::1; > }; > > options { > version ""; // remove this to allow version queries > > listen-on { any; }; > listen-on-v6 { any; }; > > allow-recursion { clients; }; > > forwarders { > 203.96.152.4; > 203.96.152.12; > }; > }; > > logging { > category lame-servers { null; }; > }; > > // Standard zones > // > zone "." { > type hint; > file "standard/root.hint"; > }; > > zone "localhost" { > type master; > file "standard/localhost"; > allow-transfer { localhost; }; > }; > > zone "127.in-addr.arpa" { > type master; > file "standard/loopback"; > allow-transfer { localhost; }; > }; > > zone > "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" { > type master; > file "standard/loopback6.arpa"; > allow-transfer { localhost; }; > }; > > zone "com" { > type delegation-only; > }; > > zone "net" { > type delegation-only; > }; > > // muse.net.nz > zone "muse.net.nz" { > type master; > file "master/muse.net.nz"; > }; > > // 10.0.0 reverse lookups > zone "0.0.10.in-addr.arpa" { > type master; > file "master/10.0.0"; > allow-transfer { localhost; }; > }; > # $OpenBSD: pf.conf,v 1.34 2007/02/24 19:30:59 millert Exp $ > # > # See pf.conf(5) and /usr/share/pf for syntax and examples. > # Remember to set net.inet.ip.forwarding=1 and/or net.inet6.ip6.forwarding=1 > # in /etc/sysctl.conf if packets are to be forwarded between interfaces. > > ############################################################ > # macro definitions > ############################################################ > # interfaces > > ext_if = "sis2" > wii_if = "ath0" > dmz_if = "{ sis0 sis1 bridge0 }" > int_if = "{ sis0 sis1 bridge0 ath0 }" > > # networks > ext_nw = "{ 121.73.27.0/24 }" > wii_nw = "{ 172.16.0.0/24 }" > dmz_nw = "{ 10.0.0.0/24 }" > int_nw = "{ 10.0.0.0/24 172.16.0.0/24 }" > > # dmz hosts > dmz_web = "10.0.0.20" > dmz_mail = "10.0.0.21" > dmz_ssh = "10.0.0.31" > > # port groups > mail_ports = "{ imap, imaps, smtp }" > web_ports = "{ http, https }" > ############################################################ > # tables > ############################################################ > > table <spamd-white> persist > table <internal_net> persist {10.0.0.0/24, 172.16.0.0/24} > > ############################################################ > # options > ############################################################ > > set skip on lo > set require-order yes > set block-policy drop > set optimization normal > set loginterface none > set loginterface ath0 > > ############################################################ > # normalisation > ############################################################ > > scrub in all > scrub out all > > ############################################################ > # translation & redirection > ############################################################ > > nat on $ext_if inet proto {icmp, tcp, udp} \ > from !($ext_if) -> ($ext_if:0) > rdr pass on $ext_if inet proto tcp \ > from any to $ext_nw port $web_ports -> $dmz_web > rdr pass on $ext_if inet proto tcp \ > from any to $ext_nw port $mail_ports -> $dmz_mail > rdr pass on $ext_if inet proto tcp \ > from any to $ext_nw port ssh -> $dmz_ssh > > ############################################################ > # filtering > ############################################################ > > block in all > block out log all > > block quick proto { tcp, udp } from any port = 0 to any > block quick proto { tcp, udp } from any to any port = 0 > > # block anything from private networks on WAN interface > antispoof for $ext_if > block in log quick on $ext_if from 10.0.0.0/8 to any label "block private > networks from wan block 10/8" > block in log quick on $ext_if from 127.0.0.0/8 to any label "block private > networks from wan block 127/8" > block in log quick on $ext_if from 172.16.0.0/12 to any label "block private > networks from wan block 172.16/12" > block in log quick on $ext_if from 192.168.0.0/16 to any label "block private > networks from wan block 192.168/16" > > # pass all ICMP connections > pass out inet proto icmp all icmp-type echoreq > > # permit wan interface to ping out (ping_hosts.sh) > pass quick proto icmp from 121.73.27.12 to any > > # allow outgoing DNS > pass out quick proto { tcp, udp } from any to any port 53 > > # allow access to DHCP server on wii > pass in quick on $wii_if proto udp from any port = 68 to 255.255.255.255 port > = 67 > pass in quick on $wii_if proto udp from any port = 68 to 172.16.0.1 port = 67 > pass out quick on $wii_if proto udp from 172.16.0.1 port = 67 to any port = 68 > block in log quick on $ext_if proto udp from any port = 67 to 10.0.0.0/24 > port = 68 > > # pass all connections originating from the firewall > pass out quick on $ext_if inet \ > from ($ext_if) to any > # pass all connections originating from dmz > pass in quick on $dmz_if \ > from <internal_net> to any > > pass quick on $int_if no state > antispoof for $ext_if > > #pass out on $int_if proto tcp to ($int_if) port ssh > #pass in log on $ext_if proto tcp to ($ext_if) port smtp > #pass out log on $ext_if proto tcp from ($ext_if) to port smtp > > pass in quick on $wii_if from any to any > pass in quick on $dmz_if from any to any