首页 > 编程知识 正文

linux,linux web服务器配置

时间:2023-05-05 00:41:23 阅读:153637 作者:2431

长期使用的DNSMasq方案终于在大半年前被完全炸毁了。

原因不仅在于DNSMasq的性能和安全性完全不足以支撑公共网络的缓存/递归DNS,还在于在试图防止和加速污染时确实存在蛋疼的问题。

现在使用的方案是Unbound DNSCrypt,将加速器列表带回去。 这段时间,无论是我的本机还是两台公仔网服务器,效果和反馈似乎都很好。

准备工作

必要的步骤:

unbound

dnscrypt-proxy

化妆文件

千兆

取消绑定配置

修改文件/etc/unbound/unbound.conf。 如果没有此文件,则必须找到并复制软件包提供的配置example文件。 此处列出的只是需要修改的部分,其他的在默认配置下没有问题。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37num-threads: 2 #线程数可以更改为物理核心数

接口:0.0.0.0#侦听所有IPv4地址

接口:0 #侦听所有IPv6地址

#仅需要使用本机时,只需接口: 127.0.0.1个即可

so-rcvbuf: 4m

在so-sndbuf: 4m #本机上使用时,这两个buf可以取消注释

如果打开了so-reuseport: yes #多线程,请键入yes

msg-cache-size: 64m #本机可设定为4m以下

rrset-cache-size: 128m #本机可设定为4m以下

cache-max-ttl: 3600 #建议设置得太大.我不服专门治疗各种运营商的DNS缓存

outgoing-num-tcp: 256 #每个线程向上查询以限制TCP并发计数

incoming-num-tcp: 1024 #限制每个线程接受查询的TCP并发计数

#以下四个没有必要说明吧。 如果你不想用那个,就写no

do-IP 4:是

do-IP 63360是

do-UDP :是

do-TCP :是

TCP-upstream :否#默认为否。 如果隧道状态稳定,也不用写yes。 根据情况,强制将tcp连上游的话写成“是”

access-control :0.0.0/0 allow #建议为本机设定127.0.0.0/8 allow,并在局域网上适当调整

如果没有root-hints 3360 '/etc/unbound/root.hints ' #可通过FTP ://FTP.internic.net/domain/named.cache下载

hide-identity: yes #不会返回对id.server和hostname.bind的查询。

hide-version: yes #不会返回对version.server和version.bind的查询。

#但是,下面有identity和version自定义选项。 如果不隐藏这些的话,还可以修改选项卖萌。 ` )

硬件绿色:是#建议打开

禁用模块配置: '迭代器' dnssec检查,如果上游不支持dnssec,则禁用。 请注意,此选项可能位于其他包含的文件中

unwanted-reply-threshold :1000000 #对各种网络不服,数值为推荐值,具体可自行修改查看效果

do-not-query-localhost: no #通常是为了避免剥皮数据包丢失而打开的,但由于以后要使用DNSCrypt,因此将其关闭

prefetch: yes #非常好用,戴上吧

minimal-responses :是#省带宽,开车吧。 本机可以关闭

#关键部分来了。 将所有默认查询删除到DNSCrypt中。 使用“地址”@“端口”指定查询地址和端口,并默认端口53。

#然后把国内的地址落在国内的缓存服务器上。 这两个选项的顺序不能错哦

# 如果使用隧道查询,把这个地址改为隧道对端的地址,或者一个国外的 DNS 服务器都可以,例如 8.8.8.8。

# 具体看是在对端开 DNS 还是直接用国外的服务器。后者的话,前面 outgoing-interface 可以直接设置隧道本地端的地址,不过要配合 dnsmasq-china-list 的话,还是写路由表比较合适,否则不够灵活。

include: "/etc/unbound/accelerated-domains.china.unbound.conf"

forward-zone:

name: "."

forward-addr: 127.0.0.1@5353

DNSCrypt 配置

修改文件 /etc/default/dnscrypt-proxy。

1

2DNSCRYPT_PROXY_LOCAL_ADDRESS=127.0.0.1:5353 # 设置侦听在 127.0.0.1 端口 5353。

DNSCRYPT_PROXY_RESOLVER_NAME=cisco # cisco 其实蛮快的,但是慢的话就去用个别的吧。d0wn 的那堆服务器真的不稳定,和名字一个样...

如果使用 systemd 的话这个文件就没用辣,看这里看这里

修改文件 /usr/lib/systemd/system/dnscrypt-proxy.socket。

要修改的部分:

1

2ListenStream=127.0.0.1:5353

ListenDatagram=127.0.0.1:5353

127.0.0.1:5353 就是上面 unbound 配置里 DNSCrypt 的监听地址。

dnsmasq-china-list 来加速

首先 clone 这个仓库到本地。

执行 make unbound 来生成一份 unbound 配置,然后放在上面 unbound 配置里写的地址,也就是 /etc/unbound/accelerated-domains.china.unbound.conf。默认的 DNS 是 114DNS,最不太近的一段时间都挺残的所以不建议用。如果要改为其他的,例如 DNSPod PublicDNS 的话使用 make SERVER=119.29.29.29 unbound 即可。

