請問各位大大我想做一台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
你沒說明架設 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平台環境:
您好,OS平台是CentOS dnsmasq版本為2.76 你說的檔案路徑是否會不一樣?在請教一下DNSMASQ_OPTS="$DNSMASQ_OPTS --local-service --add-subnet=192.168.1.0/24"
只給一台AD或者測試用PC的話我只要把IP的部分並改成/32就行了吧?
我測的是CentOS-6.9 i686, dnsmasq-2.48, 啟動程序應該跟你的不一樣.
是的, 只服務一台的話改IP/32
我的是CentOS-7.8找不太到你說的那個東西,但是你說的給特定某些機器用的指令在dnsmasq.conf裡面的listen-address也可以指定IP,可是我輸入了一樣無法去查詢
去抓了 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
試試吧!