Temat: Dziwny sposób startu DNSMASQ

Cześć!

Ostatnio potrzebowałem zrobić Split-DNS na Gargoyle. W tym celu dodałem do konfiguracji:

dhcp.@dnsmasq[0].addnhosts=/etc/hosts.dns

i wypełniłem plik /etc/hosts.dns

Po restarcie DNSMASQ nic się nie stało. Pogrzebałem w plikach i okazało się, że w pliku /etc/init.d/dnsmasq są następujące linie:

mkdir -p /tmp/hosts                   
xappend "--addn-hosts=/tmp/hosts"

Czy ktoś wie dlaczego to tak jest? Przecież opcja --addn-hosts powinna wedle manuala OpenWRT współgrać z UCI: dhcp.@dnsmasq[0].addnhosts, prawda?

Wrzucenie dowolnego pliku do tego katalogu oczywiście daje oczekiwany efekt, ale reboot powoduje wyczyszczenie pliku.

Oczywiście nie jest problemem edycja pliku /etc/init.d/dnsmasq, ale irytujące jest że po każdej aktualizacji trzeba to robić.

Może ktoś będzie potrafił wyjaśnić dlaczego to tak zostało zrobione?

Pozdrawiam,
Sławek

2

Odp: Dziwny sposób startu DNSMASQ

Gdzie taką linię widzisz? Chyba używasz jakiegoś super starego openwrt.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

3

Odp: Dziwny sposób startu DNSMASQ

Gargoyle PL 1.6.0.2 (bdaacfc)
OpenWrt Attitude Adjustment 12.09.1 (r39585)
Build time: 2014-02-15 09:09 CET

Machine: TP-Link TL-WDR4300 v1

Plik: /etc/init.d/dnsmasq

Okolice linii 137:

Wyglądają następująco:

        config_get hostsfile "$cfg" dhcphostsfile
        [ -e "$hostsfile" ] && xappend "--dhcp-hostsfile=$hostsfile"
                     
        mkdir -p /tmp/hosts                           
        xappend "--addn-hosts=/tmp/hosts"     

        local rebind
        config_get_bool rebind "$cfg" rebind_protection 1

Nie powiedziałbym żeby to był stary OpenWRT.

S.

4

Odp: Dziwny sposób startu DNSMASQ

Ale przecież to nie czyta opcji addnhosts. Robi to inna funkcja i samo z siebie działa to dobrze - patrz np. poradnik o adblock.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

5

Odp: Dziwny sposób startu DNSMASQ

A w linii 114:

config_list_foreach "$cfg" "addnhosts" append_addnhosts

Czy to nie oznacza, że czyta? Zaraz rzucę okiem w poradnik.

S.

6

Odp: Dziwny sposób startu DNSMASQ

Apropos jeszcze poradnika adblock, u mnie:

# uci show dhcp

Daje to:

dhcp.@dnsmasq[0]=dnsmasq
dhcp.@dnsmasq[0].domainneeded=1
dhcp.@dnsmasq[0].boguspriv=1
dhcp.@dnsmasq[0].filterwin2k=0
dhcp.@dnsmasq[0].localise_queries=1
dhcp.@dnsmasq[0].rebind_protection=1
dhcp.@dnsmasq[0].rebind_localhost=1
dhcp.@dnsmasq[0].local=/lan/
dhcp.@dnsmasq[0].expandhosts=1
dhcp.@dnsmasq[0].nonegcache=0
dhcp.@dnsmasq[0].authoritative=1
dhcp.@dnsmasq[0].readethers=1
dhcp.@dnsmasq[0].leasefile=/tmp/dhcp.leases
dhcp.@dnsmasq[0].resolvfile=/tmp/resolv.conf.auto
dhcp.@dnsmasq[0].domain=koszewscy.lan
dhcp.@dnsmasq[0].addnhosts=/etc/hosts.dns


Na liście procesów jest:

/usr/sbin/dnsmasq -C /var/etc/dnsmasq.conf

A plik /var/etc/dnsmasq.conf jest taki:

# auto-generated config file from /etc/config/dhcp
conf-file=/etc/dnsmasq.conf
dhcp-authoritative
domain-needed
localise-queries
read-ethers
bogus-priv
expand-hosts
domain=koszewscy.lan
server=/lan/
dhcp-leasefile=/tmp/dhcp.leases
resolv-file=/tmp/resolv.conf.auto
addn-hosts=/tmp/hosts
stop-dns-rebind
rebind-localhost-ok

dhcp-range=lan,192.168.2.100,192.168.2.199,255.255.255.0,12h
no-dhcp-interface=eth0.2

address=/router.koszewscy.lan/192.168.2.1
ptr-record=1.2.168.192.in-addr.arpa,router.koszewscy.lan

Tak, więc mam wrażenie, że coś jest nie tak, stąd pytam.

W gołym OpenWRT dodanie opcji addnhosts przez uci mi działało.

S.

7

Odp: Dziwny sposób startu DNSMASQ

Mi tam to działa w gargoyle

root@Gargoyle:~# uci add_list dhcp.@dnsmasq[0].addnhosts=/etc/host.dns
root@Gargoyle:~# uci commit
root@Gargoyle:~# /etc/init.d/dnsmasq restart
root@Gargoyle:~# grep dns  /var/etc/dnsmasq.conf 
conf-file=/etc/dnsmasq.conf
addn-hosts=/etc/host.dns
stop-dns-rebind
root@Gargoyle:~# 
root@Gargoyle:~# uci show gargoyle.global.version
gargoyle.global.version=1.6.0.2 (r39585)
Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

8

Odp: Dziwny sposób startu DNSMASQ

Masz rację - działa. Wiem co zrobiłem źle. Dodałem wpis bezpośrednio do pliki /etc/config/dhcp z błędem, nie była to lista, a pojedyncza opcja.

Jak zastosowałem dokładnie polecenia z Twojego poradnika - ruszyło. Dzięki za pomoc.

Pozdrawiam,
Sławek