日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

dnsmasq詳解及配置

 just_person 2019-01-14

1、dnsmasq的簡(jiǎn)介

Dnsmasq 提供 DNS 緩存和 DHCP 服務(wù)功能。作為域名解析服務(wù)器(DNS),dnsmasq可以通過(guò)緩存 DNS 請(qǐng)求來(lái)提高對(duì)訪問(wèn)過(guò)的網(wǎng)址的連接速度。作為DHCP 服務(wù)器,dnsmasq 可以用于為局域網(wǎng)電腦分配內(nèi)網(wǎng)ip地址和提供路由。DNSDHCP兩個(gè)功能可以同時(shí)或分別單獨(dú)實(shí)現(xiàn)。dnsmasq輕量且易配置,適用于個(gè)人用戶(hù)或少于50臺(tái)主機(jī)的網(wǎng)絡(luò)。此外它還自帶了一個(gè) PXE 服務(wù)器。

 

2、Dnsmasq的主要作用

(1)將Dnsmasq作為本地DNS服務(wù)器使用,直接修改電腦的本地DNSIP地址即可。

 

(2)應(yīng)對(duì)ISPDNS劫持(反DNS劫持),輸入一個(gè)不存在的域名,正常的情況下瀏覽器是顯示無(wú)法連接,DNS劫持會(huì)跳轉(zhuǎn)到一個(gè)廣告頁(yè)面。先隨便nslookup 一個(gè)不存在的域名,看看ISP商劫持的IP地址。

 

(3)智能DNS加快解析速度,打開(kāi)/etc/dnsmasq.conf文件,server=后面可以添加指定的DNS,例如國(guó)內(nèi)外不同的網(wǎng)站使用不同的DNS。

國(guó)內(nèi)指定DNS

server=/cn/114.114.114.114

server=/taobao.com/114.114.114.114

server=/taobaocdn.com/114.114.114.114

國(guó)外指定DNS

server=/google.com/223.5.5.5

 

(4)屏蔽網(wǎng)頁(yè)廣告,將指廣告的URL指定127這個(gè)IP,就可以將網(wǎng)頁(yè)上討厭的廣告給去掉了。

address=/ad.youku.com/127.0.0.1

address=/ad.iqiyi.com/127.0.0.1

 

(5)指定域名解析到特定的IP上。這個(gè)功能可以讓你控制一些網(wǎng)站的訪問(wèn),非法的DNS就經(jīng)常把一些正規(guī)的網(wǎng)站解析到不正確IP上。

address=/freehao123.com/123.123.123.123

 

(6)管理控制內(nèi)網(wǎng)DNS,首先將局域網(wǎng)中的所有的設(shè)備的本地DNS設(shè)置為已經(jīng)安裝Dnsmasq的服務(wù)器IP地址。然后修改已經(jīng)安裝Dnsmasq的服務(wù)器Hosts文件:/etc/hosts,指定域名到特定的IP中。

例如想讓局域網(wǎng)中的所有用戶(hù)訪問(wèn)www.freehao123.com時(shí)跳轉(zhuǎn)到192.168.0.2,添加:192.168.0.2 www.freehao123.comHosts文件中既可,整個(gè)過(guò)程也可以說(shuō)是“DNS劫持”。

 

3、dnsmasq的解析流程

dnsmasq先去解析hosts文件, 再去解析/etc/dnsmasq.d/下的*.conf文件,并且這些文件的優(yōu)先級(jí)要高于dnsmasq.conf,我們自定義的resolv.dnsmasq.conf中的DNS也被稱(chēng)為上游DNS,這是最后去查詢(xún)解析的;

如果不想用hosts文件做解析,我們可以在/etc/dnsmasq.conf中加入no-hosts這條語(yǔ)句,這樣的話就直接查詢(xún)上游DNS了,如果我們不想做上游查詢(xún),就是不想做正常的解析,我們可以加入no-reslov這條語(yǔ)句。

 

4、dnsmasq的參數(shù)及常用設(shè)置說(shuō)明

編輯 dnsmasq 的配置文件 /etc/dnsmasq.conf 。這個(gè)文件包含大量的選項(xiàng)注釋。

(1)dnsmasq經(jīng)常修改的比較重要參數(shù)說(shuō)明

    

具體參數(shù)

參數(shù)說(shuō)明

resolv-file

定義dnsmasq從哪里獲取上游DNS服務(wù)器的地址, 默認(rèn)從/etc/resolv.conf獲取。

strict-order

表示嚴(yán)格按照resolv-file文件中的順序從上到下進(jìn)行DNS解析,直到第一個(gè)解析成功為止。

listen-address 

定義dnsmasq監(jiān)聽(tīng)的地址,默認(rèn)是監(jiān)控本機(jī)的所有網(wǎng)卡上。

address

 啟用泛域名解析,即自定義解析a記錄,例如:address=/long.com/192.168.115.10 訪問(wèn)long.com時(shí)的所有域名都會(huì)被解析成192.168.115.10

bogus-nxdomain 

對(duì)于任何被解析到此 IP 的域名,將響應(yīng) NXDOMAIN 使其解析失效,可以多次指定

通常用于對(duì)于訪問(wèn)不存在的域名,禁止其跳轉(zhuǎn)到運(yùn)營(yíng)商的廣告站點(diǎn)

server

指定使用哪個(gè)DNS服務(wù)器進(jìn)行解析,對(duì)于不同的網(wǎng)站可以使用不同的域名對(duì)應(yīng)解析。

例如:server=/google.com/8.8.8.8    #表示對(duì)于google的服務(wù),使用谷歌的DNS解析。

 

2)查看配置文件語(yǔ)法是否正確,可執(zhí)行下列命令

[root@localhost ~]# dnsmasq --test

dnsmasq: syntax check OK.

 

(3)DNS 緩存設(shè)置

要在單臺(tái)電腦上以守護(hù)進(jìn)程方式啟動(dòng)dnsmasq做DNS緩存服務(wù)器,編輯/etc/dnsmasq.conf,添加監(jiān)聽(tīng)地址:

listen-address=127.0.0.1

 

如果用此主機(jī)為局域網(wǎng)提供默認(rèn) DNS,請(qǐng)用為該主機(jī)綁定固定 IP 地址,設(shè)置:

listen-address=192.168.x.x

這種情況建議配置靜態(tài)IP

 

多個(gè)ip地址設(shè)置:

listen-address=127.0.0.1,192.168.x.x

 

(4)三個(gè)以上域名服務(wù)器

Linux 處理 DNS 請(qǐng)求時(shí)有個(gè)限制,在 resolv.conf 中最多只能配置三個(gè)域名服務(wù)器(nameserver)。作為一種變通方法,可以在 resolv.conf 文件中只保留 localhost 作為域名服務(wù)器,然后為外部域名服務(wù)器另外創(chuàng)建 resolv-file 文件。首先,為 dnsmasq 新建一個(gè)域名解析文件:

