一些例子。

 设置链的默认规则

iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

删除所有规则和多余的链

iptables -t nat -F
iptables -t mangle -F
iptables -F
iptables -X

查看现有规则

iptables -L -v -n --line-number

-L 列出规则
-v 详细模式
-n 不查找IP的reverse DNS,以免节约时间。不然显示结果的时候会比较卡。
--line-number 显示行号

通用规则

放行本机访问本地端口,放行已建立链接的数据包,丢弃未知数据包。

iptables -I INPUT -i lo -j ACCEPT
iptables -I INPUT -m conntrack --ctstate RELATED,ESTABLISHED --jump ACCEPT
iptables -I INPUT -m conntrack --ctstate INVALID --jump DROP
  • -m conntrack --ctstate-m state --state有什么区别?
    后者已经被前者取代,在新版本的操作系统中,后者会直接被转换为前者。
  • ctstate 有哪些?是什么意思?
    NEW,这个数据包想开启一个连接。
    RELATED,这个数据包想开启一个连接,且其他已知连接相关。
    ESTABLISHED,已建立连接的数据包。
    INVALID,找不到与其相关的连接。

允许IP和IP段

iptables -I INPUT --protocol tcp --src 1.1.1.1 --jump ACCEPT
iptables -I INPUT --protocol all --src 1.1.1.1/24 --jump ACCEPT

开放指定端口

一条命令可以开启1个端口,也可以同时开启多个端口。

iptables -I INPUT -p tcp --dport 80 --jump ACCEPT
iptables -I INPUT -p tcp -m multiport --dports http,https --jump ACCEPT

允许指定协议

iptables -I INPUT --protocol tcp --dport 80 --jump ACCEPT
iptables -I INPUT --protocol udp --dport 80 --jump ACCEPT

新增规则

# 把规则插入最顶端
iptables -I INPUT --protocol tcp --dport 80 --jump ACCEPT

# 将新规则插入到2的位置
iptables -I INPUT 2 --protocol tcp --dport 80 --jump ACCEPT

删除规则

删除INPUT链第二条规则
iptables -D INPUT 2

删除指定规则
iptables -D INPUT --protocol tcp --dport 80 --jump ACCEPT
文章目录