iptables的主要功能是实现对网络数据包进出设备及转发的控制。当数据包需要进入设备、从设备中流出或者经该设备转发、路由时,都可以使用iptables进行控制。iptables由五个表table和五个链chain以及一些规则组成:
五链:
INPUT,OUTPUT,FORWARD,PREROUTING,POSTROUTING
五链解释:
INPUT, 进内核(包含:filter,mangle)
OUTPUT, 出内核(包含:filter,nat,mangle,raw)
FORWARD, 转发(包含:filter,mangle)
PREROUTING,前置路由检查(包含:nat,mangle,raw)
POSTROUTING 后置路由检查(包含:nat,mangle,raw)
五表:
security -->raw-->mangle-->nat-->filter
五表解释:
filter:过滤规则表,根据预定义的规则过滤符合条件的数据包,默认表
nat:network address translation 地址转换规则表
mangle:修改数据标记位规则表
raw:关闭启用的连接跟踪机制,加快封包穿越防火墙速度
security:用于强制访问控制(MAC)网络规则,由Linux安全模块(如SELinux)实现。
三种报文流向:
流入本机:PREROUTING --> INPUT–>用户空间进程
流出本机:用户空间进程 -->OUTPUT–> POSTROUTING
转发:PREROUTING --> FORWARD --> POSTROUTING
iptables/firewalld/nftable 实现主机防火墙。5000-6000端口仅192.168.0.0/24网段内的主机访问:
iptables:
iptables -A INPUT 192.168.0.0./24 -p tcp -m multiport --dports 5000:6000 -j ACCEPT
firewalld:
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.0.0/24" port protocol="tcp" port="5000:6000" accept"
nftable:
nft add rule ip filter INPUT ip saddr 192.168.0.0/24 tcp dport {5000-6000} ct state new,established counter accept