[root@localhost ~]# vim /etc/resolv.dnsmasq.conf

# Google's nameservers, for example

nameserver 8.8.8.8

nameserver 8.8.4.4

然后編輯 /etc/dnsmasq.conf 讓 dnsmasq 使用新創(chuàng)建的域名解析文件:

[root@localhost ~]# vim  /etc/dnsmasq.conf

...

resolv-file=/etc/resolv.dnsmasq.conf

 

(5)使用dhcpcd

dhcpcd 可以是通過(guò)創(chuàng)建(或編輯)/etc/resolv.conf.head文件或 /etc/resolv.conf.tail文件來(lái)指定dns服務(wù)器,使/etc/resolv.conf不會(huì)被每次都被dhcpcd重寫(xiě)

echo "nameserver 127.0.0.1" > /etc/resolv.conf.head   設(shè)置dns服務(wù)器為127.0.0.1

 

(6)使用dhclient

要使用 dhclient, 取消 /etc/dhclient.conf 文件中如下行的注釋?zhuān)?/span>

prepend domain-name-servers 127.0.0.1;

 

(7)使用NetworkManager

NetworkManager 可以靠自身配置文件的設(shè)置項(xiàng)啟動(dòng) dnsmasq 。在 NetworkManager.conf 文件的 [main] 節(jié)段添加 dns=dnsmasq 配置語(yǔ)句,然后禁用由 systemd 啟動(dòng)的 dnsmasq.service:

[root@localhost ~]# vim /etc/NetworkManager/NetworkManager.conf

[main]

plugins=keyfile

dns=dnsmasq

可以在 /etc/NetworkManager/dnsmasq.d/ 目錄下為 dnsmasq 創(chuàng)建自定義配置文件。例如,調(diào)整 DNS 緩存大?。ū4嬖趦?nèi)存中):

[root@localhost ~]# vim /etc/NetworkManager/dnsmasq.d/cache

cache-size=1000

dnsmasq 被 NetworkManager 啟動(dòng)后,此目錄下配置文件中的配置將取代默認(rèn)配置。

 

IPv6

啟用 dnsmasq 在 NetworkManager 可能會(huì)中斷僅持IPv6DNS查詢(xún) (例如 dig -6 [hostname]) 否則將工作。 為了解決這個(gè)問(wèn)題,創(chuàng)建以下文件將配置 dnsmasq 總是監(jiān)聽(tīng)IPv6loopback

[root@localhost ~]# vim /etc/NetworkManager/dnsmasq.d/ipv6_listen.conf

listen-address=::1

此外, dnsmasq不優(yōu)先考慮上游IPv6DNS。不幸的是NetworkManager已不這樣做 (Ubuntu Bug)。 一種解決方法是將禁用IPv4 DNSNetworkManager的配置,假設(shè)存在。

其他方式

另一種選擇是在NetworkManagers“設(shè)置(通常通過(guò)右鍵單擊小程序)和手動(dòng)輸入設(shè)置。設(shè)置將取決于前端中使用的類(lèi)型;這個(gè)過(guò)程通常涉及右擊小程序,編輯(或創(chuàng)建)一個(gè)配置文件,然后選擇DHCP類(lèi)型為“自動(dòng)(指定地址)?!?span style="font-family:Calibri">DNS地址將需要輸入,通常以這種形式:127.0.0.1, DNS-server-one, ....

 

(8)DHCP 服務(wù)器設(shè)置

dnsmasq默認(rèn)關(guān)閉DHCP功能,如果該主機(jī)需要為局域網(wǎng)中的其他設(shè)備提供IP和路由,應(yīng)該對(duì)dnsmasq 配置文件(/etc/dnsmasq.conf)必要的配置如下:

[root@localhost ~]# vim  /etc/dnsmasq.conf

# Only listen to routers' LAN NIC.  Doing so opens up tcp/udp port 53 to

# localhost and udp port 67 to world:

interface=<LAN-NIC>

 

# dnsmasq will open tcp/udp port 53 and udp port 67 to world to help with

# dynamic interfaces (assigning dynamic ips). Dnsmasq will discard world

# requests to them, but the paranoid might like to close them and let the

# kernel handle them:

bind-interfaces

 

# Dynamic range of IPs to make available to LAN pc

dhcp-range=192.168.111.50,192.168.111.100,12h

 

# If you’d like to have dnsmasq assign static IPs, bind the LAN computer's

# NIC MAC address:

dhcp-host=aa:bb:cc:dd:ee:ff,192.168.111.50

查看租約

[root@localhost ~]# cat /var/lib/misc/dnsmasq.leases

 

(9)添加自定義域

它可以將一個(gè)自定義域添加到主機(jī)中的(本地)網(wǎng)絡(luò):

local=/home.lan/

domain=home.lan

 

(10)啟動(dòng)守護(hù)進(jìn)程

設(shè)置為開(kāi)機(jī)啟動(dòng):

[root@localhost ~]# systemctl enable dnsmasq

立即啟動(dòng) dnsmashq:

[root@localhost ~]# systemctl start dnsnsmasq

需要重啟網(wǎng)絡(luò)服務(wù)以使 DHCP 客戶(hù)端重建一個(gè)新的 /etc/resolv.conf

查看dnsmasq是否啟動(dòng)正常,查看系統(tǒng)日志:

[root@localhost ~]# journalctl -u d

5、dnsmasq 的配置文件 /etc/dnsmasq.conf詳解

不加載本地的 /etc/hosts 文件

#no-hosts

添加讀取額外的 hosts 文件路徑,可以多次指定。如果指定為目錄,則讀取目錄中的所有文件。

#addn-hosts=/etc/dnsmasq.hosts.d

讀取目錄中的所有文件,文件更新將自動(dòng)讀取

#hostsdir=/etc/dnsmasq.hosts.d

例如,/etc/hosts中的os01將擴(kuò)展成os01.example.com

#expand-hosts

 

##############################################################################

緩存時(shí)間設(shè)置,一般不需要設(shè)置

本地 hosts 文件的緩存時(shí)間,通常不要求緩存本地,這樣更改hosts文件后就即時(shí)生效。

#local-ttl=3600

 local-ttl 僅影響 DHCP 租約

#dhcp-ttl=<time>

對(duì)于上游返回的值沒(méi)有ttl時(shí),dnsmasq給一個(gè)默認(rèn)的ttl,一般不需要設(shè)置,

#neg-ttl=<time>

指定返回給客戶(hù)端的ttl時(shí)間,一般不需要設(shè)置

#max-ttl=<time>

設(shè)置在緩存中的條目的最大 TTL

#max-cache-ttl=<time>

不需要設(shè)置,除非你知道你在做什么。

#min-cache-ttl=<time>

一般不需要設(shè)置

