windows系统 当前网络外网53端口被屏蔽 只能使用局域网内dns服务器
我在远程服务器(centos)上开了dns服务 使用未被屏蔽的端口(比如 8080)
服务器上用dig测试 可以正常返回结果
~ » dig @<远程服务器ip> index.docker.io -p8080
; <<>> DiG 9.9.4-RedHat-9.9.4-14.el7_0.1 <<>> <远程服务器ip>index.docker.io -p25
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20376
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 13, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;index.docker.io. IN A
;; ANSWER SECTION:
index.docker.io. 29 IN A 162.242.195.84
;; AUTHORITY SECTION:
. 19992 IN NS e.root-servers.net.
. 19992 IN NS c.root-servers.net.
. 19992 IN NS j.root-servers.net.
. 19992 IN NS g.root-servers.net.
. 19992 IN NS b.root-servers.net.
. 19992 IN NS l.root-servers.net.
. 19992 IN NS f.root-servers.net.
. 19992 IN NS m.root-servers.net.
. 19992 IN NS k.root-servers.net.
. 19992 IN NS h.root-servers.net.
. 19992 IN NS a.root-servers.net.
. 19992 IN NS i.root-servers.net.
. 19992 IN NS d.root-servers.net.
;; Query time: 360 msec
;; SERVER: <远程服务器ip>#8080(@<远程服务器ip>)
;; WHEN: Fri Feb 27 02:46:33 UTC 2015
;; MSG SIZE rcvd: 271
本地使用 netsh
命令将 本地53端口请求转发至 服务器的8080端口netsh interface portproxy add v4tov4 listenport=53 listenaddress=127.0.0.1 connectport=8080 connectaddress=<远程服务器ip>
本地dns设置为 127.0.0.1
使用telnet 127.0.0.1 53
命令测试可以连通
但是域名解析失败
$ dig @127.0.0.1 index.docker.io -p53
; <<>> DiG 9.10.1-P2 <<>> @127.0.0.1 index.docker.io -p53
; (1 server found)
;; global options: +cmd
;; connection timed out; no servers could be reached
C:\>nslookup index.docker.io 127.0.0.1
Server: UnKnown
Address: 127.0.0.1
*** UnKnown can't find index.docker.io: No response from server
请问这种问题如何解决 或者 有没有其他方法在外网53端口禁用的情况下 使用自定义的dns服务
原因和解决方法
通过
netsh
命令无法转发udp的请求
没有找到相关文档netsh
的命令行帮助有提到本地
nslookup
加上-vc
参数后可以获得正确的返回我这里的网络可能禁用了udp? 总之直接通过指定端口
dig
远程dns无法获取数据 而加上+tcp
参数后正常
最后本地用 Tcp-DNS-proxy 通过tcp请求dns
telnet通是tcp通,dns默认是跑在udp上的
不太熟悉netsh,查查是不是只开tcp没开udp吧