11
10
2012
22

dnscrypt + dnsmasq

本文来自依云's Blog,转载请注明。

安装过程没什么特别的就不说了。

启动 dnscrypt-proxy。由于 systemd 实在太复杂,一时半会搞不明白,所以我直接手动启动了:

sudo dnscrypt-proxy --local-address=0.0.0.0:35535 --user=nobody --logfile=/var/log/dnscrypt.log --daemonize

然后测试下:

>>> dig -p 35535 twitter.com @localhost

; <<>> DiG 9.9.2 <<>> -p 35535 twitter.com @localhost
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 65004
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 8192
;; QUESTION SECTION:
;twitter.com.                   IN      A

;; ANSWER SECTION:
twitter.com.            16      IN      A       199.59.148.82
twitter.com.            16      IN      A       199.59.149.230
twitter.com.            16      IN      A       199.59.150.39

;; Query time: 267 msec
;; SERVER: 127.0.0.1#35535(127.0.0.1)
;; WHEN: Sat Nov 10 15:07:01 2012
;; MSG SIZE  rcvd: 88

It works!

然后配置 dnsmasq。

server=127.0.0.1#35535
bogus-nxdomain=67.215.65.132

bogus-nxdomain那行是为 OpenDNS 加的,类似于国内 ISP 的「114 页面」。dnscrypt 默认使用 OpenDNS 的服务器,暂时不知道其它提供加密 DNS 的服务器地址,所以只好这样了。

然后重启 dnsmasq 就 OK 了。

说点题外话。其实很多服务进程启动起来很简单,比如 sshd,改好配置文件后直接运行就可以了。再比如 mongod 和 privoxy,手动启动还方便指定配置文件什么的。我的个人电脑不是服务器,不需要复杂的各种管理。虽然说不是服务器,但重启次数还是不需要和 Windows 比的。所以,systemd 给我带来了一堆麻烦,却没能解决我遇到的任何问题

Category: 网络 | Tags: DNS dnsmasq dnscrypt 安全 | Read Count: 17520
maplebeats 说:
Nov 10, 2012 08:57:52 PM

和我完全不一样的配置呃。。。我把dnscrypt监听到127.0.0.1,然后把dnsmasq绑到127.0.0.2,然后写进resolv.conf。。。还好我早就切换到systemd了,没有麻烦,哈哈

Avatar_small
依云 说:
Nov 10, 2012 09:33:00 PM

源里没 dnscrypt 啊你怎么用的 systemd?
你那样也不错,不过我的 dnsmasq 要监听 0.0.0.0 的,所以 127 开头的地址再多也无用……

maplebeats 说:
Nov 10, 2012 11:39:59 PM

aur里有。。。而且写个systemd服务并不复杂呀。。。

Avatar_small
依云 说:
Nov 11, 2012 12:29:15 AM

我不会用啊。.service 文件源码里已经有了(packages/opensuse 下)。
AUR 和 archlinuxcn 的包都是我上传的……

maplebeats 说:
Nov 11, 2012 11:41:25 AM

咦?不是直接start就行了么,自启动用enable。改参数到.service里改。。。没有其它要干的呀:-(

Avatar_small
依云 说:
Nov 11, 2012 11:53:08 AM

我改过 slim 的,然后折腾好久才终于启动成功……

MaskRay 说:
Nov 15, 2012 02:55:55 PM

你是爲了 dns 不被攔截嗎 有沒有考慮過用 powerdns

Avatar_small
依云 说:
Nov 15, 2012 03:14:27 PM

没听说过那个呢。我只是为了得到正确的 DNS 结果而已。

荒野无灯 说:
Nov 26, 2012 12:21:59 PM

dnscrypt + dnsmasq真是黄金搭档了。配合go.a.g.e.nt 或SSH p.r.o.x.y,网络畅通无阻。
我还没切换到systemd ....这东西先前fedora 发布的时候大概看了下介绍。貌似比传统Sysvinit系统更强大~~

Jeffrey4l 说:
Nov 30, 2012 10:26:39 AM

我的dnsmasq怎么感觉没有缓存时间? 连续查询的话,查询时间基本保持在几百毫秒. 不应该有的时候是0毫秒嘛? 我在没有弄dnscrypt的时候是有0的情况的.现在是我的设置有问题? 还是就是这样子的?

Avatar_small
依云 说:
Nov 30, 2012 11:07:16 AM

0 毫秒没有,我这里后续查询基本上在 3ms-50ms 之间。所以你一定是有哪里配置得不对吧?

Jeffrey4l 说:
Nov 30, 2012 11:16:49 AM

cat /etc/dnsmasq.conf
bind-interfaces
cache-size=1000
interface=lo
server=127.0.0.1#5533
#bogus-nxdomain=67.215.65.132

sudo /usr/local/sbin/dnscrypt-proxy --local-address=127.0.0.1:5533 --edns-payload-size=4096 --pidfile=/run/dnscrypt-proxy.pid --user=dnscrypt --logfile=/var/log/dnscrypt.log --tcp-only --daemonize

没感觉哪有错。。你能看出来嘛?

Avatar_small
依云 说:
Nov 30, 2012 11:39:58 AM

--tcp-only 的问题?你 netstat -nptl 和 -npul 看看是不是 UDP 没了?

Jeffrey4l 说:
Nov 30, 2012 11:51:16 AM

确实。加上--tcp-only后,没有开udp的监听端口。去掉这个参数后就好。

但是原因是什么?难道dnsmasq只能cache udp的请求,不能cache tcp的?

Jeffrey4l 说:
Nov 30, 2012 11:55:52 AM

Q: Why doesn't dnsmasq support DNS queries over TCP? Don't the RFC's specify
that?

A: Update: from version 2.10, it does. There are a few limitations:
data obtained via TCP is not cached, and source-address
or query-port specifications are ignored for TCP.

找到原因了。但是还是没有理解why..技术上的问题?

Avatar_small
依云 说:
Nov 30, 2012 12:35:35 PM

不知道耶。不过也没必要用 TCP 吧?

scola 说:
Nov 14, 2013 09:43:10 PM

请问一下,dnsmasq的缓存在重启电脑后会清除么,我每天都关机,如果安装在openwrt的路由器上,重启后会清除缓存么?

Avatar_small
依云 说:
Nov 14, 2013 10:02:35 PM

会,dnsmasq 的缓存只保留在内存里,默认数量也不多。但是因为局部性原理,命中率还是挺不错的 :-)

Avatar_small
luft 说:
May 16, 2014 08:07:50 AM

你好!我的 仅仅是 /etc/dnsmasq.conf 里的 server=127.0.0.1#2053和你不一样,但 启动后 发现 dnsmasq监听的仍然是 53 端口 ,用系统命令可以查看到, 不知道问题出现在哪里

Avatar_small
依云 说:
May 16, 2014 12:12:40 PM

你理解错了。server 指令是说上游 DNS 服务器的地址。要改变 dnsmasq 监听的端口号,使用 port=2053 这样子。

Avatar_small
luft 说:
May 16, 2014 02:29:40 PM

恩, 谢谢, 本地全局透明代理已经OK了 ,而且还做了网关设置
但有个问题 , 电脑上看youtube无任何问题
在手机里用twitter客户端 也毫无问题,youtube 网站页面可以完全打开, 但就是视频一直缓冲无法播放, 客户端也是如此 ,不知道问题出现在哪里


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter

部分静态文件存储由又拍云存储提供。 | Theme: Aeros 2.0 by TheBuckmaker.com