Pcap_DNSProxy for OpenWrt/LEDE
本项目是 Pcap_DNSProxy 运行在 OpenWrt/LEDE 上的软件包
当前版本:
预编译 IPK 下载:旧SourceForge|新 prebuilt-ipks 分支
主要参见原项目说明
可执行文件 Pcap_DNSProxy
。
可选 LibSodium 和 LibPcap 依赖,其中 LibPcap 强烈建议勾选,LibSodium 根据原项目说明自行决定是否编译。
监听端口预置为 1053 ,可自行修改,注意不可使用 53 作为端口,会与 dnsmasq 相冲突导致 LAN 口不能分配 IP 等。
可以使用 /etc/init.d/pcap-dnsproxy flush
来清除本程序和 OpenWrt/LEDE 系统的 DNS 缓存,使用 /etc/init.d/pcap-dnsproxy libver
查询链接的库版本,使用 /etc/init.d/pcap-dnsproxy status
查询运行状态,其余的 /etc/init.d/pcap-dnsproxy {start|stop|enable|disable}
与其他 OpenWrt/LEDE 软件包的用法无异。
从 OpenWrt/LEDE 的 SDK 编译
# 以 ar71xx 平台为例,此处文件名为示例,仅供参考,请以实际文件名为准
# 有对应平台的 SDK 即可编译软件包,不仅限于 ar71xx
tar xjf OpenWrt-SDK-ar71xx-for-linux-x86_64-gcc-4.8-linaro_uClibc-0.9.33.2.tar.bz2
# 进入 SDK 根目录
cd OpenWrt-SDK-ar71xx-*
# 先运行一遍以生成 .config 文件
make menuconfig
# 首先验证 SDK 是否需要 ccache
cat .config | grep CONFIG_CCACHE
# 如果返回结果为 "y",则需要使用系统软件包管理器,如 yum、apt-get,安装 ccache
# 接下来更新 feeds,因为编译需要 libsodium 和 libpcap
./scripts/feeds update -a
./scripts/feeds install -a
# 获取 Makefile
git clone --depth 1 --branch master --single-branch https://github.com/wongsyrone/openwrt-Pcap_DNSProxy.git package/pcap-dnsproxy
# 选择要编译的包 Network -> pcap-dnsproxy 并进行个人定制,或者保持默认
# 这时根据提供的选项确认依赖已经被选中
make menuconfig
# 开始编译
make package/pcap-dnsproxy/compile V=99
# 编译结束之后从 bin 文件夹复制依赖库以及本程序的 ipk 文件到设备中,使用 opkg 进行安装
从 OpenWrt/LEDE 的代码树编译
也可将本项目文件夹命名为 pcap-dnsproxy
直接放置于 OpenWrt/LEDE 代码树的 package
文件夹下,之后按照编译的正常步骤进行,最后可在 bin 目录中找到编译好的软件包。下面简述编译步骤
# 获取OpenWrt/LEDE代码树,根据需求选择稳定版(如Chaos Calmer 15.05)或开发版Trunk
# 如果是 Trunk 使用
git clone git://git.openwrt.org/openwrt.git
# 如果是 Chaos Calmer 15.05 稳定版使用
git clone git://git.openwrt.org/15.05/openwrt.git
# 进入代码树根目录
cd openwrt
# 接下来更新 feeds,因为编译需要 libsodium 和 libpcap
./scripts/feeds update -a
./scripts/feeds install -a
# 获取 Makefile
git clone --depth 1 --branch master --single-branch https://github.com/wongsyrone/openwrt-Pcap_DNSProxy.git package/pcap-dnsproxy
# 首先选择目标平台以及设备型号
# 接下来选择要编译的包 Network -> pcap-dnsproxy 并进行个人定制,或者保持默认
make menuconfig
# 如果只想编译 pcap-dnsproxy 使用
make package/pcap-dnsproxy/{prepare,compile} V=99
# 如果想编译集成好 pcap-dnsproxy 的固件使用
make V=99
如果下载的 SDK 不能正常编译 pcap-dnsproxy,需要手动编译 SDK,首先在配置界面设置好目标平台和设备型号,接下来选择 Build the OpenWrt/LEDE SDK,其他的设置都保持默认即可,最后运行 make V=99
--without-pthreads
到CONFIGURE_ARGS
,参见这里的讨论,musl-libc则不需要。/etc/config/pcap-dnsproxy
目前仅用于控制使能安装完软件包之后修改上述配置文件的 enabled 值为 1 之后才可以运行主程序,该项用来防止未修改配置文件的情况下程序开机自启。
/etc/pcap-dnsproxy
配置方法参见原项目文档
在 OpenWrt/LEDE 下的应用主要是作为 dnsmasq 的上游 DNS 解析器,主要承担被污染域名或者绝大部分国外域名的解析。根据自己的需求和实际修改 dnsmasq 的配置文件 /etc/dnsmasq.conf
如下:
no-resolv /* 此处防止获取到ISP DNS从而干扰解析 */
no-poll /* 此处取消对 resolv.conf 的轮询,用于配合 no-resolv */
domain-needed /* 此处限制非域名的DNS转发请求 */
no-negcache /* 此处取消对不存在域名的缓存 */
server=192.168.1.1#1053 /* 此处为网关IP地址,尽量不要使用 127.0.0.1;后面是监听端口 */
all-servers /* 如果配置了多个上游DNS并且确保均不受污染,可开启此项加速解析 */
cache-size=10000 /* 此处加大 dnsmasq 的内置缓存条数,默认值为 150,一般最大值为 10000 */
对于国内域名解析,不推荐使用本程序,建议搭配 dnsmasq-china-list 项目使用可获得较好效果。
使用上面的 Gitter 图标进入聊天室留言,我会定期查看
使用 Issue 功能进行反馈,注意贴日志要贴全,如果日志行数太多,使用外链