CentOS下配置iptables碰到域名解析失败的问题

原创 2016年06月01日 19:46:01

1,问题背景。

在阿里ECS上调用第三方短信接口,始终无法成功。接口不是IP地址,而是一个带域名的 URL接口。


2,问题原因

网络调测,首先便是两头一掐,确认别人根本没有收到我的请求,于是开始分析我发出去的报文。

根据发送请求返回的错误码,说是主机名无法解析。我用curl发送的请求,首先是百度一番,还真有人同样的错误码,但细一瞅,就觉得大不同,别人是什么IPV6影响。

我这个都没启动IPV6了。我 寻思 ,既然短信包发不出去,就curl下其它域名网站,百度主页简单,就拿它测试吧。果然不行,证实所有的域名解析都无法成功。

我自然想到了端口限制,为 了安全,配置了server的iptables策略。先证实下是不是这个原因。直接如下命令停用防火墙:service iptables stop,再运行程序,OK啦。

知道原因后,心中也不慌了,找资料得知域名解析用的53端口,于是iptables命令加上53端口(如下UDP和TCP都加满)。

iptables -A INPUT  -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -p udp --sport 53 -j ACCEPT
iptables -A OUTPUT  -p udp --dport 53 -j ACCEPT
iptables -A INPUT  -p udp --sport 53 -j ACCEPT

iptables -A INPUT  -p tcp --dport 53 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 53 -j ACCEPT
iptables -A OUTPUT  -p tcp --dport 53 -j ACCEPT
iptables -A INPUT  -p tcp --sport 53 -j ACCEPT



满以为事情就OVER了,谁知只要启动iptables就不行。依然报域名无法解析。给阿里提了工单,答复如下:


心想,把所有input的端口都要放开,那安全控制咋整。先不管,按别人说的,执行iptables命令,把input的udp端口都放行,output和forward也不管。

结果是居然还不行,依然是域名无法解析,发送http请求,就卡在那了。阿里技术客服发来杀手锏:


事儿越整越复杂了。我继续网上找iptables资料,想着原因都知道了,应该好解决。
既然iptables把input的udp端口都放开了 ,为什么还不行了,难道域名解析还涉及到其他一些TCP端口,或者说我的UDP放行有问题。
而且端口都放开,iptables的 安全也没有意义了。比较好的解决方法是放行这个请求相关的连接响应报文。
iptables早就考虑了这一想法。我把如下命令加入到filter中,试过一切OK

#iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
#iptables -A INPUT -m state --state INVALID -j DROP



3,知识延续

在解决问题的过程中,巩固了iptables用法,譬如增加端口,命令持久化到配置文件。

下面命令是启动和停用iptables,save是把策略保存到/etc/sysconfig/iptables里面,每次start直接从这个配置文件里面加载策略。

service iptables start

service iptables stop

service iptables save


一般input配置drop,output和forward配置accept,严格的 话也可配drop。

要注意的是:input配置drop,把ssh远程的自己也档在门外了,默认是22端口,如果server都 连不上,那就无语了....

所以最好是直接vi在etc/sysconfig/下的iptables配置文件,把22端口给予放行,然后再慢慢玩。


#iptables [-t nat] -P [INPUT,OUTPUT,FORWARD] [ACCEPT/DROP]

#iptables [-AI 链] [-io 网卡接口] [-p 协议] [-s 源ip/网段] [-d 目标ip/网段] -j [ACCEPT/DROP]


范例一:所有来自lo这个接口的数据包,都予以接受
#iptables -A INPUT -i lo -j ACCEPT


范例二:来自192.168.1.1这个IP的数据包都予以接收
#iptables -A INPUT -i eth0 -s 192.168.1.1 -j ACCEPT
不管什么数据包格式,只要来自192.168.1.1就予以接受


另外还了解到nscd服务,这个是域名解析的缓存,有了它,调用带域名的url接口会快很多(海量请求时)。


版权声明:本文为博主原创文章,未经博主允许不得转载。

针对域名做iptables

前景: 很偶然,由于业务需求,需要对现有的一台核心设备做安全防护,然后第一念头就想到了iptables,接着全网统计ip段,各种INPUT链各种添加规则,很兴奋的就上了线。 第一天运行正常,没有发现异...
  • constant_zyh188
  • constant_zyh188
  • 2016年07月28日 15:28
  • 2831

Dnsmasq+ipset+iptables基于域名的流量管理

iptables只能根据ip地址进行转发,不能识别域名,而dnsmasq-full不仅可以实现域名-IP的映射,还可以把这个映射关系存储再ipset中,所以使用dnsmasq+ipset就可以实现ip...
  • lvshaorong
  • lvshaorong
  • 2016年11月04日 10:06
  • 4287

iptables实现字符串匹配,URL过滤,安全策略

通过string匹配域名来过滤,范例如下: iptables -I OUTPUT -p tcp -m string --string "qq.com" --algo bm -j DROP iptabl...
  • jk110333
  • jk110333
  • 2012年07月03日 18:25
  • 19604

CentOS系统DNS不能解析问题

放到外地公网上去,ip地址已经设好了。dns也设置成功,保存退出。重启service network restart后发现不能解析了。用ip地址可以连,但是不能ping www.baidu.com ...
  • seng3018
  • seng3018
  • 2013年06月16日 16:58
  • 17060

centos域名不能解析

笔记本装好linux服务器后,突然不能上网了,直接输入域名,打不开网站,但通过IP就能正常访问。后来问题顺利解决,主要参考了下面网页https://www.centos.org/forums/view...
  • XIAOZHI0999
  • XIAOZHI0999
  • 2013年11月26日 15:09
  • 5228

Centos不能解析域名

很惭愧用了快一年的云服务器,竟然今天才发现不能解析域名。 Linux version 2.6.32今天测试crul的时候发现竟然不能解析,然后试了一下 ping www.baidu.com 也不能解...
  • PROGRAM_anywhere
  • PROGRAM_anywhere
  • 2017年12月06日 15:30
  • 107

CentOS 域名解析 配置问题

CentOS 域名解析 配置问题  个人小站,正在持续整理中,欢迎访问:http://shitouer.cn  小站博文地址:CentOS 域名解析 配置问题 解决了本人俩个问题: 1...
  • LittleBear_1008
  • LittleBear_1008
  • 2016年04月27日 19:19
  • 3376

centos 搭建dns服务器 解析任意域名

linux搭建简单DNS服务器,实现局域网域名解析任意ip 功能: 1.最近公司新上了一台web服务器,比如是111.111.111.111 需要同事测试服务器是否正常,在一个局域网网段...
  • pzlsun
  • pzlsun
  • 2016年09月10日 23:14
  • 5249

CentOS配置固定IP与DNS域名

a) 修改对应网卡的DNS的配置文件 sudo vi /etc/resolv.conf  修改以下内容 nameserver 8.8.8.8 #google域名服务器 nameserv...
  • AimAtFuture
  • AimAtFuture
  • 2014年05月28日 12:45
  • 4057

CentOS下搭建DNS服务器

DNS是域名系统(Domain Name System)的缩写,是因特网的一项核心服务,它能提供域名与IP地址之间对应关系的转换服务。 这样我们就可以更方便地去访问互联网了,不用去记住那一串IP数字。...
  • charlsecharlse
  • charlsecharlse
  • 2014年01月07日 11:50
  • 32337
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:CentOS下配置iptables碰到域名解析失败的问题
举报原因:
原因补充:

(最多只允许输入30个字)