Git Product home page Git Product logo

openwrt-dns-forwarder's Introduction

DNS-Forwarder for OpenWrt

Download

简介

本项目是 DNS-Forwarder 在 OpenWrt 上的移植

编译

  • 从 OpenWrt 的 SDK 编译

    # 以 ar71xx 平台为例
    tar xjf OpenWrt-SDK-ar71xx-for-linux-x86_64-gcc-4.8-linaro_uClibc-0.9.33.2.tar.bz2
    cd OpenWrt-SDK-ar71xx-*
    # 获取 Makefile
    git clone https://github.com/aa65535/openwrt-dns-forwarder.git package/dns-forwarder
    # 选择要编译的包 Network -> dns-forwarder
    make menuconfig
    # 开始编译
    make package/dns-forwarder/compile V=99

配置

  • 默认 DNS 服务器端口为 5300, 可使用 LuCI 进行配置

  • 建议作为 ChinaDNS 的上游服务器使用, 配置方法参考 Wiki

openwrt-dns-forwarder's People

Contributors

aa65535 avatar pexcn avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

openwrt-dns-forwarder's Issues

如何安装呢

是要自己下载编译,打包吗?

有没有类似chinadns一样的ipk文件啊

现在使用shadowsocks+chinadns方案,google、twitter、facebook这种网站打不开,但是gmail访问基本没有问题,在whatismyip.com查询显示的ip地址也是走了shadowsocks代理的

怀疑是dns污染导致的,想尝试一下dns-forwarder方案,但没有看到安装包,是要自己编译吗?

谢谢

DNS-Forwarder貌似不能自动启动?

安装环境:WNDR3800
系统版本:LEDE(17.01.0, r3205-59508e3)
软件版本:
dns-forwarder (1.2.0-1)
luci-app-dns-forwarder (1.6.1-1)

现象描述:
在dns-forwarder的luci界面,勾选了启动,并设置好相关参数....保存并应用以后,再进这个界面,一切正常。但是如果重启路由器,就会发现这个服务起不来。显示“DNS 转发 - 未运行”。

检查/etc/config/dns-forwarder文件,该文件配置如下:
config dns-forwarder
option enable '1'
option listen_port '5311'
option listen_addr '127.0.0.1'
option dns_servers '8.8.8.8'

貌似设置是正常的?

Lede下无法启用

你好,在最新的 Lede 系统下,安装 dns-forwarder 后,发现始终无法启动服务(china-dns)也是,请问这两个 apk 可否匹配下 lede

[需求]本地监听TCP协议

本地只有UDP协议

root@openwrt:/etc/dnsmasq.d# netstat -nalp |grep dns-forwarder
udp 0 0 192.168.1.21:5300 0.0.0.0:* 1417/dns-forwarder

同时监听TCP协议

dns-forwarder 本身作用是把 UDP DNS 查询转到远程 TCP DNS 查询,
作用就是个 DNS 代理,并且没有缓存,
那 TCP DNS 查询转到远程 TCP DNS 查询,也只是个代理作用

使用环境

为解决 DNS 污染,我是用 Dnsmasq + dns-forwarder,
通过 dnsmasq 配置文件配置 gfwlist 域名由 dns-forwarder 转发
server=/google.com/192.168.1.1#5300
这样配置在内网使用完全正常,非常顺滑

需求产生的原因

Shadowsocks Android 客户端有个 Remote DNS 配置,
长期以来都不能使用我上面配置的 DNS 服务,困扰了好久
抓包发现 dnsmasq 一直返回 REFUSED
测试发现在 dnsmasq 本机上 tcp 查询同样 REFUSED

# dig google.com @127.0.0.1 +tcp
; <<>> DiG 9.14.12 <<>> google.com @127.0.0.1 +tcp
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 22792
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;google.com.			IN	A

;; Query time: 31 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Fri Aug 28 14:31:49 CST 2020
;; MSG SIZE  rcvd: 39

因该是这样,dnsmasq 的 server=/google.com/192.168.1.1#5300 配置,
会让 dnsmasq 收到 TCP 查询时,同样以 TCP 请求转发到上游,
因为上游 dns-forwarder 不支持 TCP,然后就没有然后了,解析失败

就是这样

自定义 Remote DNS 也是想对国内 CDN 更友好1点;
查了 dnsmasq 的手册,没有 TCP UDP 转换的选项;
也就想到了这里,啰里啰唆一堆,也不知道说清楚没,浪费各位时间了。

关于如何使用问题

是搭配chinadns使用还是单独使用,单独使用会导致国内解析用8.8.8.8吗?

请问dns-forwarder是否可以把原来UDP的数据通过TCP通道落地后,再转回UDP到达实际目的地址?

场景需求是这样的,因为两端用的是WireGuard,而WireGuard暂只支持通过UDP建立通信。
但是我这边实测过,这边的运营商对UDP的QOS非常厉害,并且对UDP所有端口都无差别限速。
在谷歌上找了很久,都找不到相对比较小巧的能实现这个功能的程序。
能实现的有GOST,不过这个是GO编译出来的,二进制文件很大,路由器上小小的FLASH空间塞不下。
udp2raw也能实现,不过程序也是很大很占空间。
最后发现dns-forwarder能把原始UDP请求发出的转为TCP落地后再通过TCP到达目的地。
因此特意跑来发个issue,希望大佬能否支持一下,让dns-forwarder发出的UDP通过TCP通道落地后,再转会UDP到达目的地地址

感谢!

dns-forwarder没有返回数据

OpenWrt 18.06.4
安装了dns-forwarder,解析不了域名。

> dig www.baidu.com @127.0.0.1 -p 5353

; <<>> DiG 9.11.2-P1 <<>> www.baidu.com @127.0.0.1 -p 5353
;; global options: +cmd
;; connection timed out; no servers could be reached

直接通过8.8.8.8 可以解析,这是怎么回事

> dig www.google.com @8.8.8.8

; <<>> DiG 9.11.2-P1 <<>> www.google.com @8.8.8.8
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 34165
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;www.google.com.			IN	A

;; ANSWER SECTION:
www.google.com.		177	IN	A	31.13.83.8

;; Query time: 37 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Sat Jul 20 12:43:22 UTC 2019
;; MSG SIZE  rcvd: 48

还有怎么能查看调试信息呢?

dns-forwarder 找不到?

LUCI里面显示dns-forwarder未运行,请问是什么原因?
Proxmox 里面安装虚拟机软路由,固件版本KOOLSHARE OPENWRT。以前在路由器上同样的配置运行正常。
root@Openwrt_Koolshare:~# /usr/bin/dns-forwarder -ash: /usr/bin/dns-forwarder: not found root@Openwrt_Koolshare:~# ls -l /usr/bin/dns-forwarder -rwxr-xr-x 1 root root 21435 Jul 21 2017 /usr/bin/dns-forwarder*

dns-forwarder是走tcp的吗?

看wiki介绍说是走tcp,但是我查看端口发现是只占用了udp端口

[root@PandoraBox_M1:/root]#netstat -anp |grep dns-forwarder
udp 0 0 0.0.0.0:5300 0.0.0.0:* 5213/dns-forwarder

ASUS RT-AC5300, 尝试了所有的 brcm 架构的预编译包, 没有一个能用的.

# opkg install ./dns-forwarder_1.2.1-1_bcm53xx.ipk 
Unknown package 'dns-forwarder'.
Collected errors:
 * pkg_hash_fetch_best_installation_candidate: Packages for dns-forwarder found, but incompatible with the architectures configured
 * opkg_install_cmd: Cannot install package dns-forwarder.

其他的还有: dns-forwarder_1.2.1-1_brcm2708.ipk dns-forwarder_1.2.1-1_brcm47xx.ipk dns-forwarder_1.2.1-1_brcm63xx.ipk, 都不可以.

谷歌8,.8.4.4ping不通,设置为dns-forwarder的上游dns能正常使用吗

这两天很多地方谷歌dns都ping不通。
8.8.8.8以前就是大量丢包,8.8.4.4以前能ping通所以之前的dns-forwarder软件设置上游是8.8.4.4

这两天8.8.4.4完全ping不通了,但是发现还是能访问国外网站,这是什么原因?
ping不通的话就算开了ss,仍然会有解析请求成功发到8.8.4.4并获得结果吗?

有些域名可以解析,有些域名无法解析,不知道什么原因

比如u2.dmhy.org这个域名,无法解析

root@OpenWrt:~# dig u2.dmhy.org @127.0.0.1 -p 5300