#auth-ttl=<time>

 

##############################################################################

記錄dns查詢(xún)?nèi)罩荆绻付?/span> log-queries=extra 那么在每行開(kāi)始處都有額外的日志信息。

#log-queries

設(shè)置日志記錄器,'-'  stderr,也可以是文件路徑。默認(rèn)為:DAEMON,調(diào)試時(shí)使用 LOCAL0。

#log-facility=<facility>

#log-facility=/var/log/dnsmasq/dnsmasq.log

異步log,緩解阻塞,提高性能。默認(rèn)為5,最大100。

#log-async[=<lines>]

#log-async=50

 

##############################################################################

指定用戶(hù)和組

#user=nobody

#group=nobody

 

##############################################################################

指定DNS的端口,默認(rèn)53,設(shè)置 port=0 將完全禁用 DNS 功能,僅使用 DHCP/TFTP

#port=53

指定 EDNS.0 UDP 包的最大尺寸,默認(rèn)為 RFC5625 推薦的 edns-packet-max=4096

#edns-packet-max=<size>

指定向上游查詢(xún)的 UDP 端口,默認(rèn)是隨機(jī)端口,指定后降低安全性、加快速度、減少資源消耗。

設(shè)置為 '0' 由操作系統(tǒng)分配。

#query-port=53535

指定向上游查詢(xún)的 UDP 端口范圍,方便防火墻設(shè)置。

#min-port=<port>

#max-port=<port>

指定接口,指定后同時(shí)附加 lo 接口,可以使用'*'通配符。

不能使用接口別名(例如:"eth1:0"),請(qǐng)用 listen-address 選項(xiàng)替代。

#interface=wlp2s0

指定排除的接口,排除優(yōu)先級(jí)高,可以使用'*'通配符

#except-interface=

僅接受同一子網(wǎng)的 DNS 請(qǐng)求。

僅在未指定 interface、except-interface、listen-address 或者 auth-server 時(shí)有效。

#local-service

指定不提供 DHCP  TFTP 服務(wù)的接口,僅提供 DNS 服務(wù)。

#no-dhcp-interface=enp3s0

指定IP地址,可以多次指定。

# interface 選項(xiàng)和 listen-address 選項(xiàng)可以同時(shí)使用。

下面兩行與指定 interface 選項(xiàng)的作用類(lèi)似。

listen-address=192.168.10.17

#listen-address=127.0.0.1

