iptables+ipset根据域名配置流量控制

  • 背景
  • 解决流程
  • 一、iptables配置
  • 二、ipset命令
  • 三、nslookup
  • 四、iptables配置ipset
  • 定时任务配置
  • 总结

背景

公司内网服务器,上面跑了几个程序(爬虫,每天定时从几个域名上拉取数据),为了安全起见,配置了iptables,只放通了内网和本地回环地址,配置完成后几个程序就处于半死状态.


解决流程

将需要访问的域名按行放到文件中,然后起一个定时脚本去读取该文件,将该文件中的域名读取出来,使用nslookup命令找到其解析的ip地址,然后提取ip地址丢入到ipset中就ok了,本来网上查的用dnsmasq,但是没有调试通,很尴尬


一、iptables配置

iptables -A INPUT -s 10.0.0.0/24 -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -j DROP
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -d 10.0.0.0/24 -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A OUTPUT -j DROP

只放通了内网和本地回环地址以及DNS的53端口,其余的全部drop掉了

二、ipset命令

安装: yum install ipset
安装服务:yum install ipset-service
启动:systemctl start ipset
自启:systemctl enable ipset
创建:ipset create white_domain hash:ip (white_domain这个名字和后面的几个地方要对应起来)
保存:ipset save white_domain  -f /root/white_domain.ipset

三、nslookup

安装: yum install bind-utils
基本用法: nslookup baidu.com
脚本: white_domain_ipset_iptables.sh 内容:
#!/bin/bash
cat /etc/white_domain.conf | while read line
do
for ip in $(nslookup $line | tail -n+4 | grep "[0-9]\{1,3\}[.][0-9]\{1,3\}[.][0-9]\{1,3\}[.][0-9]\{1,3\}" | xargs -n1 | grep -v 'Address')
doipset add -exist white_domain $ip
done
done

域名文件是/etc/white_domain.conf


四、iptables配置ipset

入网放通: iptables -I INPUT -m set --match-set white_domain src -j ACCEPT
出网放通: iptables -I OUTPUT -m set --match-set white_domain dst -j ACCEPT

定时任务配置

由于不清楚域名到底多久换一次ip地址,所以我创建定时任务,每隔一分钟执行一次脚本,将最新域名对应的ip地址放入到iptables中

crontab -e
*/1 * * * * /white_domain_ipset_iptables.sh

总结

不太清楚是不是有其它的解决方案,如果有欢迎交流(dnsmasq除外,这个没弄出来).
目前不清楚有什么问题,如果有人发现问题了,欢迎留言…

