iptables在表顶部插入规则(Linux上的PREPEND规则)

时间:2020-01-09 10:41:41  来源:igfitidea点击:

如何将iptables规则插入给定表格的顶部,例如过滤器表格INPUT链。
如何在Linux操作系统的过滤器表顶部添加iptables规则?

iptables是用于IPv4数据包过滤和NAT的Linux管理工具。
可以使用iptables/ip6tables来设置,管理和检查Linux内核中的IPv4和IPv6数据包过滤器规则表。
本教程显示如何使用Iptables在表顶部插入规则。

如何用行号列出iptables规则

只需使用以下语法:

sudo iptables -t filter -L INPUT --line-numbers -n
sudo iptables -t filter -L OUTPUT --line-numbers -n
sudo iptables -t filter -L FORWARD --line-numbers -n
sudo iptables -t nat -L --line-numbers -n

iptables在表顶部插入规则Linux语法

iptables允许您如下添加或添加或插入或替换防火墙规则。

iptables将防火墙规则追加到所选链的末尾

语法为:

iptables -A chain firewall-rule

例如,当您使用-A--append开关时,将规则添加到链的末尾,例如INPUT,FORWARD等:

## append rule to INPUT chain ##
sudo iptables -A INPUT -i eth0 -j ACCEPT
sudo iptables -A INPUT -i eth0 -d 192.168.1.254 -j ACCEPT
 
## append rule to FORWARD chain ## 
sudo iptables -A FORWARD -o virbr0 -d 192.168.122.42 -j ACCEPT
sudo iptables -A FORWARD -m state -s 192.168.1.0/24 -d 192.168.122.0/24 --state NEW,RELATED,ESTABLISHED -j ACCEPT

使用以下命令进行验证:

sudo iptables -t filter -L INPUT --line-numbers -n -v
sudo iptables -t filter -L FORWARD --line-numbers -n -v

输出示例:

Chain INPUT (policy ACCEPT 6 packets, 518 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 ACCEPT     tcp  --  lxdbr0 *       0.0.0.0/0            0.0.0.0/0            tcp dpt:53 /* generated for LXD network lxdbr0 */
2      259 16615 ACCEPT     udp  --  lxdbr0 *       0.0.0.0/0            0.0.0.0/0            udp dpt:53 /* generated for LXD network lxdbr0 */
3     1517  498K ACCEPT     udp  --  lxdbr0 *       0.0.0.0/0            0.0.0.0/0            udp dpt:67 /* generated for LXD network lxdbr0 */
4       36  2674 ACCEPT     udp  --  virbr0 *       0.0.0.0/0            0.0.0.0/0            udp dpt:53
5        0     0 ACCEPT     tcp  --  virbr0 *       0.0.0.0/0            0.0.0.0/0            tcp dpt:53
6        4  1312 ACCEPT     udp  --  virbr0 *       0.0.0.0/0            0.0.0.0/0            udp dpt:67
7        0     0 ACCEPT     tcp  --  virbr0 *       0.0.0.0/0            0.0.0.0/0            tcp dpt:67
8        0     0 ACCEPT     all  --  eth0   *       0.0.0.0/0            0.0.0.0/0

iptables将防火墙规则放在所选链的末尾

您需要使用以下语法:

iptables -I chain [rule-number] firewall-rule

例如:

sudo iptables -I INPUT 1 -i eth0 -j ACCEPT

上面的命令会将规则作为给定的规则编号插入INPUT链中。
因此,如果规则编号为1,则将一个或多个规则插入到链的开头。
如果未指定规则编号,这也是默认值。

示例:iptables在表顶部插入规则

我要在过滤器表和FORWARD链中插入以下规则:

sudo iptables -I FORWARD 1 -m state -s 192.168.1.0/24 -d 192.168.122.0/24 --state NEW,RELATED,ESTABLISHED -j ACCEPT

验证一下:

sudo iptables -t filter -L FORWARD --line-numbers -n -v

表顶部的Linux Iptables插入/前置规则命令摘要

您需要使用以下语法:

sudo iptables -I chain [rule-number] firewall-rule

要查看规则:

sudo iptables -t filter -L chain --line-numbers -n -v

其中:

  • -I:在给定的规则编号处插入规则
  • -t:指定数据包匹配表,例如nat,filter,security,mangle和raw。
  • -L:给定数据包匹配表的特定链(例如INPUT/FORWARD/OUTPUT)的列表信息
  • --line-numbers:请参阅带有行号的防火墙规则
  • -n:不要使用dns解析名称,即仅显示IP地址和端口号的数字输出。
  • -v:详细输出。此选项使list命令显示接口名称,规则选项(如果有)和TOS掩码