通常情況下即使設(shè)置了 interface 選項(xiàng)(例如:interface=wlp2s0 

將仍然綁定到通配符地址(例如:*:53 )。

開(kāi)啟此項(xiàng)將僅監(jiān)聽(tīng)指定的接口。

適用于在同一主機(jī)的不同接口或 IP 地址上運(yùn)行多個(gè) dns 服務(wù)器。

bind-interfaces

對(duì)于新添加的接口不進(jìn)行綁定。僅 Linux 系統(tǒng)支持,其他系統(tǒng)等同于 bind-interfaces 選項(xiàng)。

#bind-dynamic

 

##############################################################################

如果 hosts 中的主機(jī)有多個(gè) IP 地址,僅返回對(duì)應(yīng)子網(wǎng)的 IP 地址。

localise-queries

如果反向查找的是私有地址例如192.168.X.X,僅從 hosts 文件查找,不再轉(zhuǎn)發(fā)到上游服務(wù)器

#bogus-priv

對(duì)于任何被解析到此 IP 的域名,將響應(yīng) NXDOMAIN 使其解析失效,可以多次指定

通常用于對(duì)于訪問(wèn)不存在的域名,禁止其跳轉(zhuǎn)到運(yùn)營(yíng)商的廣告站點(diǎn)。

#bogus-nxdomain=64.94.110.11

忽略包含指定地址的 A 記錄查詢(xún)的回復(fù)。

例如上游有臺(tái) dns 服務(wù)器偽造 www.baidu.com  IP  1.1.1.1 并且響應(yīng)速度非??臁?/span>

指定 ignore-address=1.1.1.1 可以忽略它的響應(yīng)信息,

從而等待 www.baidu.com 正確的查詢(xún)結(jié)果。

#ignore-address=<ipaddr>

filterwin2k

 

##############################################################################

指定 resolv-file 文件路徑,默認(rèn)/etc/resolv.conf

#resolv-file=/etc/resolv.conf

不讀取 resolv-file 來(lái)確定上游服務(wù)器

#no-resolv

在編譯時(shí)需要啟用 DBus 支持。

#enable-dbus[=<service-name>]

嚴(yán)格按照resolv.conf中的順序進(jìn)行查找

#strict-order

向所有上游服務(wù)器發(fā)送查詢(xún),而不是一個(gè)。

all-servers

啟用轉(zhuǎn)發(fā)循環(huán)檢測(cè)

#dns-loop-detect

 

##############################################################################

這項(xiàng)安全設(shè)置是拒絕解析包含私有 IP 地址的域名,

這些IP地址包括如下私有地址范圍:10.0.0.0/8、172.16.0.0/12、192.168.0.0/16

其初衷是要防止類(lèi)似上游DNS服務(wù)器故意將某些域名解析成特定私有內(nèi)網(wǎng)IP而劫持用戶(hù)這樣的安全攻擊。

直接在配置文件中注銷(xiāo) stop-dns-rebind 配置項(xiàng)從而禁用該功能。

這個(gè)方法確實(shí)可以一勞永逸的解決解析內(nèi)網(wǎng) IP 地址的問(wèn)題,

但是我們也失去了這項(xiàng)安全保護(hù)的特性,所以在這里我不推薦這個(gè)辦法。

使用 rebind-domain-ok 進(jìn)行特定配置,顧名思義該配置項(xiàng)可以有選擇的忽略域名的 rebind 行為

stop-dns-rebind

rebind-localhost-ok

#rebind-domain-ok=[<domain>]|[[/<domain>/[<domain>/]

rebind-domain-ok=/.test.com/

 

##############################################################################

也不要檢測(cè) /etc/resolv.conf 的變化

#no-poll

重啟后清空緩存

clear-on-reload

完整的域名才向上游服務(wù)器查找,如果僅僅是主機(jī)名僅查找hosts文件

domain-needed

 

##############################################################################

# IP地址轉(zhuǎn)換

#alias=[<old-ip>]|[<start-ip>-<end-ip>],<new-ip>[,<mask>]

##############################################################################

#local=[/[<domain>]/[domain/]][<ipaddr>[#<port>][@<source-ip>|<interface>[#<port>]]

#server=[/[<domain>]/[domain/]][<ipaddr>[#<port>][@<source-ip>|<interface>[#<port>]]

server=/test.com/192.168.10.117

server=/10.168.192.in-addr.arpa/192.168.10.117

#rev-server=<ip-address>/<prefix-len>,<ipaddr>[#<port>][@<source-ip>|<interface>[#<port>]]

 

將任何屬于 <domain> 域名解析成指定的 <ipaddr> 地址。

也就是將 <domain> 及其所有子域名解析成指定的 <ipaddr> IPv4 或者 IPv6 地址,通常用于屏蔽特定的域名。

一次只能指定一個(gè) IPv4 或者 IPv6 地址,要同時(shí)返回 IPv4 IPv6 地址,請(qǐng)多次指定 address= 選項(xiàng)。

注意: /etc/hosts 以及 DHCP 租約將覆蓋此項(xiàng)設(shè)置。

#address=/<domain>/[domain/][<ipaddr>]

 

#ipset=/<domain>/[domain/]<ipset>[,<ipset>]

#mx-host=<mx name>[[,<hostname>],<preference>]

#mx-target=<hostname>

 

# SRV 記錄

#srv-host=<_service>.<_prot>.[<domain>],[<target>[,<port>[,<priority>[,<weight>]]]]

 

# A, AAAA  PTR 記錄 

#host-record=<name>[,<name>....],[<IPv4-address>],[<IPv6-address>][,<TTL>]

 

# TXT 記錄

#txt-record=<name>[[,<text>],<text>]

 

# PTR 記錄 

#ptr-record=<name>[,<target>]

 

#naptr-record=<name>,<order>,<preference>,<flags>,<service>,<regexp>[,<replacement>]

 

# CNAME 別名記錄

#cname=<cname>,<target>[,<TTL>]

 

 

#dns-rr=<name>,<RR-number>,[<hex data>]

#interface-name=<name>,<interface>[/4|/6]

#synth-domain=<domain>,<address range>[,<prefix>]

#add-mac[=base64|text]

#add-cpe-id=<string>

#add-subnet[[=[<IPv4 address>/]<IPv4 prefix length>][,[<IPv6 address>/]<IPv6 prefix length>]]

##############################################################################

 

##############################################################################

緩存條數(shù),默認(rèn)為150條,cache-size=0 禁用緩存。

cache-size=1000

不緩存未知域名緩存,默認(rèn)情況下dnsmasq緩存未知域名并直接返回為客戶(hù)端。

no-negcache

指定DNS同屬查詢(xún)轉(zhuǎn)發(fā)數(shù)量

dns-forward-max=1000

 

##############################################################################

#dnssec

#trust-anchor=[<class>],<domain>,<key-tag>,<algorithm>,<digest-type>,<digest>

#dnssec-check-unsigned

#dnssec-no-timecheck

#dnssec-timestamp=<path>

#proxy-dnssec

#dnssec-debug

 

##############################################################################

#auth-server=<domain>,<interface>|<ip-address>

#auth-zone=<domain>[,<subnet>[/<prefix length>][,<subnet>[/<prefix length>].....]]

#auth-zone=<domain>[,<interface name>[/6|/4][,<interface name>[/6|/4].....]]

#auth-soa=<serial>[,<hostmaster>[,<refresh>[,<retry>[,<expiry>]]]]

#auth-sec-servers=<domain>[,<domain>[,<domain>...]]

#auth-peer=<ip-address>[,<ip-address>[,<ip-address>...]]

 

啟用連接跟蹤,讀取 Linux 入棧 DNS 查詢(xún)請(qǐng)求的連接跟蹤標(biāo)記,

并且將上游返回的響應(yīng)信息設(shè)置同樣的標(biāo)記。

用于帶寬控制和防火墻部署。

此選項(xiàng)必須在編譯時(shí)啟用 conntrack 支持,并且內(nèi)核正確配置并加載 conntrack。

此選項(xiàng)不能與 query-port 同時(shí)使用。

#conntrack

 

 

##############################################################################

#

#        DHCP 選項(xiàng)

#

##############################################################################

設(shè)置 DHCP 地址池,同時(shí)啟用 DHCP 功能。

# IPv4 <mode> 可指定為 static|proxy ,當(dāng) <mode> 指定為 static 時(shí),

需用 dhcp-host 手動(dòng)分配地址池中的 IP 地址。

當(dāng) <mode> 指定為 proxy 時(shí),為指定的地址池提供 DHCP 代理。

#dhcp-range=[tag:<tag>[,tag:<tag>],][set:<tag>,]<start-addr>[,<end-addr>][,<mode>][,<netmask>[,<broadcast>]][,<lease time>]

#dhcp-range=172.16.0.2,172.16.0.250,255.255.255.0,1h

#dhcp-range=192.168.10.150,192.168.10.180,static,255.255.255.0,1h

 

根據(jù) MAC 地址或 id 固定分配客戶(hù)端的 IP 地址、主機(jī)名、租期。

# IPv4 下指定 id:* 將忽略 DHCP 客戶(hù)端的 ID ,僅根據(jù) MAC 來(lái)進(jìn)行 IP 地址分配。

在讀取 /etc/hosts 的情況,也可以根據(jù) /etc/hosts 中的主機(jī)名分配對(duì)應(yīng) IP 地址。

指定 ignore 將忽略指定客戶(hù)端得 DHCP 請(qǐng)求。

#dhcp-host=[<hwaddr>][,id:<client_id>|*][,set:<tag>][,<ipaddr>][,<hostname>][,<lease_time>][,ignore]

#dhcp-hostsfile=<path>

#dhcp-hostsdir=<path>

讀取 /etc/ethers 文件 與使用 dhcp-host 的作用相同。IPv6 無(wú)效。

#read-ethers

 

指定給 DHCP 客戶(hù)端的選項(xiàng)信息,

默認(rèn)情況下 dnsmasq 將發(fā)送:子網(wǎng)掩碼、廣播地址、DNS 服務(wù)器地址、網(wǎng)關(guān)地址、域等信息。

指定此選項(xiàng)也可覆蓋這些默認(rèn)值并且設(shè)置其他選項(xiàng)值。

重要:可以使用 option:<option-name>或者 option號(hào) 來(lái)指定。

# <option-name>  option號(hào)的對(duì)應(yīng)關(guān)系可使用命令:

# dnsmasq --help dhcp 以及 dnsmasq --help dhcp6 查看,這點(diǎn)很重要。

例如設(shè)置網(wǎng)關(guān)參數(shù),既可以使用 dhcp-option=3,192.168.4.4 也可以使用 dhcp-option = option:router,192.168.4.4。

# 0.0.0.0 意味著當(dāng)前運(yùn)行 dnsmasq 的主機(jī)地址。

如果指定了多個(gè) tag:<tag> 必須同時(shí)匹配才行。

# [encap:<opt>,][vi-encap:<enterprise>,][vendor:[<vendor-class>],] 有待繼續(xù)研究。

#dhcp-option=[tag:<tag>,[tag:<tag>,]][encap:<opt>,][vi-encap:<enterprise>,][vendor:[<vendor-class>],][<opt>|option:<opt-name>|option6:<opt>|option6:<opt-name>],[<value>[,<value>]]

#dhcp-option-force=[tag:<tag>,[tag:<tag>,]][encap:<opt>,][vi-encap:<enterprise>,][vendor:[<vendor-class>],]<opt>,[<value>[,<value>]]

#dhcp-optsfile=<path>

#dhcp-optsdir=<path>

#dhcp-option=3,1.2.3.4

#dhcp-option=option:router,1.2.3.4

#dhcp-option=option:router,192.168.10.254

#dhcp-option=option:dns-server,192.168.10.254,221.12.1.227,221.12.33.227

 

##############################################################################

# (IPv4 only) 禁用重用服務(wù)器名稱(chēng)和文件字段作為額外的 dhcp-option 選項(xiàng)。

一般情況下 dnsmasq  dhcp-boot 移出啟動(dòng)服務(wù)器和文件信息到 dhcp-option 選項(xiàng)中。

這使得在 dhcp-option 選項(xiàng)封包中有額外的選項(xiàng)空間可用,但是會(huì)使老的客戶(hù)端混淆。

此選項(xiàng)將強(qiáng)制使用簡(jiǎn)單并安全的方式來(lái)避免此類(lèi)情況。可以認(rèn)為是一個(gè)兼容性選項(xiàng)。

#dhcp-no-override

 

##############################################################################

配置 DHCP 中繼。

# <local address> 是運(yùn)行 dnsmasq 的接口的 IP 地址。

所有在 <local address> 接口上接收到的 DHCP 請(qǐng)求將中繼到 <server address> 指定的遠(yuǎn)程 DHCP 服務(wù)器。

可以多次配置此選項(xiàng),使用同一個(gè) <local address> 轉(zhuǎn)發(fā)到多個(gè)不同的 <server address> 指定的遠(yuǎn)程 DHCP 服務(wù)器。

# <server address> 僅允許使用 IP 地址,不能使用域名等其他格式。

如果是 DHCPv6,<server address> 可以是 ALL_SERVERS 的多播地址 ff05::1:3 。

在這種情況下必須指定接口 <interface> ,不能使用通配符,用于直接多播到對(duì)應(yīng)的 DHCP 服務(wù)器所在的接口。

# <interface> 指定了僅允許接收從 <interface> 接口的 DHCP 服務(wù)器相應(yīng)信息。

#dhcp-relay=<local address>,<server address>[,<interface>]

 

##############################################################################

設(shè)置標(biāo)簽

#dhcp-vendorclass=set:<tag>,[enterprise:<IANA-enterprise number>,]<vendor-class>

#dhcp-userclass=set:<tag>,<user-class>

#dhcp-mac=set:<tag>,<MAC address>

#dhcp-circuitid=set:<tag>,<circuit-id>

#dhcp-remoteid=set:<tag>,<remote-id>

#dhcp-subscrid=set:<tag>,<subscriber-id>

#dhcp-match=set:<tag>,<option number>|option:<option name>|vi-encap:<enterprise>[,<value>]

#tag-if=set:<tag>[,set:<tag>[,tag:<tag>[,tag:<tag>]]]

 

#dhcp-proxy[=<ip addr>]......

 

##############################################################################

不分配匹配這些 tag:<tag>  DHCP 請(qǐng)求。

#dhcp-ignore=tag:<tag>[,tag:<tag>]

#dhcp-ignore-names[=tag:<tag>[,tag:<tag>]]

#dhcp-generate-names=tag:<tag>[,tag:<tag>]

# IPv4 only 使用廣播與匹配 tag:<tag> 的客戶(hù)端通信。一般用于兼容老的 BOOT 客戶(hù)端。

#dhcp-broadcast[=tag:<tag>[,tag:<tag>]] 

 

##############################################################################

# IPv4 only 設(shè)置 DHCP 服務(wù)器返回的 BOOTP 選項(xiàng),

# <servername> <server address> 可選,

如果未設(shè)置服務(wù)器名稱(chēng)將設(shè)為空,服務(wù)器地址設(shè)為 dnsmasq  IP 地址。

如果指定了多個(gè) tag:<tag> 必須同時(shí)匹配才行。

如果指定 <tftp_servername> 將按照 /etc/hosts 中對(duì)應(yīng)的 IP 地址進(jìn)行輪詢(xún)負(fù)載均衡。  

#dhcp-boot=[tag:<tag>,]<filename>,[<servername>[,<server address>|<tftp_servername>]]

根據(jù)不同的類(lèi)型使用不同的選項(xiàng)。

使用示例:

#        dhcp-match=set:EFI_x86-64,option:client-arch,9

#        dhcp-boot=tag:EFI_x86-64,uefi/grubx64.efi

#        #dhcp-match=set:EFI_Xscale,option:client-arch,8

#        #dhcp-boot=tag:EFI_Xscale,uefi/grubx64.efi

#        #dhcp-match=set:EFI_BC,option:client-arch,7

#        #dhcp-boot=tag:EFI_BC,uefi/grubx64.efi

#        #dhcp-match=set:EFI_IA32,option:client-arch,6

#        #dhcp-boot=tag:EFI_IA32,uefi/grubx64.efi

#        #dhcp-match=set:Intel_Lean_Client,option:client-arch,5

#        #dhcp-boot=tag:Intel_Lean_Client,uefi/grubx64.efi

#        #dhcp-match=set:Arc_x86,option:client-arch,4

#        #dhcp-boot=tag:Arc_x86,uefi/grubx64.efi

#        #dhcp-match=set:DEC_Alpha,option:client-arch,3

#        #dhcp-boot=tag:DEC_Alpha,uefi/grubx64.efi

#        #dhcp-match=set:EFI_Itanium,option:client-arch,2

#        #dhcp-boot=tag:EFI_Itanium,uefi/grubx64.efi

#        #dhcp-match=set:NEC/PC98,option:client-arch,1

#        #dhcp-boot=tag:NEC/PC98,uefi/grubx64.efi

#        dhcp-match=set:Intel_x86PC,option:client-arch,0

#        dhcp-boot=tag:Intel_x86PC,pxelinux.0

 

##############################################################################

# DHCP 使用客戶(hù)端的 MAC 地址的哈希值為客戶(hù)端分配 IP 地址,

通常情況下即使客戶(hù)端使自己的租約到期,客戶(hù)端的 IP 地址仍將長(zhǎng)期保持穩(wěn)定。

在默認(rèn)模式下,IP 地址是隨機(jī)分配的。

啟用 dhcp-sequential-ip 選項(xiàng)將按順序分配 IP 地址。

在順序分配模式下,客戶(hù)端使租約到期更像是僅僅移動(dòng)一下 IP 地址。

在通常情況下不建議使用這種方式。

#dhcp-sequential-ip

 

##############################################################################

多數(shù)情況下我們使用 PXE,只是簡(jiǎn)單的允許 PXE 客戶(hù)端獲取 IP 地址,

然后 PXE 客戶(hù)端下載 dhcp-boot 選項(xiàng)指定的文件并執(zhí)行,也就是 BOOTP 的方式。

然而在有適當(dāng)配置的 DHCP 服務(wù)器支持的情況下,PXE 系統(tǒng)能夠?qū)崿F(xiàn)更復(fù)雜的功能。

