关于iptables的调整

背景说明:

iptables的contrack模块,因为业务量大,而导致drop packet的状况,现针对线上机器进行灰度,灰度的原则是:没有使用iptable,则将其禁用并修改hash表,如果有使用iptables,则直接修改hash表即可。

脚本内容

#!/bin/bash
iptables_init="/etc/init.d/iptables"
date=`date +%F`
#将5.9和6.3系统的iptables相关的模块禁用,包括conntrack,filter表,nat表,mangle表

function disable_modules_5.9() {
        cat >/etc/modprobe.d/kugou.conf <<EOF
        install nfnetlink       /bin/true 
        install ip_conntrack    /bin/true   
        install xt_conntrack    /bin/true
        install ip6_tables      /bin/true
        install ip6table_filter /bin/true
        install iptable_filter  /bin/true
        install ebtables        /bin/true
        install ebtable_nat     /bin/true
        install ip_nat          /bin/true
        install iptable_nat     /bin/true
        install iptable_mangle  /bin/true
        install ip6table_mangle /bin/true
EOF
        sed -i ‘s/^[[:space:]]*//g‘ /etc/modprobe.d/kugou.conf      
}

function disable_modules_6.3() {
cat >/etc/modprobe.d/kugou.conf <<EOF
        install nfnetlink         /bin/true
        install nf_conntrack      /bin/true
        install nf_defrag_ipv4    /bin/true
        install nf_conntrack_ipv4 /bin/true
        install ip6_tables        /bin/true
        install ip6table_filter   /bin/true
        install iptable_filter    /bin/true
        install ebtable_nat       /bin/true
        install ebtables          /bin/true
        install nf_nat            /bin/true
        install iptable_nat       /bin/true
        install iptable_mangle    /bin/true
        install ip6table_mangle   /bin/true
EOF
        sed -i ‘s/^[[:space:]]*//g‘ /etc/modprobe.d/kugou.conf      
}

#调整5.9和6.3系统的内核bucket参数,包括conntrack支持最大的数目和会话超时时间
function setup_bucket_5.9() {
        cp ${iptables_init} /root/iptables-${date}
        sed -i ‘/\<ip_conntrack_max\>/ d‘ ${iptables_init} 
        sed -i ‘/\<ip_conntrack_tcp_timeout_syn_recv\>/ d‘ ${iptables_init }
        sed -i ‘/\<ip_conntrack_tcp_timeout_established\>/ d‘ ${iptables_init}
        sed -i ‘/touch $VAR_SUBSYS_IPTABLES/ i\    echo 1048576 > /proc/sys/net/ipv4/netfilter/ip_conntrack_max‘ ${iptables_init}
        sed -i ‘/touch $VAR_SUBSYS_IPTABLES/ i\    echo 30 > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_syn_recv‘ ${iptables_init}
        sed -i ‘/touch $VAR_SUBSYS_IPTABLES/ i\    echo 60 > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established‘ ${iptables_init}
        echo 60 > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established
        echo 30 > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_syn_recv
        echo 1048576 > /proc/sys/net/ipv4/netfilter/ip_conntrack_max
}

function setup_bucket_6.3() {
        cp ${iptables_init} /root/iptables-${date}
        sed -i ‘/\<nf_conntrack_max\>/ d‘ ${iptables_init}
        sed -i ‘/\<nf_conntrack_tcp_timeout_established\>/ d‘ ${iptables_init}
        sed -i "/touch $VAR_SUBSYS_IPTABLES/ i\    echo 655350 > /proc/sys/net/nf_conntrack_max" ${iptables_init}
        sed -i "/touch $VAR_SUBSYS_IPTABLES/ i\    echo 655350 > /proc/sys/net/netfilter/nf_conntrack_max" ${iptables_init}
        sed -i "/touch $VAR_SUBSYS_IPTABLES/ i\    echo 60 > /proc/sys/net/netfilter/nf_conntrack_tcp_timeout_established" ${iptables_init}
        echo 1048576  > /proc/sys/net/nf_conntrack_max
        echo 1048576  > /proc/sys/net/netfilter/nf_conntrack_max
        echo 60 > /proc/sys/net/netfilter/nf_conntrack_tcp_timeout_established
}

#禁用iptables客户端
function disable_iptables_client() {
        if [ -e /sbin/iptables ];then
            mv /sbin/iptables /sbin/selbatpi
            else
            echo "iptables客户端已经设置好"
        fi
}

function warn_logs() {
        if [ -e /usr/bin/curl ];then
            curl http://10.1.2.128/iptables_on >/dev/null 
        fi
}

#功能调用,对于已经开启iptables的机器,调整bucket参数,告警上报;对于未开启的iptables的机器,则调整bucket参数,禁用模块,禁用iptables客户端
function main() {
        cp ${iptables_init} ${date}-iptables 
        osversion=`awk ‘{print $3}‘ /etc/redhat-release`
        case ${osversion} in
            5.[0-9])
                if [ `lsmod |grep iptables | wc -l` -eq 0 ];then
                disable_modules_5.9
                disable_iptables_client
                else
                warn_logs
                fi
                setup_bucket_5.9
                ;;
            6.[0-6])
                if [ `lsmod |grep iptables | wc -l` -eq 0 ];then
                disable_modules_6.3
                disable_iptables_client
                else
                warn_logs
                fi
                setup_bucket_6.3
                ;;
            *)
                echo "当前操作系统版本不支持,对应的版本为:${osversion}"
                exit 1
            ;;
    esac
}