; <<>> DiG 9.17.10 <<>> u2.dmhy.org @127.0.0.1 -p 5300
;; global options: +cmd
;; connection timed out; no servers could be reached

但是github.com解析正常

root@OpenWrt:~# dig github.com @127.0.0.1 -p 5300

; <<>> DiG 9.17.10 <<>> github.com @127.0.0.1 -p 5300
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53663
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;github.com. IN A

;; ANSWER SECTION:
github.com. 16 IN A 192.30.255.112

;; Query time: 391 msec
;; SERVER: 127.0.0.1#5300(127.0.0.1) (UDP)
;; WHEN: Fri Feb 26 03:24:21 CST 2021
;; MSG SIZE rcvd: 55

LEDE Reboot 17.01.4无法启动

config dns-forwarder
option dns_servers '8.8.8.8'
option listen_port '5353'
option listen_addr '0.0.0.0'
option enable '1'

#这是dns-forwarder
root@lede:~# nslookup www.youtube.com 127.0.0.1#5353
;; connection timed out; no servers could be reached

#这是ss-tun
root@lede:~# nslookup www.youtube.com 127.0.0.1#5300
Server: 127.0.0.1
Address: 127.0.0.1#5300

Name: www.youtube.com
www.youtube.com canonical name = youtube-ui.l.google.com
Name: youtube-ui.l.google.com
Address 1: 108.177.97.136
Address 2: 74.125.204.136
Address 3: 74.125.204.190
Address 4: 74.125.23.190
Address 5: 74.125.23.91
Address 6: 74.125.23.93
Address 7: 74.125.203.190
Address 8: 74.125.203.91
Address 9: 64.233.189.91
Address 10: 64.233.189.190
Address 11: 108.177.97.91
Address 12: 108.177.97.93
Address 13: 108.177.97.190
www.youtube.com canonical name = youtube-ui.l.google.com
Address 14: 2404:6800:4008:c07::5d

#手动执行无响应
root@lede:~# /usr/bin/dns-forwarder -b 0.0.0.0 -p 5353 -s 8.8.8.8
没有返回任何信息

客户端telnet 192.168.1.1 5300可以通 5353不能通

自己编译也试过了都一样,是否有什么需要安装的lib?

lede dns-forwarder 无法自启动

LEDE版本:LEDE Reboot 17.01.0 r3205-59508e3 / LuCI lede-17.01 branch (git-17.100.70571-29fabe2)
mipsel_24kc的ipk

config文件:
config dns-forwarder
option listen_port '5332'
option enable '1'
option listen_addr '127.0.0.1'
option dns_servers '8.8.8.8'

luci中设置启用dns-forwarder后仍显示未运行,重启后也无法自动启动,将/etc/init.d/dns-forwarder 中START改为99也无效果,但用putty 手动 /etc/init.d/dns-forwarder restart 可以启动dns-forwarder

通过尝试,如果监听地址改为0.0.0.0就无上述问题,同时在arm平台的路由试了也无上述问题,是否是mipsel_24kc版的bug?

strange high load and fail to forward

I used this app to forward dns some days and it always works well.

But today I found it failed to work and all dns queries sent to it by dig fail.

By some experiments, I find these threads.

  1. after one dns query sent, the dns-forward process will have a high load as 25% and not recover unless restart;
  2. the shadowsocks server side do not receive any connection from the router, in other words, it do not forward dns query at all.

无线链接另一个无线网在几分钟后断网(LEDE17.01.2)。

我使用小米的MINI路由器刷的17.01.2, 是用无线嫁接的方式联网的,我刷的英文版,连接的方式叫做 Join Network: Wireless Scan.
dns-forwarder是开启的,然后联网了大概十分钟左右就会断网。ping上一级的网关比如192.168.0.1是ping不通的.
我需要在interfaces页面重连,但是只有十分钟不到的效果,又会断网。
杀掉dns-forwarder进程之后就没有这个问题。

这个问题又什么debug的方法吗?

lede下, dnsforwarder的服务不能启动

我是lede mt7620 17.01, 安装dns-forwarder之后, 重启路由始终无法启动这个服务(已经/etc/init.d/dns-forwarder enable 了), 但手工用/etc/init.d/dns-forwarder restart 可以成功启动.
日志中也找不到蛛丝马迹.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.