linux防墙iptables详细介绍、配置方法与案例
1.1iptables防火墙简介
Netfilter/Iptables(以下简称Iptables)是unix/linux自带的一款优秀且开放源代码的安全自由的**基于包过滤的防火墙工具**,它的功能十分强大,使用非常灵活,可以对流入和流出服务器的数据包进行很精细的控制。特别是它可以在一台非常低的硬件配置下跑的非常好
Iptables是Linux2.4及2.6内核中集成的服务。其功能与安全性比其**ipfwadm,ipchains**强大的多,iptables主要工作在OSI七层的二、三、四层,如果重新编译内核,iptables也可以支持**7层控制**(squid代理+iptables)
1.2iptables名词和术语
容器:包含和被包含的关系
iptables是表的容器
iptables包含表(4张表)表是链的容器,每个表都包含若干个链
链是规则的容器,真正过滤规则是属于链里面的
级别介绍
iptables 国家
表 省
链 市
规则 县
1.3iptables工作流程
iptables是采用数据包过滤机制工作的,所以它会对请求的数据包的包头数据进行分析,并根据我们预先设定的规则来进行匹配是否可以进入到主机。
iptables工作流程小结
- 防火墙是一层层过滤的。实际是按照配置规则的顺序从上到下,从前到后进行过滤的。
- 如果匹配上规则,即明确表是阻止还是通过,此时数据包就不在向下匹配新规则了。
- 如果所有规则中没有明确是阻止还是通过这个数据包,也就是么有匹配上新规则,向下进行匹配,直到匹配默认规则得到明确的组织还是通过
- 防火墙的默认规则是对应链的所有规则执行完才会执行的。
1.4iptables表(tables)和链(chains)
iptables根据功能和表的定义划分包含三个表,filter,nat,mangle,其每个表又包含不同的操作链(Chains)
Filter表是真正的防火墙功能
INPUT进服务器OUTPUT出服务器FORWARD流经服务器
Nat表负责数据包改写网关共享上网、IP和端口映射
OUTPUT
PREROUTING
POSTROUTING
Mangle表路由标记用的不多
####所有链全有
RAW表用处很少和Mangle一样
我们可以通过maniptables来获取
1.5表介绍
对于filter表的控制是我们实现本机防火墙的重要手段,特别是对INPUT链的控制
1.6iptables表和链工作流程图
提示:iptables主要由2个作用,第一是防火墙,第二是路由。
NAT功能:
企业案例:1)局域网上网共享(路由和网关)NATPOSTROUTING
2)外部IP和端口映射为内部IP和端口(DMZ功能),NATPREROUTING
Filter功能:
即防火墙FILTERINPUTFORWARD
企业案例:主要应用于服务器防火墙
2.1配置iptables
iptables默认已经安装 [root@web02~]#iptables-V iptablesv1.4.7 [root@web02~]#rpm-qaiptables iptables-1.4.7-16.el6.x86_64 [root@web02~]#/etc/init.d/iptablesstatus iptables:Firewallisnotrunning.
查看iptables规则
[root@web02~]#iptables-nL ChainINPUT(policyACCEPT)
表示针对input链ACCEPT是默认规则,默认是运行通过的
targetprotoptsourcedestination input链下面具体的规则 ACCEPTall--0.0.0.0/00.0.0.0/0stateRELATED,ESTABLISHED ACCEPTicmp--0.0.0.0/00.0.0.0/0 ACCEPTall--0.0.0.0/00.0.0.0/0 ACCEPTtcp--0.0.0.0/00.0.0.0/0stateNEWtcpdpt:22 REJECTall--0.0.0.0/00.0.0.0/0reject-withicmp-host-prohibited ChainFORWARD(policyACCEPT) targetprotoptsourcedestination REJECTall--0.0.0.0/00.0.0.0/0reject-withicmp-host-prohibited ChainOUTPUT(policyACCEPT) targetprotoptsourcedestination
如果没有指定表,默认就是filfer表
iptables默认加载的内核模块 [root@web02~]#lsmod|egrep"nat|filter|ipt" ipt_REJECT23512 iptable_filter27931 ip_tables178311iptable_filter
加载如下模块到linux内核
modprobeip_tables modprobeiptable_filter modprobeiptable_nat modprobeip_conntrack连接跟踪 modprobeip_conntrack_ftp连接跟踪 modprobeip_nat_ftp modprobeipt_state
再次过滤,查看生效情况
[root@web02~]#lsmod|egrep"nat|filter|ipt" nf_nat_ftp34430 nf_conntrack_ftp119531nf_nat_ftp iptable_nat59230 nf_nat226762nf_nat_ftp,iptable_nat ipt_REJECT23512 nf_conntrack_ipv491545iptable_nat,nf_nat nf_conntrack792066nf_nat_ftp,nf_conntrack_ftp,iptable_nat,nf_nat,nf_conntrack_ipv4,xt_state iptable_filter27931 ip_tables178312iptable_nat,iptable_filter
清空所有的规则,只留下默认规则
[root@web02~]#iptables-F [root@web02~]#iptables-X [root@web02~]#iptables-Z
iptables-F清除所有规则
iptables-X删除用户自定义规则
iptables-Z链的计数器清零
2.2禁止规则
查看端口
[root@web02~]#netstat-lntup|grepssh tcp000.0.0.0:220.0.0.0:*LISTEN1329/sshd tcp00:::22:::*LISTEN1329/sshd
命令如下:
iptables-tfilter-AINPUT-ptcp--dport22-jDROP
-A添加规则到指定链的结尾,最后一条
-I添加规则到指定链的开头,第一条
-t指定表,也可以不指定默认是filter
-p指定协议(all.tcp,udp.icmp)默认all
--dport指定端口
-j处理的行为
ACCPET接收、DROP丢弃、REJECT拒绝
最好使用ACCPET和DROP,因为拒绝会返回给用户信息。
清除规则可以使用iptables-F
还可以使用iptables-DINPUT1
-D指定删除的链
--line-number显示序列号
iptables-nl--line-number
提示:需要写上链和序列号
温馨提示:恢复刚才断掉的SSH连接
1)去机房重启系统或登录服务器删除刚才的禁止规则
2)让机房人员重启服务器或者让机房人员拿用户密码登录进去
3)通过服务器的远程管理卡管理(推荐)
4)先写一个定时任务,每5分钟就停止防火墙
5)测试环境测试好,写成脚本,批量执行
企业案例
3.1:加-A和-I的区别
[root@web02~]#iptables-AINPUT-ptcp--dport80-jDROP [root@web02~]#iptables-IINPUT-ptcp--dport80-jACCEPT
按照iptables匹配规则,首先会先匹配第一行,依次向下。这样设置拒绝就没有用
如果想在中间插入可以指定插入行号
[root@web02~]#iptables-nL ChainINPUT(policyACCEPT) targetprotoptsourcedestination ACCEPTtcp--0.0.0.0/00.0.0.0/0tcpdpt:80 DROPtcp--0.0.0.0/00.0.0.0/0tcpdpt:80 ChainFORWARD(policyACCEPT) targetprotoptsourcedestination ChainOUTPUT(policyACCEPT) targetprotoptsourcedestination
还可以通过序列号插入iptables命令
[root@web02~]#iptables-IINPUT2-ptcp--dport80-jACCEPT [root@web02~]#iptables-nL--line-number ChainINPUT(policyACCEPT) numtargetprotoptsourcedestination 1ACCEPTtcp--0.0.0.0/00.0.0.0/0tcpdpt:80 2ACCEPTtcp--0.0.0.0/00.0.0.0/0tcpdpt:80 3DROPtcp--0.0.0.0/00.0.0.0/0tcpdpt:80 ChainFORWARD(policyACCEPT) numtargetprotoptsourcedestination ChainOUTPUT(policyACCEPT) numtargetprotoptsourcedestination
小结:总结下删除规则的方法
1.iptables-DINPUT-ptcp--dport8080-jDROP
2.iptables-F删所有规则
3./etc/init.d/iptablesrestart(用iptables命令行配置的命令都是临时生效)
4.iptables-DINPUT规则序号
3.2:禁止10.0.0.0网段接入
基于客户端网段控制
[root@web02~]#iptables-AINPUT-s10.0.0.0/24-jDROP
-s指定源地址
还可以使用不是这个网段的进行操作
[root@web02~]#iptables-AINPUT!-s10.0.0.0/24-jDROP
案例:控制22端口eth0网卡进来的数据
iptables-AINPUT-ptcp--dport22-ieth0!-s10.0.0.0/24-jDROP iptables-AINPUT-ptcp--dport22-ieth0!-s192.168.1.1-jDROP
封掉3306端口
iptables-AINPUT-ptcp--dport3306-jDROP
匹配指定的协议
iptables-AINPUT-ptcp iptables-AINPUT-pudp
匹配指定协议外的所有协议
iptables-AINPUT!-ptcp
``匹配单一端口**
iptables-AINPUT-ptcp--sport22源端口 iptables-AINPUT-pudp--dport22目的端口
匹配端口范围:
iptables-AINPUT-ptcp--sport22:80 iptables-AINPUT-ptcp--dport21,22,23-jDROP---->错误语法 iptables-IINPUT-ptcp-mmultiport--dport22,23,24,25-jDROP iptables-IINPUT-ptcp-mmultiport!--dport22,23,24,25-jDROP iptables-IINPUT-ptcp--dport3306:8809-jACCEPT iptables-IINPUT-ptcp--dport18:80-jDROP<----最佳方法
匹配ICMP类型
iptables-AINPUT-picmp-type8
icmp中有很多类型,其中8代表ping
例:
iptables-AINPUT-picmp--icmp-type8-jDROP iptables-AINPUT-picmp-micmp--icmp-typeany-jACCEPT
因为icmp类型很多可以使用any,icmp的所有类型全禁
iptables-AINPUT-s192.168.1.0/24-picmp-micmp--icmp-typeany-jACCEPT
企业场景禁ping
iptables-AINPUT-picmp--icmp-type8-s10.0.0.0/24-jACCEPT
匹配网络状态
-mstate--state
NEW:已经或启动新的连接
ESTABLISHED:已建立的连接
RELATED:正在启动的新连接
INVALID:非法或无法识别的
FTP服务是特殊的,需要配状态连接
允许关联的状态包通过(Web服务不要使用FTP服务)
iptables-AINPUT-mstate--stateESTABLISHED,RELATED-jACCEPT iptables-AOUTPUT-mstate--stateESTABLISHED,RELATED-jACCEPT
限制指定时间包的允许通过数量及并发数
-mlimit--limitn/{second/minute/hour}
指定时间内的请求速率“n”为速率,后面为时间分别为:秒、分、时
--limit-burst[n]
在同一时间内允许通过的请求“n”为数字,不指定默认为5
iptables-IINPUT-s10.0.1.0/24-picmp--icmp-type8-mlimit--limit5/min--limit-burst2-jACCEPT
手动执行iptables命令配置企业生产环境防火墙
生产环境配置主机防火墙的两种模式
1.允许所有程序,对操作伤害的进行拒绝操纵应用场景:企业配置上网网关路由
2.拒绝所有操作,允许指定的操作应用场景:服务器主机防火墙
配置企业主机防火墙
[root@web02~]#iptables-F [root@web02~]#iptables-X [root@web02~]#iptables-Z
1.设置允许SSH登录端口
[root@web02~]#iptables-AINPUT-ptcp--dport22-jACCETP [root@web02~]#iptables-AINPUT-ptcp-s10.0.0.1/24-jACCEPT
2.设置允许本机lo通信规则
[root@web02~]#iptables-AINPUT-ilo-jACCEPT [root@web02~]#iptables-AOUTPUT-olo-jACCEPT
3.设置默认规则
[root@web02~]#iptables-PINPUTDROP [root@web02~]#iptables-POUTPUTACCEPT [root@web02~]#iptables-PFORWARDDROP
查看规则(现在的服务器是最安全的)
[root@web02~]#iptables-nL--line-number ChainINPUT(policyDROP) numtargetprotoptsourcedestination 1ACCEPTtcp--0.0.0.0/00.0.0.0/0tcpdpt:22 2ACCEPTtcp--10.0.0.0/240.0.0.0/0 3ACCEPTall--0.0.0.0/00.0.0.0/0 ChainFORWARD(policyDROP) numtargetprotoptsourcedestination ChainOUTPUT(policyACCEPT) numtargetprotoptsourcedestination 1ACCEPTall--0.0.0.0/00.0.0.0/0
4.开启信任的IP网段
允许IDCLAN/WAN和办公网IP的访问,及对外合作机构访问
iptables-AINPUT-s124.23.62.96/27-pall-jACCEPT#办公室固定IP段 iptables-AINPUT-s192.168.2.0/24-pall-jACCEPT#IDC机房的内网网段 iptables-AINPUT-s10.0.0.0/24-pall-jACCEPT#其他机房的内网网段 iptables-AINPUT-s203.82.24.0/24-pall-jACCEPT#IDC机房的外网网段 iptables-AINPUT-s203.82.23.0/24-pall-jACCEPT#其他IDC机房的外网网段
现在还只是我们可以访问,对外还无法访问
5.允许icmp类型协议通过
iptables-AINPUT-picmp-micmp-typeany-jACCEPT
提示:如果不想开,就不执行此命令
iptables-AINPUT-picmp-s10.0.0.0/24-micmp--icmp-typeany-jACCEPT
6.允许关联的状态包通过(Web服务不要使用FTP服务)
iptables-AINPUT-mstate--stateESTABLISHED,RELATED-jACCEPT iptables-AOUTPUT-mstate--stateESTABLISHED,RELATED-jACCEPT
提示:以上配置就是合格服务器应该配置的
保存
默认使用iptables并没有永久保存,重启失效。
第一种方法:
/etc/init.d/iptablessave
保存到/etc/sysconfig/iptables下面
显示如下格式
[root@web02~]#cat/etc/sysconfig/iptables #Generatedbyiptables-savev1.4.7onMonAug1501:33:442016 *nat :PREROUTINGACCEPT[1413:153792] :POSTROUTINGACCEPT[132:8834] :OUTPUTACCEPT[132:8834] COMMIT #CompletedonMonAug1501:33:442016 #Generatedbyiptables-savev1.4.7onMonAug1501:33:442016 *filter :INPUTDROP[1798:662465] :FORWARDDROP[0:0] :OUTPUTACCEPT[288:21100] -AINPUT-ptcp-mtcp--dport22-jACCEPT -AINPUT-s10.0.0.0/24-ptcp-jACCEPT -AINPUT-ilo-jACCEPT -AOUTPUT-olo-jACCEPT COMMIT #CompletedonMonAug1501:33:442016
第二种方法:
[root@web02~]#iptables-save>/etc/sysconfig/iptables
推荐使用第一种方式
测试:我通过其他服务器扫描我们配置的防火墙
使用nmap工具进行分析,此工具需要安装
[root@web02~]#yum-yinstallnmap
使用如下:更多可以使用nmap--help
[root@web02~]#nmap10.0.0.8-p1-65535 StartingNmap5.51(http://nmap.org)at2016-08-1504:28CST Nmapscanreportfor10.0.0.8 Hostisup(0.0000070slatency). Notshown:65532closedports PORTSTATESERVICE 22/tcpopenssh 80/tcpopenhttp 3306/tcpopenmysql Nmapdone:1IPaddress(1hostup)scannedin14.21seconds
生产维护
(1)确定的规则;
编辑/etc/sysconfig/iptables
加入想要的规则:例如
-AINPUT-ptcp-mtcp--dport873-jACCEPT /etc/init.d/iptablesreload
或者改配置的同时命令在执行,也是永久生效。
(2)命令试错,没问题了,然后放配置文件,这时不需要重启了
恶意IP封杀
封IP,在第一行封。10.0.0.1这个机器攻击我们服务器或者在BBS里发垃圾帖子
手工封IP:
iptables-IINPUT-s10.0.0.1-jDROP#粗,范围大,外部攻击者 Iptables-IINPUT-s10.0.0.1-jDROP iptables-IINPUT-ptcp-s10.0.0.1--dport80-jDROP#细,范围小。内部
自动封IP:分析Web或应用日志或者网络连接状态封掉垃圾IP
脚本:
#!/bin/bash #thisisaserverfirewallcreatedbyoldboy17:032006-7-26 #e_mail:31333741@qq.com #qqinfo:49000448 #function:aserverfirewall #version:1.1 ################################################ #oldboytrainninginfo. #QQ198678735070271111 #site:http://www.etiantian.org #blog:http://oldboy.blog.51cto.com #oldboytrainningQQgroup:20816098745039636 ################################################ #definevariablePATH IPT=/sbin/iptables #Removeanyexistingrules $IPT-F $IPT-X $IPT-Z #settingdefaultfirewallpolicy $IPT--policyOUTPUTACCEPT $IPT--policyFORWARDDROP $IPT-PINPUTDROP #settingforloopbackinterface $IPT-AINPUT-ilo-jACCEPT $IPT-AOUTPUT-olo-jACCEPT #settingaccessrules #one,ipaccessrules,allowalltheipsof $IPT-AINPUT-s10.0.10.0/24-pall-jACCEPT $IPT-AINPUT-s10.0.0.0/24-pall-jACCEPT ##下面的是重复的,作为知识点保留,单个服务的配置 #second,portaccessrules #nagios $IPT-AINPUT-s10.0.10.0/24-ptcp--dport5666-jACCEPT $IPT-AINPUT-s10.0.0.0/24-ptcp--dport5666-jACCEPT #db $IPT-AINPUT-s10.0.0.0/24-ptcp--dport3306-jACCEPT $IPT-AINPUT-s10.0.0.0/24-ptcp--dport3307-jACCEPT $IPT-AINPUT-s10.0.10.0/24-ptcp--dport3306-jACCEPT $IPT-AINPUT-s10.0.10.0/24-ptcp--dport3307-jACCEPT #sshdifferencefromotherservershere.>> $IPT-AINPUT-s10.0.0.0/24-ptcp--dport52113-jACCEPT $IPT-AINPUT-s10.0.10.0/24-ptcp--dport52113-jACCEPT $IPT-AINPUT-ptcp--dport22-jACCEPT #http $IPT-AINPUT-ptcp--dport80-jACCEPT #snmp $IPT-AINPUT-s10.0.0.0/24-pUDP--dport161-jACCEPT $IPT-AINPUT-s10.0.10.0/24-pUDP--dport161-jACCEPT #rsync $IPT-AINPUT-s10.0.0.0/24-ptcp-mtcp--dport873-jACCEPT $IPT-AINPUT-s10.0.10.0/24-ptcp-mtcp--dport873-jACCEPT #icmp #$IPT-AINPUT-picmp-micmp--icmp-typeany-jACCEPT #othersRELATED $IPT-AINPUT-mstate--stateESTABLISHED,RELATED-jACCEPT $IPT-AOUTPUT-mstate--stateESTABLISHED,RELATED-jACCEPT
企业案例:写一个脚本解决DOS攻击生产案例
提示:根据web日志或者或者网络连接数,监控当某个IP并发连接数或者短时内PV达到100,即调用防火墙命令封掉对应的IP,监控频率每隔3分钟。防火墙命令为:iptables-IINPUT-s10.0.1.10-jDROP
本脚本使用测试文件进行编写
[root@db02scripts]#cattest_6.sh #!/bin/sh # [-f/etc/init.d/functions]&&./etc/init.d/functions IP_file="/server/scripts/ddos.txt" IP_filter_command="iptables-IINPUT-jDROP-s" IP_recover_command="iptables-DINPUT-jDROP-s" functionIP_check(){ grep"EST"${IP_file}|awk-F"[|:]+"'{print$6}'|sort|uniq-c|sort-rn-k1>/server/scripts/ip.txt } functionIP_filter(){ exec>/server/scripts/ip_filtered.txt action"Filter${IP}"/bin/true fi done } functionIP_recover(){ exec>/server/scripts/ip_filtered.txt action"Recover${IP}"/bin/true fi done } functionmain(){ case"$1"in filter) IP_check echo"$(date+%F-%H:%M:%S)filteredby$(whoami)">>/server/scripts/ip_filtered.txt IP_filter ;; recover) IP_check echo"$(date+%F-%H:%M:%S)recoveredby$(whoami)">>/server/scripts/ip_filtered.txt IP_recover ;; *) echo"USAGE:$0{filter|recover}" exit1 esac } main$*
生产环境iptables脚本讲解
技巧:具备外网IP的服务器不对外的服务最好要做源地址限制。对外提供的服务,不能做源地址限制,例如:80端口
问题:企业硬件防火墙和IPTABLES防火墙是否要同时用。
解决:可以同时使用企业硬件防火墙一般放在网关位置,相当于大厦的保安,但是楼里的每个屋子还是需要有人锁门的iptables
问题:IDC机房部署了硬件防火墙,我们的服务器可以不开防火墙吗?
解答:绝对不可以,大厦有了保安,你的办公室门就不锁了吗?
NAT表设置
共享上网设置
linux网关B:
局域网共享的两条命令方法:
方法1:适合于有固定外网地址的:
iptables-tnat-APOSTROUTING-s192.168.1.0/24-oeth0-jSNAT--to-source10.0.0.7
(1)-s192.168.1.0/24办公室或IDC内网网段。
(2)-oeth0为网关的外网卡接口。
(3)-jSNAT--to-source10.0.0.7是网关外网卡IP地址。
方法2:适合变化外网地址(ADSL):
iptables-tnat-APOSTROUTING-s192.168.1.0/24-jMASQUERADE#伪装。
配置如下
第一步:外网服务器配置
[root@lb01~]#iptables-tnat-APOSTROUTING-s172.16.1.0/24-jSNAT--to-source10.0.0.5 [root@lb01~]#iptables-tnat-L-n
开启内核转发
net.ipv4.ip_forward=1 vim/etc/sysctl.conf sysctl-p#生效
需要上网服务器设置
添加路由
routeadddefaultgw172.16.1.5#此处写提供外网的IP地址 vim/etc/resolv.conf
添加nameserver223.5.5.5
route-n检查
案例2:实现把访问10.0.0.5:80的请求转到172.16.1.8:80
[root@web02~]#iptables-tnat-APREROUTING-d10.0.0.5-ptcp--dport80-jDNAT--to-destination172.16.1.8:80 [root@web02~]#iptables-PFORWARDDROP
iptables常用企业案例:
1、Linux主机防火墙(表:FILTER控制链:INPUT)
2、局域网机器共享上网(表:NAT控制链:POSTROUTING)
iptables-tnat-APOSTROUTING-s192.168.1.0/24-oeth0-jSNAT--to-source10.0.0.7
3、外部地址和端口,映射为内部地址和端口(表:NAT控制的链:PREROUTING)
iptables-tnat-APREROUTING-d10.0.0.7-ptcp--dport80-jDNAT--to-destination192.168.1.8:9000
企业案例:实现外部IP124.42.34.112一对一映射到内部server10.0.0.8
网关Ip:eth0:124.42.60.109eth1:10.0.0.254
首先在路由网关上绑定VIP124.42.34.112,可以是别名或辅助IP的方式。
-APOSTROUTING-s10.0.0.0/255.255.240.0-d124.42.34.112-jSNAT--to-source10.0.0.254 -APREROUTING-d124.42.34.112-jDNAT--to-destination10.0.0.8 -APOSTROUTING-s10.0.0.8-oeth0-jSNAT--to-source124.42.34.112
iptables生产应用场景
1)局域网共享上网(适合做企业内部局域网上网网关,以及IDC机房内网的上网网关[natPOSTROUTING])
2)服务器防火墙功能(适合IDC机房具有外网IP的服务器)(主要是filterINPUT的控制)
3)把外部IP及端口映射到局域网内部(可以一对一IP映射,也可以针对某一个端口映射)也可能是IDC把网站的外网VIP及网站端口映射到负载均衡器上(硬件防火墙)。(natPREROUTING)
4)办公路由器+网关功能(zebra路由+iptables过滤及NAT+squid正向透明代理)80+ntop/iftop/iptraf流量查看+tc/cbq流量控制限速
5)邮件的网关
iptables防火墙的应用
1)主机防火墙
2)网关的应用(IP映射,端口映射)
3)过滤信息,监控限制流量及员工上网行为(squid(正向代理缓存加过滤)+ntop(图形流量监控)+通常(流量限制)+iptraf/iftop(流量查看))
如果IPTABLES的服务器升级内核可以实现类似squid的过滤功能
4)网关装杀毒软件监听9999端口,(网关杀毒)
iptables-APREROUTING-ieth0-d211.167.253.109-ptcp-mtcp--dport25-jDNAT--to-destination192.168.10.6:9025
5)结合zebra配置企业级路由器
映射多个外网IP上网
iptables-tnat-APOSTROUTING-s10.0.0.1/255.255.255.0-oeth0-jSNAT--to-source124.42.60.11-124.42.60.16 iptables-tnat-APOSTROUTING-s172.16.1.0/255.255.255.0-oeth0-jSNAT--to-source124.42.60.103-124.42.60.106 #iptables-tnat-Apostrouting-S192.168.1.0/22-oeth0-jSNAT--to-source10.0.0.241-10.0.0.249
问题:
1、2000人被封
2、可用65535端口资源有限
企业案例:ip_conntrack:tablefull,droppingpacket.的错误提示
以下是我的生产环境的某个服务器的配置:
net.ipv4.tcp_fin_timeout=2 net.ipv4.tcp_tw_reuse=1 net.ipv4.tcp_tw_recycle=1 net.ipv4.tcp_syncookies=1 net.ipv4.tcp_keepalive_time=600 net.ipv4.ip_local_port_range=400065000 net.ipv4.tcp_max_syn_backlog=16384 net.ipv4.tcp_max_tw_buckets=36000 net.ipv4.route.gc_timeout=100 net.ipv4.tcp_syn_retries=1 net.ipv4.tcp_synack_retries=1 #5、dmesg里面显示ip_conntrack:tablefull,droppingpacket.的错误提示.如何解决。 #以下参数是对iptables防火墙的优化,防火墙不开会提示,可以忽略不理。 c58: net.ipv4.ip_conntrack_max=25000000 net.ipv4.netfilter.ip_conntrack_max=25000000 net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=180 net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait=120 net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait=60 net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait=120 ################################################################ C64: net.nf_conntrack_max=25000000 net.netfilter.nf_conntrack_max=25000000 net.netfilter.nf_conntrack_tcp_timeout_established=180 net.netfilter.nf_conntrack_tcp_timeout_time_wait=120 net.netfilter.nf_conntrack_tcp_timeout_close_wait=60 net.netfilter.nf_conntrack_tcp_timeout_fin_wait=120
调整内核参数/etc/sysctl.conf后,需执行/sbin/sysctl-p使得修改生效。
强调:如果并发比较大,或者日PV多的情况下,开启防火墙要注意,很可能导致网站访问缓慢
大并发(并发1万,PV日3000万)要么购买硬件防火墙,要么不开iptables防火墙
iptables参数简介
-n数字
-L列表
-F清除所有规则,不会处理默认规则
-X删除用户自定义的链
-Z链的计数器清零
-A添加规则到指定链的结尾,最后一条
-I添加规则到指定链的开头,第一条
-t指定表,也可以不指定默认是filter
-p指定协议(all.tcp,udp.icmp)默认all
-P设置默认规则
-s指定源地址
-d目的地址
--dport指定端口
-j处理的行为ACCPET接收、DROP丢弃、REJECT拒绝
-iinput匹配进入的网卡接口
-ooutput匹配出去的网卡接口
-mstate--state匹配网络状态
更多关于linux防墙iptables详细介绍请查看下面的相关链接
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。