解决生产环境iptables添加动态域名解析变化快的问题

前言:
总说我不会写技术文件,也确实不会写,也不爱写,平时都是自己记录下功能和问题,时隔几年了,现在想在继续写文档,练习一下功底
声明:
次文档技术部分为部门大牛的杰作,我只做了后半部分
背景:

  • 在保证生产环境安全的情况下,单位开启了Iptables,但因业务需要部分api需要通过域名调用各种接口
  • 由于现在大部门厂商都把生产环境的服务器放在各种云厂商那里,所以会有CDN动态加速,导致域名变化的速度极快
  • 最初是自己写shell脚本来获取这些添加在iptables内部域名的解析地址,通过定时任务执行,但定时任务最快也要一分钟执行一次,不能快速捕获这些地址,造成A记录与iptables表项不一致的现象

环境:
系统:LINUX
版本:Centos7

逻辑原理:

  1. 服务器发起DNS解析查询,resolv.conf接收请求(127.0.0.1环回地址,不懂环回地址的别说你是这行业的)
  2. dnsmasq进程收到请求,根据配置将请求转发至公网DNS设备
  3. A记录解析完毕后dnsmasq将结果写入至ipset表中
  4. Iptables中的OUTPUT链调用ipset表
    操作部署:
    1.dnsmasq
#安装dnsmasq
yum -y install dnsmasq
#kill掉系统自带的dnsmasq进程,如果不kill掉安装的dnsmasq进程将启动失败
killall -9 dnsmasq
#启动dnsmasq进程并设置开机启动
systemctl --now enable dnsmasq
#在dnsmasq.conf配置文件加入如下两行:
server=/.com/.cn/.native/自己公司的dns地址写在这里		#说明:有多个域的时候需要把所有域全部配置进去
#指定dnsmasq的配置文件位置,很关键的一步,不指定后面没法解析
conf-dir=/etc/dnsmasq.d

2.ipset

#新建ipset读取目录,ipset命令属linux系统自带
mkdir /etc/dnsmasq.d 
#新建ipset配置文件
touch /etc/dnsmasq.d/domain.conf

3.写入Ipset配置文件

#在/etc/dnsmasq.d/domain.conf文件中写入如下配置,以百度某个域名和企查查为例,写成如下格式,多个域名一次罗列
ipset=/.baidubce.com/baidubcelist
ipset=/.qichacha.com/qichachalist
。。。。。。

4.执行ipset创建如下策略

ipset create qichachalist hash:ip
ipset create baidubcelist hash:ip
。。。。。。

5.加载配置文件

#执行命令
dnsmasq -C /etc/dnsmasq.conf

6.在Iptables中加入如下策略,多个端口需要一次添加进去

-A OUTPUT -p tcp -m set --match-set qichachalist dst -m tcp --dport 443 -j 	ACCEPT
-A OUTPUT -p tcp -m set --match-set qichachalist dst -m tcp --dport 80 -j ACCEPT
-A OUTPUT -p tcp -m set --match-set baidubcelist dst -m tcp --dport 443 -j ACCEPT
-A OUTPUT -p tcp -m set --match-set baidubcelist dst -m tcp --dport 80 -j 	ACCEPT
。。。。。。

8.重启iptables 执行命令使用策略生效

systemctl restart iptables.service

结论:
经过在测试反复测试一切正常,故障解除了,学会了一个技术点
声明:
本技术为部门大牛的杰作,我只做个总结记录,如果有相同问题出现的伙伴有好的解决方案请一定分享一下,感谢!!

你可能感兴趣的:(笔记,linux,服务器,运维)