1

Temat: Dnsmasq - jak uruchomić tylko na wskazanych interface'ach

Witam,

Posiadam na 1043NDv1 OS jeszcze z nazwą LEDE Reboot (17.01-SNAPSHOT, r3794-dca4dfa)

Skonfigurowanych jest kilka interfejsów logicznych/wirtualnych:

LAN     192.168.10.0/24
LAN_AP  192.168.11.0/24
LAN_TV  192.168.12.0/24
WAN     192.168.8.0/24
WAN_OPT aaa.bbb.ccc.ddd/30

Problem jest taki, że WAN_OPT (IP. AAA.BBB.CCC.DDD) działa też ta usługa:

root@LEDE:~# netstat -anpeWu |grep 53
udp        0      0 127.0.0.1:53                                        0.0.0.0:*                                                       12756/dnsmasq
udp        0      0 192.168.10.1:53                                     0.0.0.0:*                                                       12756/dnsmasq
udp        0      0 192.168.11.1:53                                     0.0.0.0:*                                                       12756/dnsmasq
udp        0      0 192.168.12.1:53                                     0.0.0.0:*                                                       12756/dnsmasq
udp        0      0 AAA.BBB.CCC.DDD:53                                  0.0.0.0:*                                                       12756/dnsmasq
udp        0      0 127.0.0.1:53                                        0.0.0.0:*                                                       12757/dnsmasq
udp        0      0 192.168.10.1:53                                     0.0.0.0:*                                                       12757/dnsmasq
udp        0      0 192.168.11.1:53                                     0.0.0.0:*                                                       12757/dnsmasq
udp        0      0 192.168.12.1:53                                     0.0.0.0:*                                                       12757/dnsmasq
udp        0      0 AAA.BBB.CCC.DDD:53                                  0.0.0.0:*                                                       12757/dnsmasq
udp        0      0 127.0.0.1:5353                                      0.0.0.0:*                                                       11600/dnscrypt-prox
root@LEDE:~# netstat -anpeWt |grep 53
tcp        0      0 127.0.0.1:5353                                      0.0.0.0:*                                           LISTEN      11600/dnscrypt-prox
tcp        0      0 127.0.0.1:53                                        0.0.0.0:*                                           LISTEN      12757/dnsmasq
tcp        0      0 192.168.10.1:53                                     0.0.0.0:*                                           LISTEN      12757/dnsmasq
tcp        0      0 192.168.11.1:53                                     0.0.0.0:*                                           LISTEN      12757/dnsmasq
tcp        0      0 192.168.12.1:53                                     0.0.0.0:*                                           LISTEN      12757/dnsmasq
tcp        0      0 AAA.BBB.CCC.DDD:53                                  0.0.0.0:*                                           LISTEN      12757/dnsmasq

Starałem się ogarnąć temat i znalazłem poniższe, ale coś nie działa mi konfiguracja
https://forum.openwrt.org/t/dnsmasq-exc … ces/1535/7


Ogólnie używam DNScrypy oraz w DNSMasq zbudowane są dwie instancje

root@LEDE:~# cat /etc/config/dhcp
#bind-interfaces

config dnsmasq 'dns_bez_crypto'
        option bind-interfaces
        option resolvfile '/var/resolve_file'
        option interface 'lan_tv'
        option except-interface 'lan wan wan_opt lan_ap'
        option listen-address '192.168.12.1'
        option domainneeded '1'
        option boguspriv '1'
        option localise_queries '1'
        option rebind_protection '1'
        option rebind_localhost '1'
        option local '/lan2/'
        option domain 'lan2'
        option expandhosts '1'
        option authoritative '1'
        option readethers '1'
        option leasefile '/tmp/dhcp.leases_new'
        option localservice '1'
        option noresolv '0'
        #list server '127.0.0.1#5353'
        list server '194.146.251.101'
        list server '194.146.251.100'
        list server '208.67.222.222'
        list server '208.67.220.220'
        option nonwildcard '1'
        option logqueries '1'

config dnsmasq 'dns_crypto'
        option bind-interfaces
        option interface 'lan_ap'
        option interface 'lan'
        option except-interface 'lan_tv wan wan_opt'
        option listen-address '192.168.10.1'
        option listen-address '192.168.11.1'
        option domainneeded '1'
        option boguspriv '1'
        option localise_queries '1'
        option rebind_protection '1'
        option rebind_localhost '1'
        option local '/lan/'
        option domain 'lan'
        option expandhosts '1'
        option authoritative '1'
        option readethers '1'
        option leasefile '/tmp/dhcp.leases'
        option localservice '1'
        option noresolv '1'
        list server '127.0.0.1#5353'
        #list server '194.146.251.101'
        #list server '194.146.251.100'
        #list server '208.67.222.222'
        #list server '208.67.220.220'
        option nonwildcard '1'
        option logqueries '1'

config dhcp 'lan'
        option instance 'dns_crypto'
        option interface 'lan'
        option start '100'
        option limit '150'
        option leasetime '12h'
        option dhcpv6 'disabled'
        option ra 'disabled'

config dhcp 'lan_ap'
        option instance 'dns_crypto'
        option interface 'lan_ap'
        option start '100'
        option limit '150'
        option leasetime '12h'
        option dhcpv6 'disabled'
        option ra 'disabled'

config dhcp 'lan_tv'
        option instance 'dns_bez_crypto'
        option interface 'lan_tv'
        option start '100'
        option limit '150'
        option leasetime '12h'
        option dhcpv6 'disabled'
        option ra 'disabled'

#config odhcpd 'odhcpd'
#       option maindhcp '0'
#       option leasefile '/tmp/hosts/odhcpd'
#       option leasetrigger '/usr/sbin/odhcpd-update'

Jak wymusić, aby każda z instancji dnsmasq działa tylko na wskazanym interface, a nie na wszystkich?

Pozdrawiam, Krzysiek

2

Odp: Dnsmasq - jak uruchomić tylko na wskazanych interface'ach

Namieszałeś - nie może być klika opcji o takiej samej nazwie, listy się wtedy stosuje. Tak zrób:

config dnsmasq pierwsza
    option domainneeded '1'
    option boguspriv '1'
    option filterwin2k '0'
    option localise_queries '1'
    option rebind_protection '1'
    option rebind_localhost '1'
    option local '/lan/'
    option domain 'lan'
    option expandhosts '1'
    option nonegcache '0'
    option authoritative '1'
    option readethers '1'
    option leasefile '/tmp/dhcp.leases'
    option resolvfile '/tmp/resolv.conf.auto'
    option nonwildcard '1'
    option localservice '1'
    list rebind_domain 'free.aero2.net.pl'

config dhcp 'lan'
    option interface 'lan'
    option start '100'
    option limit '150'
    option leasetime '12h'
    option dhcpv6 'server'
    option ra 'server'
    option instance pierwsza

config dhcp 'wan'
    option interface 'wan'
    option ignore '1'

config odhcpd 'odhcpd'
    option maindhcp '0'
    option leasefile '/tmp/hosts/odhcpd'
    option leasetrigger '/usr/sbin/odhcpd-update'
    option loglevel '4'

config dnsmasq tojestdruga
    option domainneeded '1'
    option boguspriv '1'
    option filterwin2k '0'
    option localise_queries '1'
    option rebind_protection '1'
    option rebind_localhost '1'
    option local '/lan/'
    option domain 'lan'
    option expandhosts '1'
    option nonegcache '0'
    option authoritative '1'
    option readethers '1'
    option leasefile '/tmp/dhcp.leases'
    option resolvfile '/tmp/resolv.conf.auto'
    option nonwildcard '1'
    option localservice '1'
    list rebind_domain 'free.aero2.net.pl'
    list interface a12

config dhcp 'a12'
    option instance tojestdruga
    option interface 'a12'
    option start '10'
    option limit '15'
    option leasetime '12h'

Co daje:

root@OpenWrt:~# cat /tmp/etc/dnsmasq.conf.pierwsza 
# auto-generated config file from /etc/config/dhcp
conf-file=/etc/dnsmasq.conf
dhcp-authoritative
domain-needed
localise-queries
read-ethers
enable-ubus
expand-hosts
bind-dynamic
local-service
domain=lan
server=/lan/
dhcp-leasefile=/tmp/dhcp.leases
resolv-file=/tmp/resolv.conf.auto
stop-dns-rebind
rebind-localhost-ok
rebind-domain-ok=free.aero2.net.pl
dhcp-broadcast=tag:needs-broadcast
addn-hosts=/tmp/hosts
conf-dir=/tmp/dnsmasq.d
user=dnsmasq
group=dnsmasq


dhcp-ignore-names=tag:dhcp_bogus_hostname
conf-file=/usr/share/dnsmasq/dhcpbogushostname.conf


bogus-priv
conf-file=/usr/share/dnsmasq/rfc6761.conf
dhcp-range=set:lan,192.168.1.100,192.168.1.249,255.255.255.0,12h
no-dhcp-interface=eth1



root@OpenWrt:~# cat /tmp/etc/dnsmasq.conf.tojestdruga 
# auto-generated config file from /etc/config/dhcp
conf-file=/etc/dnsmasq.conf
dhcp-authoritative
domain-needed
localise-queries
read-ethers
enable-ubus
expand-hosts
bind-dynamic
local-service
domain=lan
server=/lan/
interface=br-a12
dhcp-leasefile=/tmp/dhcp.leases
resolv-file=/tmp/resolv.conf.auto
stop-dns-rebind
rebind-localhost-ok
rebind-domain-ok=free.aero2.net.pl
dhcp-broadcast=tag:needs-broadcast
addn-hosts=/tmp/hosts
conf-dir=/tmp/dnsmasq.d
user=dnsmasq
group=dnsmasq


dhcp-ignore-names=tag:dhcp_bogus_hostname
conf-file=/usr/share/dnsmasq/dhcpbogushostname.conf


bogus-priv
conf-file=/usr/share/dnsmasq/rfc6761.conf
no-dhcp-interface=eth1
dhcp-range=set:a12,192.168.2.10,192.168.2.24,255.255.255.0,12h
Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

3

Odp: Dnsmasq - jak uruchomić tylko na wskazanych interface'ach

Dzięki, wystarczyło zmienić option na list oraz jeden paramtr na inny (z expect-interfaces na notinterface) czyli ostatecznie

        list interface 'lan_tv'
        list notinterface 'lan'
        list notinterface 'wan'
        list notinterface 'wan_opt'
        list notinterface 'lan_ap'

A w drugim:

        list interface 'lan'
        list interface 'lan_ap'
        list notinterface 'lan_tv'
        list notinterface 'wan'
        list notinterface 'wan_opt'

Zostawiłem też opcję w obu instancjach:

        option bind-interfaces