标签:
Android手机改hosts需要root权限,实在不想root,自己搭个 DNS Server ,把指定的域解析到特定IP。
MaraDNS Server的搭建:
下载 maradns-2-0-11-win32.zip 并解压
准备两台电脑(一台电脑能搞定么?如何设置IP?),一台作为权威 DNS Server (authoritative DNS server)解析指定的域,一台作为递归 DNS Server(recursive DNS server)解析普通域。
一、权威 DNS Server的配置:
1. 运行 mkSecretTxt.exe,生成secret.txt(随机字符串);
2. 修改mararc文件如下:
#绑定本机IP地址,例如 10.0.7.52
ipv4_bind_addresses = "127.0.0.1, 10.0.7.52"
timestamp_type = 2
random_seed_file = "secret.txt"
hide_disclaimer = "YES"
#配置域名字典
csv2 = {}
#设置 test.cn 域的IP保存在 db.test.cn.txt 文件中,注意字典的key以“.”结尾
csv2["test.cn."] = "db.test.cn.txt"
3.新建并修改 db.test.cn.txt 文件如下:
foo.% 10.100.15.31 ~
则foo.test.cn域解析到 10.100.15.31
4. 运行 run_maradns.bat
此时可以直接将手机的 DNS 设置为 10.0.7.52,但只有test.cn可以正常解析,其他域无法解析。
二、递归 DNS Server 的配置:
1. 切换到第二台机器,解压 maradns-2-0-11-win32.zip 后进入 Deadwood-3-2-07-win32 目录,运行 mkSecretTxt.exe,生成secret.txt(随机字符串);
2. 管理员权限运行 install.bat ,安装 Deadwood.exe 为系统服务;
3. 修改 dwood3rc.txt 配置如下:
#root_servers字典
root_servers = {}
#其他域查询 10.0.0.1 内网已搭建好的DNS,或使用ISP的DNS
root_servers["."]="10.0.0.1"
#test.cn域查询 10.0.7.52
root_servers["test.cn."]="10.0.7.52"
# The IP this program has
#绑定本机 IP 地址
bind_address="127.0.0.1, 10.0.0.111"
# The IPs allowed to connect and use the cache
# 可以访问此服务器的 IP 范围, IP/netmask 格式,这里的16表示掩码的二进制前16位都是1,即 11111111 11111111 00000000 00000000
recursive_acl = "127.0.0.1/16, 10.0.0.1/16"
# on an internal network, uncomment the following line:
filter_rfc1918 = 0
4. 重启 Deadwood 服务
手机连接 Wi-Fi ,设置 DNS 为 10.0.0.111 (递归 DNS Server 的 IP)即可。
如果仍有问题,请检查 Windows 的防火墙设置。
MaraDNS早期版本(1.4及之前)支持递归 DNS Server,2.0版本之后删除了此功能而改用 Deadwood.
原因:
MaraDNS 2.0 is MaraDNS 1.4 with all recursive support removed from the maradns daemon and done with the separate daemon Deadwood. Because of this:
MaraDNS can no longer serve both authoritative and recursive records on the same IP.
While Deadwood uses a compatible rc file format, there are enough differences between a mararc file (MaraDNS‘ configuration file) and a dwood3rc file (Deadwood‘s configuration file) that a conversion has to be done by hand.
所以 2.0 版本中 mararc 文件中不会有 upstream_servers, recursive_acl 的设置,网上搜索到的配置可能是旧版本。
另外,可以使用zip包中的 askmara.exe 测试 DNS Server。
Windows下MaraDNS服务器搭建
标签:
原文地址:http://www.cnblogs.com/scorpio0920/p/4480100.html