# pxe-service 選項(xiàng)可指定 PXE 環(huán)境的啟動(dòng)菜單。

為不同的類(lèi)型系統(tǒng)設(shè)定不同的啟動(dòng)菜單,并且覆蓋 dhcp-boot 選項(xiàng)。

# <CSA> 為客戶(hù)端系統(tǒng)類(lèi)型:x86PC, PC98, IA64_EFI, Alpha, Arc_x86, Intel_Lean_Client, 

# IA32_EFI, X86-64_EFI, Xscale_EFI, BC_EFI, ARM32_EFI  ARM64_EFI,其他類(lèi)型可能為一個(gè)整數(shù)。

# <basename> 引導(dǎo) PXE 客戶(hù)端使用 tftp  <server address> 或者 <server_name> 下載文件。

#     注意:"layer" 后綴 (通常是 ".0")  PXE 提供,也就是 PXE 客戶(hù)端默認(rèn)在文件名附加 .0 后綴。

#     示例:pxe-service=x86PC, "Install Linux", pxelinux         (讀取 pxelinux.0 文件并執(zhí)行)

#           pxe-service=x86PC, "Install Linux", pxelinux, 1.2.3.4(不適用于老的PXE

#     <bootservicetype> 整數(shù),PXE 客戶(hù)端將通過(guò)廣播或者通過(guò) <server address> 

