# cat iptables.sh
#!/bin/bash
ipt="/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
#对外网下载限速1Mbit/s
iptables -A OUTPUT -d 0.0.0.0/0 -m limit --limit 60/s --limit-burst 30 -j ACCEPT
iptables -A OUTPUT -d 0.0.0.0/0 -j DROP
说明:iptables是根据每秒的数据包数量来管理数据流入流出速度的,关于数据包量和Mbit的换算规则请参考:https://www.zhihu.com/question/37320333 (没看明白,具体怎么搭配还需要自己去测试)。需要注意的是(纠正链接中的一个错误解释)“--limit-burst”决定了下载速度的大小,而“--limit”的值是本地每秒能产生的供应“--limit-burst”使用的包的数量,保证其大于等于“--limit-burst”就可以保证下载速度。
参考: 关于limit参数:http://blog.sina.com.cn/s/blog_6e5e78bf0101tuq9.html 关于-m参数:https://my.oschina.net/u/3497124/blog/1361009
关于iptables的默认策略(一定要注意!!!)。
如果配置可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
参考:https://www.cnblogs.com/tugeler/p/6620300.html
(adsbygoogle = window.adsbygoogle || []).push({});