在我的中dnsmasq.conf
,我包含了数千条规则,例如address=/example.net/
我知道可以使用以下行包含外部主机文件addn-hosts=/etc/hosts
但是有没有办法以 的形式包含包含规则的文件address=/example.net/
?
在我的中dnsmasq.conf
,我包含了数千条规则,例如address=/example.net/
我知道可以使用以下行包含外部主机文件addn-hosts=/etc/hosts
但是有没有办法以 的形式包含包含规则的文件address=/example.net/
?
在我的dnsmasq.conf文件中,我使用以下规则阻止所有以 结尾的域.be
:
address=/be/
但我想有一个例外youtu.be
。
我怎样才能做到这一点?
我想阻止返回私有范围 IP 地址的 DNS 解析。到目前为止,我发现要做这样的事情你需要设置一个缓存/递归 DNS 服务器。但是,由于我想在 docker 中使用它,所以我遇到了困难。
我发现最简单的方法是使用dnsmasq
(如其他答案中所述)。另一方面,只需要运行一个进程,以便找出supervisord
解决该问题的方法。尽管如此,创建了一个示例 docker 映像,当我dnsmasq
通过添加标志或从容器中--dns 127.0.0.1
替换来使用 localhost dns 服务器()时,我得到一个错误,这在我在运行容器时收到警告之后才有意义:/etc/resolv.conf
** server can't find google.com: REFUSED
WARNING: Localhost DNS setting (--dns=127.0.0.1) may fail in containers.
示例泊坞窗图像:
FROM ubuntu:latest
RUN apt update &&\
apt upgrade -y
RUN apt install -y supervisor \
dnsmasq \
dnsutils \
iputils-ping \
nano
RUN echo "stop-dns-rebind" > /etc/dnsmasq.d/stop-rebinding
COPY supervisor.conf /etc/supervisor.conf
ENTRYPOINT ["/usr/bin/supervisord", "-c", "/etc/supervisor.conf"]
主管.conf:
[supervisord]
nodaemon=true
logfile=/dev/stdout
logfile_maxbytes=0
[program:dnsmasq]
command=dnsmasq --no-daemon
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
建造:
sudo docker build . -t samplednsmasq
跑:
sudo docker run -it --dns 127.0.0.1 --rm samplednsmasq:latest
我想知道是否有任何方法可以使它工作(不使用像 docker-compose 这样的多容器)和 dnsmasq,我也对不涉及 dns 缓存服务器的其他替代方案持开放态度。
解决方案:更改supervisor.conf
为:
[supervisord]
nodaemon=true
logfile=/dev/stdout
logfile_maxbytes=0
[program:dnsmasq]
command=dnsmasq --no-daemon --interface=lo --stop-dns-rebind
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
还更新了 Dockerfile
FROM ubuntu:latest
RUN apt update &&\
apt upgrade -y
RUN apt install -y supervisor \
dnsmasq \
dnsutils \
iputils-ping \
nano \
net-tools
RUN echo "listen-address=127.0.0.1\nbind-interfaces\nstop-dns-rebind" > /etc/dnsmasq.d/stop-rebinding &&\
echo "\nserver=8.8.8.8\nserver=8.8.4.4\nno-resolv" >> /etc/dnsmasq.conf
COPY supervisor.conf /etc/supervisor.conf
ENTRYPOINT ["/usr/bin/supervisord", "-c", "/etc/supervisor.conf"]
我想给未知客户端一个范围内的IP地址和另一个范围内的已知客户端(这是一个静态的)。
我现在尝试了很多,但似乎无法正常工作。我得到的只是“没有可用的地址”错误。
我的网络是 10.1.0.0/22 (<-!!!) 应为访客分配一个范围为 10.1.3.1-10.1.3.254 的地址 静态地址范围为 10.1.2.1-10.1.2.254
所以这是我的配置:
iface eth0 inet static
address 10.1.0.2/22
gateway 10.1.0.1
eth0@if17: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether aa:bb:cc:dd:ee:ff brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 10.1.0.2/22 brd 10.1.3.255 scope global eth0
valid_lft forever preferred_lft forever
和
dhcp-range=tag:guests,10.1.3.1,10.1.3.254,255.255.252.0,12h
dhcp-range=tag:known,10.1.2.0,static,24h
dhcp-option=option:router,10.1.0.1
dhcp-option=option:dns-server,10.1.0.3
dhcp-option=option:ntp-server,10.1.0.1
dhcp-host=aa:bb:cc:dd:ee:ff,10.1.2.1
dhcp-host=11:22:33:44:55:66,10.1.3.2
已知主机会获得它们的地址(无论它是 .2. 还是 .3. 地址),但未知主机不会得到任何信息。
我的路由器:
Main Router: 192.168.100.1
Second Router: 192.168.101.1
Main Router
由我的 ISP 提供(调制解调器/路由器合二为一)。我无法控制它的设置。除了更改 WIFI 密码和 SSID。
在 上Second Router
,我可以控制其 DNS 设置。
我的Second Router's
WAN 端口连接到Main router
. 我有一个 Debian 服务器,dnsmasq
安装并连接在Second Router's
网络上,静态 IP 为 192.168.101.121。对于那些不知道的人,dnsmasq
它既是 DNS 服务器又是 DHCP 服务器(默认情况下未启用)。
在Second Router's
DNS 设置中,我将dnsmasq
DNS 服务器(debian 服务器)IP 添加为主 DNS IP,并将Main Router's
IP 添加为辅助 DNS IP。它工作正常。
Debian 服务器上的每一行都/etc/hosts
可以在网络上连接的所有主机上访问Second Router's
。没关系。
问题在于 DHCP。作为 DHCP 客户端,您可以将您的主机名发送到 DHCP 服务器,它将被添加到 DNS。
由于Second Router
已经充当 DHCP 服务器,我不能只在dnsmasq
. 如果我启用它,我将不得不提供不同的范围(第二个路由器提供的范围除外)。
只有第二个路由器获取主机名,而不是dnsmasq
. 有没有人遇到同样的问题?是否可以将主机名条目从第二个路由器拉到dnsmasq
?谢谢。
我有一个用电线连接的路由器和一个转储 AP。路由器有两个接口,一个用于 LAN (192.168.1.1/24),另一个用于 WAN。AP还有两个接口,一个用于LAN(192.168.1.2/24),另一个用于访客WiFi(192.168.2.1/24)。(它实际上也有一个 LAN WiFi,但在这种情况下应该不相关。)
Dnsmasq 在路由器和 AP 上都运行。在路由器上,它为 LAN 提供 DHCP 和 DNS 组合。在 AP 上,访客 WiFi 接口仅启用 DHCP,以便为客户端提供 192.168.2.0/24。
我的问题是,通过这种设置,LAN 客户端将无法解析访客 WiFi 上的主机名,因为路由器 Dnsmasq 无法识别它们,而且路由器似乎不可能接管访客 WiFi 的 DHCP,因为它是基于 AP 的接口,那么有没有办法自动“合并”两个 Dnsmasq 实例上的主机名?如果没有,什么是让它工作的优雅设置?
一些连接到 LAN/WiFi 的设备被锁定,我无法控制它们的主机名,因此无法使用合格的主机名来要求 Dnsmasq 相应地转发用于 LAN 或 WiFi 的域。
这个问题存在变体,但我不能确定我的确切情况已被问到。
我正在建立一个简单的以太网,如下所示:
在节点 0(“rpi1”)上,我将 dnsmasq 作为 DNS 和 DHCP 服务器运行。这是它的一部分/etc/dnsmasq.conf
(减去 MAC 地址详细信息):
# Assign static IPs to cluster members
# Format = MAC:hostname:IP
dhcp-host=ZZ:YY:XX:WW:VV:UU,rpi1,10.0.0.1 # Node 0
dhcp-host=ZZ:YY:XX:WW:VV:UU,rpi2,10.0.0.2 # Node 1
dhcp-host=ZZ:YY:XX:WW:VV:UU,rpi3,10.0.0.3 # Node 2
dhcp-host=ZZ:YY:XX:WW:VV:UU,rpi4,10.0.0.4 # Node 3
DNS 和 DHCP 方面都在工作。每个节点都被分配了其预期的10.0.0.X
IP 地址,我可以通过运行例如dig rpi4
(-> ... 10.0.0.4
) 来解析任何节点上的任何域。而且,例如,如果我在 rpi2 内部,那么我可以使用 rpi3 进入 rpi3 ssh rpi3
,并且我可以例如ping rpi4
orping 10.0.0.4
并获得 0% 的数据包丢失。
我不清楚的是我是直接通过交换机还是通过 rpi1(运行 dnsmasq 并提供路由器服务)在节点之间进行通信。
如果节点直接通信,那么我假设它们必须知道彼此的 MAC 地址才能发出通过交换机直接到达彼此的帧。如果是这样,那么我总结的问题是:
提前致谢!
这就是这种情况。我有一个运行数字标牌系统的物联网设备。我正在尝试对其进行设置,使其拥有自己的 WIFI 网络,并且用户可以连接到该 WIFI,在他们的设备上输入一个 http 地址并被路由到 IOT 设备正在运行的 Web 服务器。需要注意的是,这个物联网设备本身并没有连接到互联网。
这一直很好,直到有人尝试使用手机,一旦他们连接到 IOT 设备,他们就无法再访问任何其他网站,例如,一旦他们连接到 WIFI 网络,他们的 4g/5g 就被有效地破坏了。我怀疑这是因为 dnsmasq 正在尝试解析上游,但本身没有与任何上游服务器的连接。有没有办法代替这个,它可以将查询反弹回设备以尝试它的备用服务器?
当前的 dnsmasq.conf 下面。
dhcp-range=192.168.1.101,192.168.1.124,255.255.255.0,24h
domain=wlan
address=/castboard.net/127.0.0.1
server=0.0.0.0
dhcp-option=6,0.0.0.0,8.8.8.8,8.8.4.4
这些 dnsmasq 选项是否冲突?路由器想要写入resolv-file
配置,但允许我追加no-resolv
. 在这种情况下会dnsmasq
同意忽略吗?resolv-file
resolv-file=/tmp/resolv.dnsmasq
no-resolv
假设我有这个私有主机名dev.private.example.com
,它只能通过 VPN 连接在私有网络中访问,并且我有prod.example.com
它可以访问互联网。我有 DNS 服务器来解析私有主机名,然后我可以使用公共 DNS 服务器(谷歌、cloudflare 等)作为公共主机名。
我会喜欢设置 dnsmasq(如果有其他工具,请告诉我),以便它会查询 DNS 服务器的私有主机名,如果它是另一个主机名,那么它将通过公共 DNS 服务器解析
我该怎么做呢?