#           或者 <server_name> 搜索對(duì)應(yīng)類(lèi)型的適合的啟動(dòng)服務(wù)。。

#     示例:pxe-service=x86PC, "Install windows from RIS server", 1

#           pxe-service=x86PC, "Install windows from RIS server", 1, 1.2.3.4

#     未指定 <basename>、<bootservicetype> 或者 <bootservicetype>  “0”,將從本地啟動(dòng)。

#     示例:pxe-service=x86PC, "Boot from local disk"

#           pxe-service=x86PC, "Boot from local disk", 0

如果指定 <server_name> 將按照 /etc/hosts 中對(duì)應(yīng)的 IP 地址進(jìn)行輪詢(xún)負(fù)載均衡。  

#pxe-service=[tag:<tag>,]<CSA>,<menu text>[,<basename>|<bootservicetype>][,<server address>|<server_name>]

 PXE 啟動(dòng)后彈出提示,<prompt> 為提示內(nèi)容,<timeout> 為超時(shí)時(shí)間,為 0 則立即執(zhí)行。

如果未指定此選項(xiàng),在有多個(gè)啟動(dòng)選項(xiàng)的情況下等待用戶(hù)選擇,不會(huì)超時(shí)。

#pxe-prompt=[tag:<tag>,]<prompt>[,<timeout>]

根據(jù)不同的類(lèi)型使用不同的菜單,使用示例:

#        #pxe-prompt="What system shall I netboot?", 120

#        # or with timeout before first available action is taken:

#        pxe-prompt="Press F8 or Enter key for menu.", 60

#        pxe-service=x86PC, "Now in x86PC (BIOS mode), boot from local", 0

#        pxe-service=x86PC, "Now in x86PC (BIOS mode)", pxelinux

#        pxe-service=PC98, "Now in PC98 mode", PC98

#        pxe-service=IA64_EFI, "Now in IA64_EFI mode", IA64_EFI

#        pxe-service=Alpha, "Now in Alpha mode", Alpha

#        pxe-service=Arc_x86, "Now in Arc_x86 mode", Arc_x86

#        pxe-service=Intel_Lean_Client, "Now in Intel_Lean_Client mode", Intel_Lean_Client

#        pxe-service=IA32_EFI, "Now in IA32_EFI mode", IA32_EFI

#        pxe-service=X86-64_EFI, "Now in X86-64_EFI (UEFI mode), boot from local", 0

#        pxe-service=X86-64_EFI, "Now in X86-64_EFI (UEFI mode)", grub/grub-x86_64.efi

#        pxe-service=Xscale_EFI, "Now in Xscale_EFI mode", Xscale_EFI

#        pxe-service=BC_EFI, "Now in BC_EFI mode", BC_EFI

#        # CentOS7 系統(tǒng)不支持下列兩個(gè)選項(xiàng)

#        #pxe-service=ARM32_EFI,"Now in ARM32_EFI mode",ARM32_EFI

#        #pxe-service=ARM64_EFI,"Now in ARM64_EFI mode",ARM64_EFI

 

##############################################################################

默認(rèn)為150,即最多分配150個(gè)ip地址出去,最大1000個(gè)ip

#dhcp-lease-max=150

# (IPv4 only) 指定DHCP端口,默認(rèn)為6768。如果不指定則為10671068,單指定一個(gè),第二個(gè)加1

#dhcp-alternate-port[=<server port>[,<client port>]]

謹(jǐn)慎使用此選項(xiàng),避免 IP 地址浪費(fèi)。(IPv4 only) 允許動(dòng)態(tài)分配 IP 地址給 BOOTP 客戶(hù)端。

注意:BOOTP 客戶(hù)端獲取的 IP 地址是永久的,將無(wú)法再次分配給其他客戶(hù)端。

#bootp-dynamic[=<network-id>[,<network-id>]]

謹(jǐn)慎使用此選項(xiàng)。

默認(rèn)情況下 DHCP 服務(wù)器使用 ping 的方式進(jìn)行確保 IP 未被使用的情況下將 IP 地址分配出去。

啟用此選項(xiàng)將不使用 ping 進(jìn)行確認(rèn)。

#no-ping

 

##############################################################################

記錄額外的 dhcp 日志,記錄所有發(fā)送給 DHCP 客戶(hù)端的選項(xiàng)(option)以及標(biāo)簽(tag)信息

#log-dhcp

禁止記錄日常操作日志,錯(cuò)誤日志仍然記錄。啟用 log-dhcp 將覆蓋下列選項(xiàng)。

#quiet-dhcp

#quiet-dhcp6

#quiet-ra

 

修改 DHCP 默認(rèn)租約文件路徑,默認(rèn)情況下無(wú)需修改

#dhcp-leasefile=/var/lib/dnsmasq/dnsmasq.leases

# (IPv6 only)

#dhcp-duid=<enterprise-id>,<uid>

 

##############################################################################

#dhcp-script=<path>

#dhcp-luascript=<path>

#dhcp-scriptuser=root

#script-arp

