INPUT    # 进入

FORWARD  # 转发

OUTPUT   # 出去

ACCEPT   # 将封包放行

REJECT   # 拦阻该封包

DROP     # 丢弃封包不予处理

-A     # 在所选择的链(INPUT等)末添加一条或更多规则

-D       # 删除一条

-E       # 修改

-p     # tcp、udp、icmp0相当于所有all!取反

-P       # 设置缺省策略(与所有链都不匹配强制使用此策略)

-s     # IP/掩码(IP/24)主机名、网络名和清楚的IP地址 !取反

-j     # 目标跳转,立即决定包的命运的专用内建目标

-i     # 进入的(网络)接口 [名称] eth0

-o     # 输出接口[名称] 

-m     # 模块

--sport  # 源端口

--dport  # 目标端口

iptables-restore < 规则文件        # 导入防火墙规则

/etc/init.d/iptables save          # 保存防火墙设置

iptables -t filter -D INPUT -p icmp -j REJECT  #删除入站icmp都会被拒绝的链条

iptables -t filter -I INPUT -p icmp -j REJECT  #-I在链表开头插入,-A在链表之后添加

iptables -D INPUT 1   //删除INPUT第一条规则

iptables  -A  OUTPUT  -p icmp -j REJECT   #添加链条OUTPUT禁止icmp出站

iptables -F    #清除所有表的所有连的规则

iptables -t nat -F  #指定清除NAT表的链规则


iptables  -t filter -P FORWARD DROP    #filter转发默认被丢掉


iptables  -t filter -P FORWARD DROP    #filter入站默认被丢掉


iptables -A FORWARD -p icmp -j ACCEPT   #"!"取反,转发除icmp外所有包。


iptables -I INPUT -s 10.20.30.1 -j drop   #丢弃来自10.20.30.1的包


iptables -I OUTPUT -d 8.8.8.8 -j drop  #丢弃目标地址为8.8.8.8的数据包


iptables -I INPUT -s 192.168.26.0/24 -j REJECT   #拒绝来自26网段的ip


iptables -A FORWARD -s 192.168.26.0 -j DROP   #丢弃来自26网段的数据包


iptables -A INPUT -p tcp --dport 80 -j ACCEPT #开放80端口


iptables -A INPUT -p tcp --dport 20:22 -j ACCEPT  #开放20至22端口的tcp数据传输


iptables -A FORWARD -s 192.168.4.0/24 -p udp --dport 53 -j ACCERT #接受来自24网段的在53端口的udp数据转发


iptables -A FORWARD -d 192.168.24.0/24 -p udp --sport 53 -j ACCPT #接受目标24网段的在53端口的udp数据转发


iptables -I INPUT -i eth0 -p tcp --tcp-flags SYN,RST,ACK SYN -j DROP    #TCP丢弃TCP标示符SYN,RST,ACK SYN

iptables -A INPUT -p tcp -m multiport --dport 25,80,110,143 -j ACCEPT   #开放多个端口


iptables -I FORWARD -p tcp -m iprange --src-range 192.168.21.21-192.168.21.180 -j ACCEPT    #ip地址匹配


iptables -A INPUT -m mac --mac-source 00:0c29:c0:55:3f -j DROP    #mac地址匹配


iptables -A FORWARD -m state --state NEW -p tcp ! --syn -j DROP   #禁止转发与正常TCP连接无关的非--syn请求数据包


iptables -I INPUT -p tcp -m multiport --dport 80 -j ACCEPT

iptables -I INPUT -p tcp -m state --state ESTALISHED -j ACCEPT

iptables -p INPUT DROP

#除了请求80端口的数据包全都丢掉



iptables -t nat -A POSTROUTING -s 192.168.22.0/24 -o eth0 -j SNAT --to 192.168.1.118   #共享上网或者***转发


echo 1 > /proc/sys/net/ipv4/ip_forward       # 在内核里打开ip转发功能


route add -net 10.10.20.0 netmask 255.255.255.0 gw 10.10.20.111     # 内网需要添加默认网关,并且网关开启转发


iptables -t nat -A PREROUTING -d 192.168.10.158  -p tcp --dport 9999 -j DNAT --to 10.10.20.55:22   #ssh转发


iptables -t nat -A PREROUTING  -i eth0  -d 22.22.22.123  -p tcp --dport 80  -j DNAT --to-destination 192.168.1.100  #发布服务器


iptables -t nat -nL                # 查看转发