main
时间: 2024-11-03 21:36:37

关于iptables的调整的相关文章

设置Linux内核参数 /etc/sysctl.conf

设置Linux内核参数 /etc/sysctl.conf   配置 Linux 内核参数修改后不用重启动更新: /sbin/sysctl -p 打开/etc/sysctl.conf 复制如下内容kernel.shmall = 2097152kernel.shmmax = 2147483648kernel.shmmni = 4096kernel.sem = 250 32000 100 128fs.file-max = 65536net.ipv4.ip_local_port_range = 1024

(转)fastdfs_v4.07 / 实现多服务器

http://my.oschina.net/shking/blog/165326 自己闲着没事,在小黑上虚拟了 4 个 centos 64 的系统,用来安装分布式 fastdfs . nginx 负载均衡,过程一路艰辛,搞了一个通宵都没弄好,终于在第二天的傍晚终于弄好了,记录一下过程. 有时候看书会犯糊涂,看完了都不知道将了啥,只有动手坐坐,啥玩意都明白差不多了. 有时候太懒了,哎,这是病,得治. • FastDFS安装 FastDFS是一个国产开源的轻量级分布式文件系统,它对文件进行管理,功能

linux系统基础优化和安全重点小结

本文描述一些基本的系统优化知识点,为适应批量配置,所有代码为非交互式配置方法,可在crt中通过命令窗口做简单的批量处理. 不用root登录管理系统,而以普通用户登录通过sudo授权管理.作为一个例子这里新建一个用户,并做sudo提权 useradd gotimmygo echo 123456|passwd --stdin gotimmygo \cp /etc/sudoers{,ori} echo "gotimmygo ALL=(ALL) NOPASSWD:ALL">>/et

DNS实战

实战Dns 一. 理论基础 1. dns的出现及演化 网络出现的早期是使用IP地址通讯的,那时就几台主机通讯.但是随着接入网络主机的增多,这种数字标识的地址非常不便于记忆,UNIX上就出现了建立一个叫做hosts的文件(Linux和Windows也继承保留了这个文件).这个文件中记录着主机名称和IP地址的对应表.这样只要输入主机名称,系统就会去加载hosts文件并查找对应关系,找到对应的IP,就可以访问这个IP的主机了. 但是后来主机太多了,无法保证所有人都能拿到统一的最新的hosts文件,就出

xshell通过ssh连接Linux失败(非网络问题)

+++++++++++++++++++++++++++++++++++++++++++ 标题:xshell通过ssh连接Linux失败(非网络问题) 时间:2019年6月20日 +++++++++++++++++++++++++++++++++++++++++++ 在学习系统防火墙(iptables)时,个人在自己搭建的虚拟机上调整防火墙策略(有的策略是通过iptables命令调整,有的是通过直接修改iptables策略配置文件进行调整).再一次调整完防火墙后再通过xshell远程连接软件连接虚

Nagios中官方iptables监控脚本调整

在Nagios的官方网站上有提供一个用于监控iptables的状态的脚本,但是官方提供的脚本直接是不能使用的需要修改才能使用,在这里就大致所以下,因为Nagios的中命令机制是使用Nagios用户运行的,所以在官网上提供的脚本没有做出调整前是无法正常使用的,官网提供的iptables监控脚本很简单,是使用iptables的指令统计出INPUT上实时的条数的有多少,如果条数-1小于0就告警.但是在普通用户是无法正常使用iptables的命令,如果没有做出调整在Nagios中会出现NRPE:Unab

【整理笔记-防火墙】实现iptables防火墙搭建

搭建防火墙,配置防火墙. - - 系统centos7 . centos7自带firewalld,由于看firewalld命令行没有接触过,所以安装iptables防火墙. 1:禁用firewalld firewall-cmd --state 查看系统自带防火墙状态. 用systemctl stop firewalld.service   禁止立即生效, systemctl disable firewalld.service  永久关闭firewalld.执行完再看一下防火墙状态, 显示为not

iptables防火墙过滤规则

iptables  包过滤 防火墙 firewall  防火墙工作在网络边缘(主机边缘)对于进出的网络数据包进行规则排查,并在匹配某规则时由规则定义的处理进行处理的功能组件 防火墙类型 根据工作区域不同分为: OSI 的第三层,即网络层的防火墙 OSI 的第七层,即应用层的防火墙 ,或者代理服务器/网关 网络层的防护墙:包过滤器 在网络层 对数据进行条件是选择,根据访问控制表(ACL),即检查每个数据的源地址,目的地址,端口号,协议状态等. 针对端口 代理服务防火墙 代理服务会把同过或者服务控制

25个iptables常用示例

25个iptables常用示例 本文将给出25个iptables常用规则示例,这些例子为您提供了些基本的模板,您可以根据特定需求对其进行修改调整以达到期望.  格式 iptables [-t 表名] 选项 [链名] [条件] [-j 控制类型] 参数 -P 设置默认策略:iptables -P INPUT (DROP|ACCEPT) -F 清空规则链 -L 查看规则链 -A 在规则链的末尾加入新规则 -I num 在规则链的头部加入新规则 -D num 删除某一条规则 -s 匹配来源地址IP/M