28

iptables 打开dns访问端口

今天在测试本机DNS的时候发现无法解释域名,经查原因出在iptables上边。
我立即加了 iptables -t filter -A INPUT -p udp –dport 53 -j ACCEPT 的链路,发现还是
不行。一般认为DNS就是通过访问DNS服务器的53端口进行域名解释的。本机端口应该是任意的,
可是就是不通。
没有办法再添加iptables -t filter -j LOG -p udp –log-prefix "DNS monitor: " 添加一
个日志功能。
添加了以上记录后,还不能记录那个功能。还需要再在
/etc/syslog.conf
添加一个记录,
kern.warning /var/log/iptables.log
kern是设备名,warning 是记录级别,/var/log/iptables.log 记录日志文件位置。
其中的具体设置如果大家有兴趣可以另外查找一下其它的文档。
最后重启一下syslog服务。
service syslog restart
现在就可以了。
使用nslookup www.sina.com.cn
然后我们看一下/var/log/iptables.log文件
:10:db:69:43:50:08:00 SRC=219.141.140.10 DST=192.2.8.185 LEN=169 TOS=0×00 PREC=0×00
TTL=241 ID=63822 DF PROTO=UDP SPT=53 DPT=45623 LEN=149
里面的SPT=53是53,也就是我们需要开放53端口。
iptables -t filter -A INPUT -p udp -m udp -j ACCEPT
nslookup www.sina.com.cn
Server:         219.141.140.10
Address:        219.141.140.10#53
现在再执行nslookup www.sina.com.cn
Non-authoritative answer:
www.sina.com.cn canonical name = jupiter.sina.com.cn.
jupiter.sina.com.cn     canonical name = hydra.sina.com.cn.
Name:   hydra.sina.com.cn
Address: 218.30.108.189
Name:   hydra.sina.com.cn
Address: 218.30.108.190
Name:   hydra.sina.com.cn
Address: 218.30.108.191

可以了 ,呵呵!

 

 

28

关于dns端口的相关知识

大家都知道dns的端口是53,当然,潜意识里面是udp的53,但其实这是一个错误,今天我有机会把这个我一直以来也这样认识的问题搞清楚了。

      实际上,dns使用的是tcp/udp的53,没错,他两个协议都沾边。

      但是,于一个实际的现象就是,如果你用抓包工具,会发现,基本你发出的dns请求都是用udp的。之所以这样是因为udp的数据包长度限制,udp要求程序的数据包小于512字节,所以,一旦某个请求大于512字节,因为udp没有重传机制,这时候,这个请求就要over了。所以,dns报文里面有一个tc位,他是1bit,代表是否可截断数据包的意思,当然,阶段的标准是以512字节为标准了。如果小于512字节,tc位为0,反之为1。一旦tc位为1,那么,就要用tcp了。

      希望大家都能了解这个原理。具体原理可以看经典的tcp/ip协议卷1中的dns。

 

220blog标签: