iT邦幫忙

0

請教Dnsmasq DNS 中繼設定

請問各位大大我想做一台DNS Relay Block的伺服器,主要透過這台DNS Relay Server 把有問題的Domain Name都指向同一個IP,然後防火牆再對此單一IP作封鎖

我的架構為PC的DNS指向AD伺服器的DNS,AD伺服器的DNS有再設定轉寄站指向Dnsmasq這台設備,然後Dnsmasq的外部DNS設定8.8.8.8

我先把一台PC的DNS先設成Dnsmasq暫時跳過AD去做測試,但是我不管查哪個網址都會timeout,請教是哪邊沒設到?

resolv.conf 設定 nameserver 127.0.0.1
resolv.dnsmasq.conf 設定 nameserver 8.8.8.8
hosts 設定 1.1.1.1 testblock.com.tw

1.1.1.1是我要在防火牆上封鎖的IP

看更多先前的討論...收起先前的討論...
James iT邦大師 6 級 ‧ 2020-07-09 12:30:03 檢舉
/etc/dnsmasq.conf本身的設定是什麼
jt920201 iT邦新手 5 級 ‧ 2020-07-09 13:40:45 檢舉
我只改 resolv-file=/etc/resolv.dnsmasq.conf,其它的都是預設沒動前面都還是帶#
jt920201 iT邦新手 5 級 ‧ 2020-07-10 10:18:46 檢舉
在DNS設備本身上可以查的到清單內的testblock.com.tw的IP,也可以對外查不再清單內的DNS IP

目前感覺卡在PC 到 DNS設備這一段,但不知道卡在什麼原因
James iT邦大師 6 級 ‧ 2020-07-10 17:42:51 檢舉
listen-address 呢?
jt920201 iT邦新手 5 級 ‧ 2020-07-12 06:30:47 檢舉
listen-address 設成使用者PC的IP跟127.0.0.1
James iT邦大師 6 級 ‧ 2020-07-13 08:00:01 檢舉
傷腦筋吔!listen是服務器自己的IP啦!基本的網路概念要先學一點。
jt920201 iT邦新手 5 級 ‧ 2020-07-13 11:38:46 檢舉
所以設定127.0.0.1就好了嗎? 可是我上網看是說要填要使用此服務的IP,而且這個不設定保留#的話就代表任何IP都可以用,這邊我#號有保留跟沒保留都有試過但情況都一樣
James iT邦大師 6 級 ‧ 2020-07-13 17:27:38 檢舉
127.0.0.1 只有本機連得到,你要提供服務給別人,就要設別人可以連得到的IP
James iT邦大師 6 級 ‧ 2020-07-13 17:31:21 檢舉
服務器提供服務IP通常不會限制誰可以連,限制誰可以連要從其它地方管制。
加#號就是預設值,現在很多服務預設都是只有本機可以使用。

1 個回答

1
ayu
iT邦好手 3 級 ‧ 2020-07-11 07:08:47
最佳解答

你沒說明架設 dnsmasq 所使用的OS平台種類/版本, 以及 dnsmasq 版本.
一開始我在Debian-10.3, 先用源碼安裝2.81, 測試使用正常; 再試2.80套件時, 就出現了你說的狀況, client查詢會time-out.
據查發現, 其啟動程序裡有 --local-service 參數, 這會使得 dnsmasq 只允許本機查詢. 為了資安考量, 避免初心者貿然在公網上實作, 變成 open resolver , 極容易遭到反射攻擊(DNS-reflection attacks). 近年所有套件安裝的BIND, 預設也只允許本機查詢.

你可以在 /etc/init.d/dnsmasq 找到這行
DNSMASQ_OPTS="$DNSMASQ_OPTS --local-service"
修改成這樣, 把你需要服務的範圍加上去
DNSMASQ_OPTS="$DNSMASQ_OPTS --local-service --add-subnet=192.168.1.0/24"
當然, 如果只需要給AD伺服器使用, 照改就是了.

其它測試過的OS平台環境:

  • source install dnsmasq-2.81 on Debian-10.3
  • FreeBSD-12.0 pkg install dnsmasq-2.81
  • CentOS-6.9 yum install dnsmasq-2.48
    client都可正常查詢不會time-out! 但相對地, 要很小心避免資安問題!
看更多先前的回應...收起先前的回應...
jt920201 iT邦新手 5 級 ‧ 2020-07-12 06:42:10 檢舉

您好,OS平台是CentOS dnsmasq版本為2.76 你說的檔案路徑是否會不一樣?在請教一下DNSMASQ_OPTS="$DNSMASQ_OPTS --local-service --add-subnet=192.168.1.0/24"
只給一台AD或者測試用PC的話我只要把IP的部分並改成/32就行了吧?

ayu iT邦好手 3 級 ‧ 2020-07-12 08:52:01 檢舉

我測的是CentOS-6.9 i686, dnsmasq-2.48, 啟動程序應該跟你的不一樣.
是的, 只服務一台的話改IP/32

jt920201 iT邦新手 5 級 ‧ 2020-07-12 09:28:38 檢舉

我的是CentOS-7.8找不太到你說的那個東西,但是你說的給特定某些機器用的指令在dnsmasq.conf裡面的listen-address也可以指定IP,可是我輸入了一樣無法去查詢

ayu iT邦好手 3 級 ‧ 2020-07-12 09:29:33 檢舉

去抓了 dnsmasq-2.76-10.el7_7.1.x86_64.rpm 來看, 嗯..傷腦筋.
要不要改用源碼安裝比較省事?
wget http://www.thekelleys.org.uk/dnsmasq/dnsmasq-2.81.tar.xz
tar xvf dnsmasq-2.81.tar.xz
cd dnsmasq-2.81
修改 Makefile (PREFIX隨你高興要裝在哪)
###PREFIX = /usr/local
PREFIX = /opt/masq281
然後 make install
執行 /opt/masq281/sbin/dnsmasq --local-service --add-subnet=192.168.1.248/30
試試吧!

我要發表回答

立即登入回答