【iptables 实战】03 自定义链

一、新建一个自定义链

当前的机器IP为:10.1.0.10

自定义链IN_WEB,拒绝指定源ip的报文

bash 复制代码
[root@test-c ~]# iptables -t filter -I IN_WEB -s 10.1.0.11 -j REJECT
[root@test-c ~]# iptables -t filter --line -nvL IN_WEB
Chain IN_WEB (0 references)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 REJECT     all  --  *      *       10.1.0.11            0.0.0.0/0            reject-with icmp-port-unreachable

二、引用自定义链

定义INPUT规则,引用 IN_WEB规则

bash 复制代码
[root@test-c ~]# iptables -I INPUT -p icmp -j IN_WEB
[root@test-c ~]# iptables -nvL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 IN_WEB     icmp --  *      *       0.0.0.0/0            0.0.0.0/0  
 Chain IN_WEB (1 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 REJECT     all  --  *      *       10.1.0.11            0.0.0.0/0            reject-with icmp-port-unreachable

可以看到IN_WEB链,这个时候references的数量为1了,表示有链在引用

bash 复制代码
[root@localhost ~]# ping 10.1.0.10
PING 10.1.0.10 (10.1.0.10) 56(84) bytes of data.
From 10.1.0.10 icmp_seq=1 Destination Port Unreachable

ping 10.1.0.10,可以看到,此时不通了

三、删除自定义链

3.1 先尝试清空IN_WEB,清空后,发现依然有引用。此时再ping10.1.0.10,能ping通了

bash 复制代码
[root@test-c ~]# iptables -F IN_WEB
[root@test-c ~]# iptables -nvL 
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    5   420 IN_WEB     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           
Chain IN_WEB (1 references)
 pkts bytes target     prot opt in     out     source               destination    

3.2 还原刚才清空的自定义链

bash 复制代码
[root@test-c ~]# iptables -t filter -I IN_WEB -s 10.1.0.11 -j REJECT

3.3 删除自定义链

使用"-X"选项可以删除自定义链,但是删除自定义链时,需要满足两个条件:

1、自定义链没有被任何默认链引用,即自定义链的引用计数为0。

2、自定义链中没有任何规则,即自定义链为空。

那么,我们来删除自定义链WEB试试。

bash 复制代码
[root@test-c ~]# iptables -X IN_WEB
iptables v1.8.4 (nf_tables):  CHAIN_USER_DEL failed (Device or resource busy): chain IN_WEB

删除失败,因为有引用

bash 复制代码
[root@test-c ~]# iptables -nvL INPUT --line
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        7   588 IN_WEB     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           
[root@test-c ~]# iptables -D INPUT 1
[root@test-c ~]# iptables -X IN_WEB
iptables v1.8.4 (nf_tables):  CHAIN_USER_DEL failed (Device or resource busy): chain IN_WEB

发现还是删除失败

我们清空IN_WEB的规则以后,再尝试删除试下

bash 复制代码
[root@test-c ~]# iptables -F IN_WEB
[root@test-c ~]# iptables -X IN_WEB

删除成功了。可能是新版本的删除规则链,要清空规则后,才能删除

相关推荐
未来之窗软件服务14 分钟前
幽冥大陆(六十五) PHP6.x SSL 文字解密—东方仙盟古法结界
网络·数据库·ssl·加解密·仙盟创梦ide·东方仙盟
小鹏linux15 分钟前
【linux】进程与服务管理命令 - pkill
linux·运维·服务器
ChenXinBest23 分钟前
一次firewalld和docker冲突问题排查
linux·docker
Henry Zhu12325 分钟前
VPP中DHCP插件源码深度解析第二篇:DHCPv4客户端实现详解(下)
服务器·c语言·网络·计算机网络·云原生
墨白曦煜27 分钟前
计算机组成原理:大端序与小端序的原理与权衡
linux·windows
写代码的橘子n28 分钟前
IPv6协议深入学习指南(从易到难)
网络·计算机网络·ipv6
Knight_AL31 分钟前
HTTP 状态码一览:理解 2xx、3xx、4xx 和 5xx 分类
网络·网络协议·http
网硕互联的小客服33 分钟前
人工智能服务器是什么,人工智能服务器的有什么用?
运维·服务器·网络·安全
深圳市恒讯科技33 分钟前
美国云服务器和美国物理服务器怎么选?
运维·服务器
老兵发新帖35 分钟前
ubuntu Nano常用指令
linux·运维·ubuntu