标签: dnsmasq

带有dnsmasq的通配符子域

我有一个已经映射到的设备domain.tld.我现在想为所有子域创建一个通配符,*.domain.tld以便它们也映射到ip domain.tld.我该怎么做dnsmasq

subdomain dns dnsmasq wildcard

36
推荐指数
2
解决办法
5万
查看次数

dnsmasq,根据使用的接口提供不同的IP地址

基本上我的问题是我正在运行一个用于开发网站的虚拟机.

主机的dns指向正在运行dnsmasq的Vm,它解析了各种开发站点的地址,即test.mysite.vm等.

问题是当我从我的工作网络转到我的家庭网络时,它会因为虚拟机的IP发生变化而中断.是否可以根据请求来自哪个接口提供不同的IP地址?或者我应该尝试以完全不同的方式解决这个问题?

谢谢你的帮助!


事实证明,毕竟有一个更简单的方法......

我现在在VM上设置了2个接口,不需要使用dnsmasq.

第一个是桥接/共享接口,它允许VM在每次我移动办公室时重新启动网络时使用主机可用的互联网连接.

第二个是与我的VM主机的私有连接,它具有静态IP地址.这是我用来连接和绑定任何服务的接口,如nginx,mysql等.

dns dnsmasq virtual-machine

25
推荐指数
4
解决办法
4万
查看次数

当主机使用dnsmasq并且Google的DNS服务器被防火墙时,DNS无法在docker容器中工作?

症状是:主机具有适当的网络访问权限,但在容器内运行的程序无法解析DNS名称(在调查更多内容之前可能看起来"无法访问网络").

$ sudo docker run -ti mmoy/ubuntu-netutils /bin/bash
root@082bd4ead733:/# ping www.example.com
... nothing happens (timeout) ... ^C
root@082bd4ead733:/# host www.example.com
... nothing happens (timeout) ... ^C
Run Code Online (Sandbox Code Playgroud)

(docker图像mmoy/ubuntu-netutils是一个基于Ubuntu的简单图像ping,host包含在内,方便,因为网络坏了,我们不能使用apt install这些工具)

问题来自于docker自动将Google的公共DNS配置为容器内的DNS服务器:

root@082bd4ead733:/# cat /etc/resolv.conf 
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN

nameserver 8.8.8.8
nameserver 8.8.4.4
Run Code Online (Sandbox Code Playgroud)

这只适用于许多配置,但显然不适用于主机在网络上运行,其中Google的公共DNS被某些防火墙规则过滤.

发生这种情况的原因是:

  • Docker首先尝试在主机和容器内配置相同的DNS服务器.
  • 主机运行DNS缓存服务dnsmasq.dnsmasq充当DNS请求的代理,因此主机中明显的DNS服务器/etc/resolve.confnameserver 127.0.1.1 …

dns dnsmasq localhost docker

19
推荐指数
3
解决办法
1万
查看次数

Docker无法解析专用网络上的DNS

我的计算机位于具有私有DNS服务器的专用网络上,以及用于DNS解析的专用区域.我可以从主机解析此区域上的主机,但我无法从主机上运行的容器中解析它们.

主持人:

root@host:~# cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 127.0.1.1

root@host:~# ping privatedomain.io
PING privatedomain.io (192.168.0.101) 56(84) bytes of data.
Run Code Online (Sandbox Code Playgroud)

容器:

root@container:~# cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN

nameserver 8.8.8.8
nameserver 8.8.4.4

root@container:~# ping privatedomain.io
ping: unknown …
Run Code Online (Sandbox Code Playgroud)

dns dnsmasq docker

16
推荐指数
3
解决办法
2万
查看次数

Yosemite localhost解析器和dnsmasq离线失败

设置我的本地开发环境类似于这篇文章,一切都工作正常但最近我无法访问我的本地开发域我离线时.当我连接到互联网时,它工作正常.我想知道在优胜美地中如何使用解析器改变了一些东西.如果我离线,似乎会忽略解析器规则.

dnsmasq.conf:

address=/.dev/127.0.0.1
listen-address=127.0.0.1
Run Code Online (Sandbox Code Playgroud)

的/ etc /分解器的/ dev

 nameserver 127.0.0.1
Run Code Online (Sandbox Code Playgroud)

在线时:

ping -c 1 mydomain.dev
PING mydomain.dev (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.038 ms

--- mydomain.dev ping statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.038/0.038/0.038/0.000 ms

scutil --dns
resolver #1
search domain[0] : nomadix.com
nameserver[0] : 203.124.230.12
nameserver[1] : 202.54.157.36
if_index : 4 (en0)
flags    : Request A records
reach    : Reachable

resolver #2
domain   : …
Run Code Online (Sandbox Code Playgroud)

dnsmasq resolver osx-yosemite

10
推荐指数
1
解决办法
2362
查看次数

nginx中的动态proxy_pass到Kubernetes中的另一个pod

我试图创建一个将请求转发给Nginx上的代理/<service>http://<service>.我首先尝试了以下内容:

location ~ ^/(.+)$ {
    set $backend "http://$1:80";
    proxy_pass $backend;
}
Run Code Online (Sandbox Code Playgroud)

但它没有说出(当打电话时/myservice):

[error] 7741#0: *1 no resolver defined to resolve http://myservice
Run Code Online (Sandbox Code Playgroud)

由于myservice无法从外部访问,我尝试将go-dnsmasq作为边车安装在同一个pod中,我尝试将其用于DNS解析(就像我在例中看到的那样)并将我的nginx配置更改为如下所示:

location ~ ^/(.+)$ {
        resolver 127.0.0.1:53;
        set $backend "http://$1:80";
        proxy_pass $backend;
}
Run Code Online (Sandbox Code Playgroud)

但现在nginx失败了:

[error] 9#9: *734 myservice could not be resolved (2: Server failure), client: 127.0.0.1, server: nginx-proxy, request: "GET /myservice HTTP/1.1", host: "localhost:8080"
127.0.0.1 - xxx [30/May/2016:10:34:23 +0000] "GET /myservice HTTP/1.1" 502 173 "-" "curl/7.38.0" …
Run Code Online (Sandbox Code Playgroud)

dns dnsmasq nginx kubernetes

9
推荐指数
1
解决办法
4279
查看次数

cURL + Laravel Valet + dnsmasq无法正常工作

当我执行一个PHP脚本,该脚本运行一个URL到.test域的cURL请求时,该域在Mac上使用Laravel Valet / dnsmasq进行了设置,我得到此错误消息:

无法解析:mydomain.test(找不到域名)

当我在浏览器中测试域时,就可以了。
当我curl -Ik https://mydomain.test在终端中运行时,我获得了HTTP / 2 200代码,因此可以。
当我curl -k https://mydomain.test在终端中运行时,我得到了页面的源代码,因此可以。

为什么它不能与PHP中的cURL一起使用?我很绝望...

更新

由于受欢迎的需求;-)这是我的cURL代码。您不能做得更简单:

try {
    $ch = curl_init( "http://mydomain.test" );
    curl_exec( $ch );
    dump(curl_error($ch));
    curl_close( $ch );
} catch (Exception $e) {
    var_dump($e);
}
Run Code Online (Sandbox Code Playgroud)

php dnsmasq curl laravel laravel-valet

9
推荐指数
3
解决办法
1653
查看次数

设置Docker Dnsmasq

我正在尝试设置一个docker dnsmasq容器,以便我可以让所有的docker容器查找域名,而不是使用硬编码的IP(如果它们位于同一主机上).这解决了一个问题,即无法改变docker容器中的/ etc/hosts文件,这使我可以通过更改dnsmasq容器引用的单个文件,轻松地一次性更新所有容器.

看起来有人已经为我完成了艰苦的工作并创建了一个dnsmasq容器.不幸的是,它对我来说并不"有效".我写了一个bash脚本来启动容器,如下所示:

name="dnsmasq_"
timenow=$(date +%s)
name="$name$timenow"

sudo docker run \
-v="$(pwd)/dnsmasq.hosts:/dnsmasq.hosts" \
--name=$name \
-p='127.0.0.1:53:5353/udp' \
-d sroegner/dnsmasq
Run Code Online (Sandbox Code Playgroud)

在运行之前,我创建了dnsmasq.hosts目录并在其中插入了一个名为hosts.txt的文件,其中包含以下内容:

192.168.1.3 database.mydomain.com
Run Code Online (Sandbox Code Playgroud)

不幸的是,每当我尝试从内部ping该域时:

  • 主人
  • dnsmasq容器
  • 同一主机上的另一个容器

我总是收到ping: unknown host错误消息.

我尝试启动没有守护进程模式的dnsmasq容器,所以我可以调试它的输出,如下所示:

dnsmasq: started, version 2.59 cachesize 150
dnsmasq: compile time options: IPv6 GNU-getopt DBus i18n DHCP TFTP conntrack IDN
dnsmasq: reading /etc/resolv.dnsmasq.conf
dnsmasq: using nameserver 8.8.8.8#53
dnsmasq: read /etc/hosts - 7 addresses
dnsmasq: read /dnsmasq.hosts//hosts.txt - 1 addresses
Run Code Online (Sandbox Code Playgroud)

我猜我-p在启动容器时没有正确指定参数.有人可以告诉我其他docker容器应该查找DNS,或者我试图做的事实际上是不可能的吗?

networking dnsmasq docker

8
推荐指数
1
解决办法
1万
查看次数

Curl:显示所有PHP本地主机站点的“无法解析域名”错误

今天,我的cURL开始向我显示此错误,Could not resolve: {local-domain.test} (domain name not found) 如果我尝试从外部链接获取某些信息,则一切正常,但是本地站点无法正常工作。

所以,这是我的代码

public function send($type, $url, $data)
    {
        $type = strtolower($type);

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

        if ($type == 'post') {
            $urlWithData = http_build_query($data);
            curl_setopt($ch, CURLOPT_POST, count($data));
            curl_setopt($ch, CURLOPT_POSTFIELDS, $urlWithData);
        }

        $result = curl_exec($ch);
        $status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        curl_close($ch);

        $out = new \stdClass();
        $out->status = $status;
        $out->body = json_decode($result, true);

        return $out;
    }
Run Code Online (Sandbox Code Playgroud)

如果我将该主机添加到我的/ etc / hosts /文件中,那么所有主机都将开始工作,但是我拥有大量的域,并且在更新PHP之前,我都可以正常工作。我正在使用dnsmasq作为动态主机解析工具。

  • 操作系统:MacOs High …

php dnsmasq curl

8
推荐指数
1
解决办法
801
查看次数

dnsmasq标签和条件DNS服务器

作为一个整体解决方案,我想使用dnsmasq拆分dns在不同服务器之间进行解析.

即默认为dns服务器A,除非显式设置为每个主机(mac)的dns服务器B.

我想将我的网络分成dnsmasq标记的子网,这个例子说:

192.168.1.80-150 =绿色

192.168.1.40-50 =红色

我希望dhcp租约由-default-标记为绿色,除了一些特定的MAC,我想分发红色标签.我有这个部分成功运作(我相信),我明确地通过MAC设置它 - 但我想要的是一切 - 除非另有说明 - 默认为绿色.

然后我想说"对于所有绿色标签,给他们dns服务器A作为他们的解析器","对于所有红色标签,给他们dns服务器B作为他们的解析器".

这可能吗?

我有以下配置似乎不起作用:

--8<--
dhcp-range=set:green,192.168.1.80,192.168.1.150,infinite
dhcp-range=tag:red,192.168.1.40,192.168.1.50,infinite

dhcp-option=net:green,option:dns-server,8.8.8.8,8.8.4.4
dhcp-option=net:red,option:dns-server,192.168.1.11    

dhcp-host=AA:BB:CC:DD:CC:BB,redhost1,192.168.1.41,infinite,net:red
dhcp-host=BB:CC:DD:AA:BB:00,greenhost1,192.168.1.81,infinite,net:green

dhcp-option=option:router,192.168.1.1
--8<--
Run Code Online (Sandbox Code Playgroud)

这似乎不起作用,但我根据我是否匹配了他们的MAC,为不同的主机分配了不同的IP地址,然后好像dns服务器没有正确分发.

我相信dns服务器没有发布,因为其中一个主机上的"cat /etc/resolv.conf"显示为127.0.0.1.

总结一下我的疑问:

  1. 我可以将所有内容默认设置为"绿色",除非MAC明确设置为"红色"(此时我必须明确地将所有内容的mac放入conf文件中)吗?
  2. 我可以为不同的标记网络指定不同的DNS服务器吗?
  3. 为了更加清晰,我对"标签"和"设置"之间的差异感到有点困惑,并且在谷歌搜索中找到了对这两者的引用,这些的简短而清晰的定义会很棒.

非常感谢

dns dnsmasq

7
推荐指数
1
解决办法
2万
查看次数