examples/var_service: new example: dnsmasq service
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
d9503224c8
commit
df65dc89b4
10
examples/var_service/dnsmasq/README
Normal file
10
examples/var_service/dnsmasq/README
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
Local DNS cache service.
|
||||||
|
|
||||||
|
This service is useful if you have more than 3 DNS servers,
|
||||||
|
or if you need a finer-grained control of which servers
|
||||||
|
can serve which domain.
|
||||||
|
|
||||||
|
To make programs use local DNS server, make sure
|
||||||
|
/etc/resolv.conf says:
|
||||||
|
|
||||||
|
nameserver 127.0.0.1
|
76
examples/var_service/dnsmasq/dnsmasq.conf
Normal file
76
examples/var_service/dnsmasq/dnsmasq.conf
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
keep-in-foreground
|
||||||
|
|
||||||
|
# "-" is stderr:
|
||||||
|
log-facility=-
|
||||||
|
|
||||||
|
# May also try log-queries=extra
|
||||||
|
log-queries
|
||||||
|
|
||||||
|
# No param = pidfile disabled:
|
||||||
|
pid-file
|
||||||
|
|
||||||
|
interface=lo
|
||||||
|
listen-address=127.0.0.1
|
||||||
|
bind-interfaces
|
||||||
|
|
||||||
|
cache-size=999
|
||||||
|
|
||||||
|
servers-file=/etc/dnsmasq_servers.conf
|
||||||
|
|
||||||
|
# Don’t read /etc/resolv.conf and /etc/hosts:
|
||||||
|
no-resolv
|
||||||
|
#no-hosts
|
||||||
|
|
||||||
|
# All reverse lookups for private IP ranges (ie 192.168.x.x, etc)
|
||||||
|
# which are not found in /etc/hosts or the DHCP leases file are
|
||||||
|
# answered with "no such domain" rather than being forwarded
|
||||||
|
# upstream. The set of prefixes affected is the list given in
|
||||||
|
# RFC6303.
|
||||||
|
#bogus-priv
|
||||||
|
|
||||||
|
#−T, --local-ttl=<time>
|
||||||
|
# When replying with information from /etc/hosts or configuration
|
||||||
|
# or the DHCP leases file dnsmasq by default sets the time-to-live
|
||||||
|
# field to zero, meaning that the requester should not itself
|
||||||
|
# cache the information. This is the correct thing to do in almost
|
||||||
|
# all situations. This option allows a time-to-live (in seconds)
|
||||||
|
# to be given for these replies. This will reduce the load on the
|
||||||
|
# server at the expense of clients using stale data under some
|
||||||
|
# circumstances.
|
||||||
|
local-ttl=67
|
||||||
|
|
||||||
|
#--dhcp-ttl=<time>
|
||||||
|
# As for --local-ttl, but affects only replies with information
|
||||||
|
# from DHCP leases. If both are given, --dhcp-ttl applies for DHCP
|
||||||
|
# information, and --local-ttl for others. Setting this to zero
|
||||||
|
# eliminates the effect of --local-ttl for DHCP.
|
||||||
|
#
|
||||||
|
#--neg-ttl=<time>
|
||||||
|
# Negative replies from upstream servers normally contain time-to-
|
||||||
|
# live information in SOA records which dnsmasq uses for caching.
|
||||||
|
# If the replies from upstream servers omit this information, dns-
|
||||||
|
# masq does not cache the reply. This option gives a default value
|
||||||
|
# for time-to-live (in seconds) which dnsmasq uses to cache nega-
|
||||||
|
# tive replies even in the absence of an SOA record.
|
||||||
|
neg-ttl=67
|
||||||
|
|
||||||
|
#--max-ttl=<time>
|
||||||
|
# Set a maximum TTL value that will be handed out to clients. The
|
||||||
|
# specified maximum TTL will be given to clients instead of the
|
||||||
|
# true TTL value if it is lower. The true TTL value is however
|
||||||
|
# kept in the cache to avoid flooding the upstream DNS servers.
|
||||||
|
#
|
||||||
|
#--max-cache-ttl=<time>
|
||||||
|
# Set a maximum TTL value for entries in the cache.
|
||||||
|
#
|
||||||
|
#--min-cache-ttl=<time>
|
||||||
|
# Extend short TTL values to the time given when caching them.
|
||||||
|
# Note that artificially extending TTL values is in general a bad
|
||||||
|
# idea, do not do it unless you have a good reason, and understand
|
||||||
|
# what you are doing. Dnsmasq limits the value of this option to
|
||||||
|
# one hour, unless recompiled.
|
||||||
|
min-cache-ttl=67
|
||||||
|
|
||||||
|
#--auth-ttl=<time>
|
||||||
|
# Set the TTL value returned in answers from the authoritative
|
||||||
|
# server.
|
21
examples/var_service/dnsmasq/log/run
Executable file
21
examples/var_service/dnsmasq/log/run
Executable file
@ -0,0 +1,21 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
user=logger
|
||||||
|
|
||||||
|
logdir="/var/log/service/`(cd ..;basename $PWD)`"
|
||||||
|
mkdir -p "$logdir" 2>/dev/null
|
||||||
|
chown -R "$user": "$logdir"
|
||||||
|
chmod -R go-rwxst,u+rwX "$logdir"
|
||||||
|
rm -rf logdir
|
||||||
|
ln -s "$logdir" logdir
|
||||||
|
|
||||||
|
# make this dir accessible to logger
|
||||||
|
chmod a+rX .
|
||||||
|
|
||||||
|
exec >/dev/null
|
||||||
|
exec 2>&1
|
||||||
|
exec \
|
||||||
|
env - PATH="$PATH" \
|
||||||
|
softlimit \
|
||||||
|
setuidgid "$user" \
|
||||||
|
svlogd -tt "$logdir"
|
4
examples/var_service/dnsmasq/p_log
Executable file
4
examples/var_service/dnsmasq/p_log
Executable file
@ -0,0 +1,4 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
cd log/logdir || exit 1
|
||||||
|
cat @* current | $PAGER
|
12
examples/var_service/dnsmasq/run
Executable file
12
examples/var_service/dnsmasq/run
Executable file
@ -0,0 +1,12 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
#exec >/dev/null
|
||||||
|
exec 2>&1
|
||||||
|
exec </dev/null
|
||||||
|
|
||||||
|
echo "* Starting dnsmasq"
|
||||||
|
exec \
|
||||||
|
env - PATH="$PATH" \
|
||||||
|
softlimit \
|
||||||
|
setuidgid root \
|
||||||
|
dnsmasq -C dnsmasq.conf
|
4
examples/var_service/dnsmasq/w_log
Executable file
4
examples/var_service/dnsmasq/w_log
Executable file
@ -0,0 +1,4 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
cd log/logdir || exit 1
|
||||||
|
watch -n2 'w=`ttysize w`; h=`ttysize h`; tail -$((h-3)) current 2>&1 | cut -b1-$((w-2))'
|
38
examples/var_service/fw/etc/dnsmasq_servers.conf
Normal file
38
examples/var_service/fw/etc/dnsmasq_servers.conf
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
empty=true
|
||||||
|
|
||||||
|
prio=0
|
||||||
|
i=0; while test "${if[$i]}"; do
|
||||||
|
test x"${dns_prio[$i]}" != x"" \
|
||||||
|
&& test "${dns_prio[$i]}" -gt "$prio" \
|
||||||
|
&& prio="${dns_prio[$i]}"
|
||||||
|
let i++; done
|
||||||
|
|
||||||
|
i=0; while test "${if[$i]}"; do
|
||||||
|
if test "${dnsmasq[$i]}"; then
|
||||||
|
for d in ${dnsmasq[$i]}; do
|
||||||
|
echo "$d"
|
||||||
|
empty=false
|
||||||
|
done
|
||||||
|
let i++;
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
# This iface has no dnsmasq-extended config.
|
||||||
|
# Use simple DNS names instead, if those exist.
|
||||||
|
for d in ${dns[$i]}; do
|
||||||
|
p="${dns_prio[$i]}"
|
||||||
|
test x"$p" == x"" && p=0
|
||||||
|
test x"$p" == x"$prio" || continue
|
||||||
|
echo "server=$d"
|
||||||
|
empty=false
|
||||||
|
done
|
||||||
|
let i++;
|
||||||
|
done
|
||||||
|
|
||||||
|
# Use Google DNS servers if nothing else is configured
|
||||||
|
$empty && echo "server=8.8.8.8"
|
||||||
|
$empty && echo "server=8.8.4.4"
|
||||||
|
|
||||||
|
# SIGHUP: make dnsmasq reload config
|
||||||
|
sv h dnsmasq
|
Loading…
x
Reference in New Issue
Block a user