如果还需要一些特定的缓存上游设置,要放在 include: "/etc/unbound/accelerated-domains.china.unbound.conf" 这句前面。来举一只栗子。

举一只果子的栗子。

AppStore 的加载和下载速度一直在国内饱受一些极客们的诟病,然而同时饱受诟病的运营商 DNS 解析 AppStore 的下载地址反而是国内的 CDN 地址,速度会非常快。

需要使用 dig 工具,并且要在国内的网络环境下测试。Linux 发行版里都有包可以装,OS X 则自带。

第一条命令:dig +trace a100.phobos.apple.com.

递归追踪解析结果,这个记录被 CNAME 到了 a100.phobos-apple.com.akadns.net.。

第二条命令:dig +trace a100.phobos-apple.com.akadns.net.,得到这条记录被 CNAME 到了 a1-a200.itunes-apple.com.akadns.net.。

第三条命令:dig +trace a1-a200.itunes-apple.com.akadns.net.,看到了 CDN 的地址,a1-a200.phobos.apple.chinacache.net.。

所以如果有国内的地址直接去跟踪解析 akadns.net 的 DNS 的话,一般是可以正确解析到国内 CDN 的。先找一个 akadns.net 的权威 NS 地址,比如 a1-128.akadns.net 对应的 IP 是 193.108.88.128。同时还得有国内的 CDN 地址也从国内地址去解析,那么配置里这样写:

1

2

3

4

5

6forward-zone:

name: "akadns.net."

forward-addr: 193.108.88.128

forward-zone:

name: "chinacache.net."

forward-addr: 119.29.29.29 # DNSPod PublicDNS 的服务器地址

多次尝试之后,发现还有一个 CDN 地址 0gq2p7eckbs26f.mwcname.com,那么也把这个地址交给 unbound 通过国内网络解析。

1

2

3forward-zone:

name: "mwcname.com."

forward-addr: 119.29.29.29

一并加到上面的配置里,然后来测试下。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34Phoenix-X1-Carbon :: ~ » dig @127.0.0.1 a100.phobos.apple.com

; <<>> DiG 9.10.3-P4 <<>> @127.0.0.1 a100.phobos.apple.com

; (1 server found)

;; global options: +cmd

;; Got answer:

;; ->>HEADER<

;; flags: qr rd ra; QUERY: 1, ANSWER: 14, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:

; EDNS: version: 0, flags:; udp: 4096

;; QUESTION SECTION:

;a100.phobos.apple.com. IN A

;; ANSWER SECTION:

a100.phobos.apple.com. 3596 IN CNAME a100.phobos-apple.com.akadns.net.

a100.phobos-apple.com.akadns.net. 117 IN CNAME a1-a200.itunes-apple.com.akadns.net.

a1-a200.itunes-apple.com.akadns.net. 297 IN CNAME a1-a200.phobos.apple.chinacache.net.

a1-a200.phobos.apple.chinacache.net. 1799 IN CNAME a1-a200.phobos.apple.cncssr.chinacache.net.

a1-a200.phobos.apple.cncssr.chinacache.net. 1799 IN CNAME cc00109.h.cncssr.chinacache.net.

cc00109.h.cncssr.chinacache.net. 120 IN A 223.99.228.87

cc00109.h.cncssr.chinacache.net. 120 IN A 113.207.33.15

cc00109.h.cncssr.chinacache.net. 120 IN A 113.207.33.12

cc00109.h.cncssr.chinacache.net. 120 IN A 202.110.80.14

cc00109.h.cncssr.chinacache.net. 120 IN A 61.179.105.154

cc00109.h.cncssr.chinacache.net. 120 IN A 61.179.105.7

cc00109.h.cncssr.chinacache.net. 120 IN A 119.188.138.172

cc00109.h.cncssr.chinacache.net. 120 IN A 120.192.248.195

cc00109.h.cncssr.chinacache.net. 120 IN A 221.181.39.76

;; Query time: 233 msec

;; SERVER: 127.0.0.1#53(127.0.0.1)

;; WHEN: Thu Apr 28 00:34:02 CST 2016

;; MSG SIZE rcvd: 387

走国内 CDN 了吧~

重启相关服务,更改自己所用的 DNS 地址,完事儿收工(「・ω・)「

=== 2016-04-30 14:00 更新 ===

如果需要 edns-client-subnet 支持的话,需要手动编译源码安装。命令

1

2

3

4# 克隆源码

svn co http://unbound.nlnetlabs.nl/svn/branches/edns-subnet/

# 编译安装

./configure --enable-subnet --with-libevent && make && sudo make install

配置文件的格式

1

2# 默认向所有服务器发送 edns-client-subnet

send-client-subnet: 0.0.0.0/0

如果只对特定权威 DNS 发送 edns-client-subnet 请求,则按照此格式写多行 IP。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。