iptables基于域名的本机流量控制相关推荐

  1. Centos7.6下构建虚拟主机实验(基于域名、端口及IP地址)

    文章目录 一.构建虚拟主机概述 二.实验环境及详细步骤 2.1 基于域名 2.2 基于端口 2.3 基于IP 一.构建虚拟主机概述 虚拟Web主机 在同一台服务器中运行多个Web站点,其中每一个站点并 ...

  2. nginx虚拟主机(基于域名虚拟主机、基于IP地址虚拟主机、基于端口虚拟主机设置)

    文章目录 Nginx支持的虚拟主机有三种 配置环境 配置DNS域名 安装环境 安装nginx 制作管理脚本 基于域名 基于端口 基于IP 基于用IP地址访问域名 Nginx支持的虚拟主机有三种 ●基于 ...

  3. 虚拟Web主机(基于域名配置,基于ip地址,基于端口)

    文章目录 虚拟Web主机 httpd支持的虚拟主机类型 基于域名的虚拟主机 基于IP地址的虚拟主机 基于端口的蓄力主机 基于域名的虚拟主机 修改DNS主配置文件 设置区域配置文件 添加区域数据配置文件 ...

  4. 如何配置Apache虚拟主机?(基于IP、基于端口、基于域名)

    一.Apache虚拟机配置前的准备工作 1.下载yum源 2.安装yum包 3.安装httpd包 4.查看并关闭selinux 5.取消中心主机 cd /etc/httpd/conf vim http ...

  5. linux基于域名的虚拟主机,Nginx虚拟主机应用——基于域名、IP、端口的虚拟主机...

    Nginx支持的虚拟主机有三种 ●基于域名的虚拟主机 ●基于IP的虚拟主机 ●基于端口的虚拟主机 每一种虚拟主机均可通过"server{}" 配置段实现各自的功能 基于域名的虚拟主 ...

  6. Web服务器群集--Nginx网站服务(运行控制,访问状态统计,基于授权和客户端的访问控制,基于域名,端口,IP的虚拟web主机访问)

    文章目录 前言 一:Nginx服务基础 1.1:Nginx概述 1.2:Nginx编译安装(过程) 1.3:运行控制(实验过程) 1.4:配置文件nginx.conf 1.5:Nginx的访问状态统计 ...

  7. 虚拟主机的构建——基于域名、端口、IP

    构建虚拟主机 1.虚拟主机介绍 企业常用的虚拟主机分为3种: (1)基于域名 (2)基于端口 (3)基于IP 虚拟web主机 在同一台物理服务器中运行多个web站点,其中每一个站点并不独立占用一台真正 ...

  8. lqc_构建基于域名的虚拟主机

    基于域名的虚拟web主机 实验环境: 某公司的网站服务器使用的公网IP地址为192.168.100.150,并使用该IP地址注册两个域名www.bdqn.com和www.jbit.com.服务器中已经 ...

  9. centos 7.6——Nginx中rewrite模块应用(location)——基于域名的跳转等

    centos 7.6--Nginx中rewrite模块应用(location)--基于域名的跳转等 文章目录 centos 7.6--Nginx中rewrite模块应用(location)--基于域名 ...

最新文章

  1. Spring中应用反射机制浅析
  2. oracle: 在sqlplus中,执行sql语句
  3. 文本挖掘预处理流程总结(1)— 中文
  4. dokcer 运行和进入容器
  5. 手写 单隐藏层神经网络_反向传播(Matlab实现)
  6. android高德地图搜索地址,地点/周边搜索-Android平台-开发指南-高德地图车机版 | 高德地图API...
  7. 返回一个整数数组中最大子数组的和---环形数组
  8. Angular 小试牛刀[2]:CI(travie+firebase)
  9. 横空出世,席卷互联网--评微软等公司数据结构和算法面试100题 .
  10. Codeforces Round 722C:Destroying Array(离线)
  11. [机器学习] focal loss:解决样本不平衡的一种通用方案
  12. go语言之进阶篇面向对象编程
  13. asp.net oracle连接数据库,通过ASP.NET连接Oracle数据库实例教程
  14. 0.88mm液晶拼接屏在会议显示中的优势分析
  15. 位运算4 起床困难综合症
  16. ThinkPHP 验证码错误
  17. C语言编程>第六周 ① 编写一个录入函数:用来从键盘接收n个整型数并存放在一个整型数组中。 在主函数中调用该函数计算出这n个整数之和。
  18. Oracle 10g的闪回机制
  19. python complex 如何取出实数部分_python中怎么表示实数
  20. 香港正值流感高峰期 191间幼儿园19日起停课7日

热门文章

  1. xilinx 官网vivado和petalinux下载速度慢的解决办法
  2. H.264中的SPS和PPS
  3. 雅虎搜索的中文官方Blog推出
  4. 塞尔维亚国家队大名单:马蒂奇领衔,古德利落选
  5. 用python画国旗的程序_用python画的五星红旗
  6. 吴恩达Coursera深度学习课程 deeplearning.ai (4-4) 人脸识别和神经风格转换--编程作业
  7. 【Linux系统编程】进程地址空间和虚拟地址空间
  8. 8个问题带你搞懂《小门神》背后的技术
  9. 电子邮件内容安全刻不容缓
  10. BZOJ1179【APOI2009】ATM Tarjan