iptables规则配置

本文介绍Linux下iptables防火墙的基本概念,包括netfilter架构、iptables命令语法及常见应用场景,如开放或禁止端口、地址转换等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、netfilter/iptables概念说明

netfilter: 是集成在linux内核中的模块,对数据包进行过滤、转发等
iptables: 用于管理netfilter模块(netfilter中的表和链)

iptables表 - 四张表 (表中有什么链是固定的)

raw表prerouting链、output链
mangle表prerouting链、postrouting链、input链、forward链、output链
nat表prerouting链、postrouting链、output链
filter(默认表)input链、forward链、output链

安装iptables

#yum install -y iptables-devel iptables#yum install iptables* -y
[root@localhost ~]# rpm -qa|grep iptables
iptables-services-1.4.21-34.el7.x86_64
iptables-devel-1.4.21-34.el7.x86_64
iptables-1.4.21-34.el7.x86_64
iptables-utils-1.4.21-34.el7.x86_64

二、iptables命令语法

语法:iptables table command match target/jump
table 参数:
-t filter 指定filter表
-t net 指定net表
-t mangle 指定mangle表
-t raw 指定raw表

command 参数:
-A 顺序添加,添加一条新规则
-D 删除
-R 修改、删除一条新规则,-D后面加一个数字表示删除哪行
-I 插入一条新规则,-I后面加一个数字,表示插入到哪行
-L 查看
-F 清空链中的所有规则
-Z 清除链中使用的规则
-N 以数字的方式显示,前面一般加-L
-X 删除一个自定义链,删除这前要保证此链是空的,而且没有被引用
-P 大写P 设置默认规则
-E 重命令链

match 参数(隐含匹配):
-p 协议,tcp udp icmp,以下四行为-p后面跟的内容
–sport 指定源端口
–dport 指定目标端口
-s 源地址
-d 目的地址
-i 数据包进入的网卡
-o 数据包出口的网卡
-f 文件

动作:
target/jump参数:
-j ACCEPT 允许通过
-j DROP 删除
-j REJECT 不允许通过

DROP直接丢掉
ACCEPT 允许通过
REJECT 丢掉,但是回复信息
LOG --log-prefix"说明信息,自己随便定义",记录日志
SNAT 源地址转换
DNAT 目标地址转换
REDIRECT 重定向
MASQUERAED 地址伪装

扩展匹配:
-m state --state 匹配状态的
-m mutiport --source-port 端口匹配,指定一组端口
-m limit --limit 3/minute 每三分钟一次
-m limit --limit-burst 5 只匹配5个数据包
-m string --string --algo bm|kmp --string"xxx" 匹配字符串
-m time --simestart 8:00 --timestop 1200 表示从哪个时间到哪个时间
-mtime–days 表示哪天
-m mac --mac-source xx:xx:xx:xx:xx:xx 匹配源mac地址
-m layer7 --l7proto qq 表示匹配腾讯QQ的

三、案例 - 开放/禁止端口

开放80端口

[root@localhost ~]# iptables -t filter -A INPUT -m tcp -p tcp --dport 80 -j ACCEPT

允许ping

#iptables -p icmp -j ACCEPT

禁止192.168.1.110访问本机所有端口

-A INPUT -S 192.168.1.110 -j DROP

允许此MAC机器访问22端口

-A INPUT -m mac --mac-source f8:43:41:7e:d6:96 -p tcp --dport 22 -j ACCEPT

限制14:00至18:00可以访问80端口

-A INPUT -m time --timestart 14:00 --timestop 18:00 -p tcp --dport 80 -j ACCEPT

四、转发

查看转发规则

iptables -L -n -t nat

将目标为192.168.1.108(本机) 80端口的数据包转到192.168.1.109的8080端口

[root@localhost ~]# iptables -t nat -A PREROUTING -p tcp -m tcp -d 192.168.1.108 --dport 80 -j DNAT --to-destination 192.168.1.109:8080
[root@localhost ~]# iptables -t nat -A POSTROUTING -p tcp -m tcp -d 192.168.1.109 --dport 8080 -j SNAT --to-source 192.168.1.108
注,--to-source 192.168.1.108后面最好不要加:80,加了会返回时容易超时

开启转发功能
#echo 1 >/proc/sys/net/ipv4/ip_forward[root@localhost subsys]# vim /etc/sysctl.conf 
net.ipv4.ip_forward = 1
#sysctl -p

允许伪装

#iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE

把默认INPUT链规则设置为允许

#iptables -t filter -P INPUT ACCEPT

把默认转发链规则设置为允许

#iptables -P FORWARD ACCEPT
要save保存

------------------------end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值