#leasefile-ro

 

#bridge-interface=<interface>,<alias>[,<alias>]

 

##############################################################################

 DHCP 服務(wù)器指定 domain 域名信息,也可以給對(duì)應(yīng)的 IP 地址池指定域名。

#     直接指定域名

#     示例:domain=

#     子網(wǎng)對(duì)應(yīng)的域名

#     示例:domain=wireless.,192.168.2.0/24

#     ip范圍對(duì)應(yīng)的域名

#     示例:domain=reserved.,192.68.3.100,192.168.3.200

#domain=<domain>[,<address range>[,local]]

在默認(rèn)情況下 dnsmasq 插入普通的客戶(hù)端主機(jī)名到 DNS 中。

在這種情況下主機(jī)名必須唯一,即使兩個(gè)客戶(hù)端具有不同的域名后綴。

如果第二個(gè)客戶(hù)端使用了相同的主機(jī)名,DNS 查詢(xún)將自動(dòng)更新為第二個(gè)客戶(hù)端的 IP 地址。

如果設(shè)置了 dhcp-fqdn 選項(xiàng),普通的主機(jī)名將不再插入到 DNS 中去,

僅允許合格的具有域名后綴的主機(jī)名插入到 DNS 服務(wù)器中。

指定此選項(xiàng)需同時(shí)指定不含 <address range> 地址范圍的 domain 選項(xiàng)。

#dhcp-fqdn

通常情況下分配 DHCP 租約后,dnsmasq 設(shè)置 FQDN 選項(xiàng)告訴客戶(hù)端不要嘗試 DDNS 更新主機(jī)名與 IP 地址。

這是因?yàn)?/span>  name-IP 已自動(dòng)添加到 dnsmasq  DNS 視圖中的。

設(shè)置此選項(xiàng)將允許客戶(hù)端 DDNS 更新,

 windows 下允許客戶(hù)端更新 windows AD 服務(wù)器是非常有用的。

參看  RFC 4702 

#dhcp-client-update

 

#enable-ra

#ra-param=<interface>,[high|low],[[<ra-interval>],<router lifetime>]

 

 

##############################################################################

#

#        TFTP 選項(xiàng)

#

##############################################################################

對(duì)于絕大多數(shù)的配置,僅需指定 enable-tftp  tftp-root 選項(xiàng)即可。

是否啟用內(nèi)置的 tftp 服務(wù)器,可以指定多個(gè)逗號(hào)分隔的網(wǎng)絡(luò)接口

#enable-tftp[=<interface>[,<interface>]]

#enable-tftp

#enable-tftp=enp3s0,lo

指定 tftp 的根目錄,也就是尋找傳輸文件時(shí)使用的相對(duì)路徑,可以附加接口,

#tftp-root=<directory>[,<interface>]

#tftp-root=/var/lib/tftpboot/

如果取消注釋?zhuān)敲醇词怪付ǖ?/span> tftp-root 無(wú)法訪問(wèn),仍然啟動(dòng) tftp 服務(wù)。

#tftp-no-fail

附加客戶(hù)端的 IP 地址作為文件路徑。此選項(xiàng)僅在正確設(shè)置了 tftp-root 的情況下可用,

示例:如果 tftp-root=/tftp,客戶(hù)端為 192.168.1.15 請(qǐng)求 myfile.txt 文件時(shí),

將優(yōu)先請(qǐng)求 /tftp/192.168.1.15/myfile.txt 文件, 其次是 /tftp/myfile.txt 文件。

感覺(jué)沒(méi)什么用。

#tftp-unique-root

啟用安全模式,啟用此選項(xiàng),僅允許 tftp 進(jìn)程訪問(wèn)屬主為自己的文件。

不啟用此選項(xiàng),允許訪問(wèn)所有 tftp 進(jìn)程屬主可讀取的文件。

如果 dnsmasq 是以 root 用戶(hù)運(yùn)行,tftp-secure 選項(xiàng)將允許訪問(wèn)全局可讀的文件。

一般情況下不推薦以 root 用戶(hù)運(yùn)行 dnsmasq。

在指定了 tftp-root 的情況下并不是很重要。

#tftp-secure

將所有文件請(qǐng)求轉(zhuǎn)換為小寫(xiě)。對(duì)于 Windows 客戶(hù)端來(lái)說(shuō)非常有用,建議開(kāi)啟此項(xiàng)。

注意:dnsmasq  TFTP 服務(wù)器總是將文件路徑中的“\”轉(zhuǎn)換為“/”。

#tftp-lowercase

允許最大的連接數(shù),默認(rèn)為 50 。

如果將連接數(shù)設(shè)置的很大,需注意每個(gè)進(jìn)程的最大文件描述符限制,詳見(jiàn)文檔手冊(cè)。

#tftp-max=<connections>

#tftp-max=50

設(shè)置傳輸時(shí)的 MTU 值,建議不設(shè)置或按需設(shè)置。

如果設(shè)定的值大于網(wǎng)絡(luò)接口的 MTU 值,將按照網(wǎng)絡(luò)接口的 MTU 值自動(dòng)分片傳輸(不推薦)。

#tftp-mtu=<mtu size>

停止 tftp 服務(wù)器與客戶(hù)端協(xié)商 "blocksize" 選項(xiàng)。啟用后,防止一些古怪的客戶(hù)端出問(wèn)題。

#tftp-no-blocksize

指定 tftp 的連接端口的范圍,方便防火墻部署。

# tftp 偵聽(tīng)在 69/udp ,連接端口默認(rèn)是由系統(tǒng)自動(dòng)分配的,

 root 用戶(hù)運(yùn)行時(shí)指定的連接端口號(hào)需大于 1025 最大 65535。

#tftp-port-range=<start>,<end>

###############################################################################

#conf-dir=<directory>[,<file-extension>......]

#conf-file=/etc/dnsmasq.more.conf

conf-dir=/etc/dnsmasq.d

#servers-file=<file>

6、利用Dnsmasq搭建自有的無(wú)廣告DNS服務(wù)器

1使用Dnsmasq搭建自有DNS的作用

每天我們的工作和娛樂(lè)休閑都離不開(kāi)電腦,經(jīng)常看到電腦右下角彈出圖片廣告大部分這個(gè)都是被劫持DNS商家推送過(guò)來(lái)的,看起來(lái)很討厭。雖然很多門(mén)戶(hù)網(wǎng)站,比如360、百度、阿里都有推出他們DNS服務(wù),我們將本地的DNS IP地址更換成他們的在一定程度上,可以解決我們?cè)L問(wèn)網(wǎng)速、廣告攔截的問(wèn)題。但是他們會(huì)推送自己的廣告業(yè)務(wù)。所以我們自己可以架設(shè)本地DNS服務(wù)器,這樣用自己的DNS就不會(huì)有廣告的問(wèn)題。

Dnsmasq也不是僅僅這個(gè)用途,我們也可以作為局域網(wǎng)機(jī)器批量IP維護(hù)使用,以及局域網(wǎng)解決特定網(wǎng)址域名禁止訪問(wèn)。

 

(2)dnsmasq的安裝

[root@localhost ~]# yum install -y dnsmasq

這里使用的是CentOS 7.x環(huán)境,如果需要編譯安裝可以直接到官方網(wǎng)站(http://www./dnsmasq/)選擇版本編譯。

 

安裝完畢后,可以通過(guò)dnsmasq -v命令查看版本,有版本號(hào)出來(lái)就代表安裝上了。

 

(3)修改Dnsmasq配置文件dnsmasq.conf

修改配置文件前一定要先備份

[root@localhost ~]# echo 'resolv-file=/etc/dnsmasq.d/resolv.dnsmasq.conf'>> /etc/dnsmasq.conf

表示dnsmasq 會(huì)從這個(gè)指定的文件中尋找上游dns服務(wù)器。

[root@localhost ~]# echo 'addn-hosts=/etc/dnsmasq.d/dnsmasq.hosts' >> /etc/dnsmasq.conf

添加讀取額外的 hosts 文件路徑,可以多次指定

 

[root@localhost ~]# vim /etc/dnsmasq.conf

strict-order      取消這一行的注釋?zhuān)硎緡?yán)格按照resolv.conf中的順序進(jìn)行查找

listen-address=127.0.0.1    添加監(jiān)聽(tīng)地址這個(gè) dnsmasq 本機(jī)自己使用有效。

listen-address=192.168.115.120   用此主機(jī)為局域網(wǎng)提供默認(rèn) DNS,寫(xiě)本機(jī)的局域網(wǎng)IP

listen-address=127.0.0.1,192.168.115.120   多個(gè)ip地址設(shè)置

如果想允許所有的用戶(hù)使用你的DNS解析服務(wù)器,把listen-address去掉即可。

 

(4)修改/etc/resolv.conf文件,并創(chuàng)建resolv.dnsmasq.conf和dnsmasq.hosts文件

[root@localhost ~]# echo 'nameserver 127.0.0.1' > /etc/resolv.conf

[root@localhost ~]# cp /etc/resolv.conf  /etc/dnsmasq.d/resolv.dnsmasq.conf

[root@localhost ~]# echo 'nameserver 8.8.8.8' >>/etc/dnsmasq.d/resolv.dnsmasq.conf

[root@localhost ~]# echo 'nameserver 192.168.115.120' >>/etc/dnsmasq.d/resolv.dnsmasq.conf

[root@localhost ~]# cp /etc/hosts  /etc/dnsmasq.d/dnsmasq.hosts

resolv.dnsmasq.conf中設(shè)置的是真正的Nameserver可以填寫(xiě)各大商家提供的免費(fèi)DNS地址。

 

(5)啟動(dòng)Dnsmasq

[root@localhost ~]# systemctl restart dnsmasq    重啟dnsmasq服務(wù)

[root@localhost ~]# systemctl enable dnsmasq    設(shè)置成開(kāi)機(jī)自啟動(dòng)

[root@localhost ~]# netstat -antp|grep 53        查看端口是否啟動(dòng)成功

6測(cè)試是否配置成功。

[root@localhost ~]# dig www.taobao.com

.........................................................省略若干

;; Query time: 77 mse    第一次查詢(xún)沒(méi)有緩存,時(shí)間77

;; SERVER: 127.0.0.1#53(127.0.0.1)

;; WHEN: 116 13:09:32 CST 2018

;; MSG SIZE  rcvd: 120

 

[root@localhost ~]# dig www.taobao.com

.........................................................省略若干

;; Query time: 0 msec    第二次再次查詢(xún),時(shí)間為0

;; SERVER: 127.0.0.1#53(127.0.0.1)

;; WHEN: 116 13:11:39 CST 2018

;; MSG SIZE  rcvd: 123

7、Dnsmasq的使用及實(shí)現(xiàn)的功能

(1)作為本地DNS使用

將Dnsmasq作為本地DNS服務(wù)器使用,直接修改電腦的本地DNSIP地址即可

blob.png

2應(yīng)對(duì)ISP的DNS劫持。

輸入一個(gè)不存在的域名,正常的情況下瀏覽器是顯示無(wú)法連接,DNS劫持會(huì)跳轉(zhuǎn)到一個(gè)廣告頁(yè)面。先隨便nslookup 一個(gè)不存在的域名,看看ISP商劫持的IP地址。

接著編輯/etc/dnsmasq.conf文件,bogus-nxdomain='劫持IP' 加入進(jìn)去,后面的IP是剛剛查詢(xún)到的DNS劫持IP地址。

重啟dnsmasq,再?lài)L試打開(kāi)不存在的域名,這時(shí)瀏覽器就會(huì)顯示正常的無(wú)法連接頁(yè)面了。

 

3)智能DNS加快解析速度。

打開(kāi)/etc/dnsmasq.conf文件,server=添加指定的DNS,例如國(guó)內(nèi)外不同的網(wǎng)站使用不同的DNS

[root@localhost ~]# vim /etc/dnsmasq.conf

國(guó)內(nèi)指定DNS

server=/cn/114.114.114.114

server=/taobao.com/114.114.114.114

server=/taobaocdn.com/114.114.114.114

國(guó)外指定DNS

server=/google.com/223.5.5.5

 

4)屏蔽網(wǎng)頁(yè)廣告。

將廣告的URL指定127.0.0.1這個(gè)IP,就可以將網(wǎng)頁(yè)上討厭的廣告給去掉了。

[root@localhost ~]# vim /etc/dnsmasq.conf

address=/ad.youku.com/127.0.0.1

address=/ad.iqiyi.com/127.0.0.1

 

5)指定域名解析到特定的IP上

這個(gè)功能可以讓你控制一些網(wǎng)站的訪問(wèn),非法的DNS就經(jīng)常把一些正規(guī)的網(wǎng)站解析到不正確IP上。

[root@localhost ~]# vim /etc/dnsmasq.conf

address=/freehao123.com/123.123.123.123

6管理控制內(nèi)網(wǎng)DNS

首先將局域網(wǎng)中的所有的設(shè)備的本地DNS設(shè)置為已經(jīng)安裝Dnsmasq的服務(wù)器IP地址。然后修改已經(jīng)安裝Dnsmasq的服務(wù)器Hosts文件:/etc/hosts,指定域名到特定的IP中。

       例如:想讓局域網(wǎng)中的所有用戶(hù)訪問(wèn)www.abc.com時(shí)跳轉(zhuǎn)到192.168.115.100,添加'192.168.115.100 www.abc.com'到Hosts文件中既可,整個(gè)過(guò)程也可以說(shuō)是“DNS劫持”。


    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多