iptables原理解析及使用方法:
- iptables基础概念:
- iptables详解英文原稿:
- iptables常用实例:
iptables一键配置脚本
# cat iptables.sh#!/bin/bashipt="/usr/sbin/iptables"#默认策略:禁止所有进来的包、放行转发的包和所有出去的包$ipt -P INPUT DROP$ipt -P FORWARD ACCEPT$ipt -P OUTPUT ACCEPT#清空原有规则:$ipt -F#放行指定状态的包(必须有)!!!否则将断开所有非指定ip远程连接$ipt -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT#对中控机开放22端口,两种格式,如果未使用-m参数,第二中格式将导致无法进行远程连接$ipt -A INPUT -s 192.168.228.129/32 -p tcp --dport 22 -j ACCEPT#格式2:$ipt -A INPUT -s 192.168.228.129/32 -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT#对内网开放所有端口$ipt -A INPUT -s 123.110.228.242/32 -p tcp --dport 0:65535 -j ACCEPT#允许本机访问外网,不允许任何网络访问本机#$ipt -A INPUT -p icmp --icmp-type 8 -j DROP#放行ping命令使用的端口$ipt -A INPUT -p icmp -j ACCEPT$ipt -A INPUT -i lo -j ACCEPT
如果要使以上规则重启依然生效,需要将脚本的执行命令写入/etc/rc.local文件中:
/bin/bash /usr/local/iptables.sh
或者,将以上配置放入iptables的配置文件:
# Firewall configuration written by system-config-firewall# Manual customization of this file is not recommended.*filter# drop all input packages except rules follow:INPUT DROP [0:0]# allow all forward packages:FORWARD ACCEPT [0:0]# allow all output packages:OUTPUT ACCEPT [0:0]# accept state=ESTABLISHED or state=RELATED input connection-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT#放行ping使用的端口-A INPUT -p icmp -j ACCEPT-A INPUT -i lo -j ACCEPT#对中控机开放22端口-A INPUT -s 192.168.228.129/32 -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT#对内网开放所有端口-A INPUT -s 36.110.16.242/32 -p tcp --dport 0:65535 -j ACCEPT#允许本机访问外网#-A INPUT -p icmp --icmp-type 8 -j DROP
使用iptables对指定ip限速
#对外网下载限速1Mbit/siptables -A OUTPUT -d 0.0.0.0/0 -m limit --limit 60/s --limit-burst 30 -j ACCEPTiptables -A OUTPUT -d 0.0.0.0/0 -j DROP
说明:iptables是根据每秒的数据包数量来管理数据流入流出速度的,关于数据包量和Mbit的换算规则请参考: (没看明白,具体怎么搭配还需要自己去测试)。需要注意的是(纠正链接中的一个错误解释)“--limit-burst”决定了下载速度的大小,而“--limit”的值是本地每秒能产生的供应“--limit-burst”使用的包的数量,保证其大于等于“--limit-burst”就可以保证下载速度。
参考:
关于limit参数: 关于-m参数:注意事项:
关于iptables的默认策略(一定要注意!!!)。
- iptables的默认策略(如,iptables -P INPUT DROP),只能通过“iptables -P INPUT ACCEPT”来清除,iptables -F对其不生效。
- 一定要在执行“iptables -F”命令之前先执行“iptables -P INPUT ACCEPT”,否则将断开远程连接,酿造惨案!!!
关于keepalived服务防火墙
如果配置可keepalived高可用服务,还需要针对该服务单独配置防火墙规则:
#放行keepalived:-A INPUT -i em1 -d 10.0.0.0/8 -p vrrp -j ACCEPT-A OUTPUT -o em1 -d 10.0.0.0/8 -p vrrp -j ACCEPT
参考: