iptables 规则

目录

一、四表五链

1.四表

2.五链

二、参数说明

1.指定规则的位置

2.数据包的过滤条件

3.数据包的处理机制

三、示例

1.ipset集合

2.iptables规则

3.iptables实现地址转发


一、四表五链

1.四表

filter	# 决定数据包是否可以通行,不指定表名时为默认表。

nat		# 决定数据包是否可以转发(源地址或目标地址转换)

mangle	# 进行修改

raw		# 进行数据包标记跟踪

2.五链

# 以下三个决定数据包是否通行
INPUT		# 在进来之前的入口处进行数据包过滤
OUTPUT		# 在出去之前的出口处进行数据包过滤
FORWARD		# 数据包转发

# 以下两个决定数据包是否进行源地址和目标地址修改
PREROUTING	# 路由转发前路径
POSTROUTING	# 路由转发后

二、参数说明

1.指定规则的位置

    -A|-I        # 添加防火墙规则,-A在最后添加,-I在首行或指定行添加

    -t 表名      # 指定规则写入到哪个表,不指定表名时,filter为默认表

2.数据包的过滤条件

	-i|-o	            # 指定数据包的入站和出站网卡
	-s|-d	            # 指定数据包的来源地址或目标地址
	--sport | --dport	# 匹配数据包的源端口或目标端口(必须指定协议类型)
	-p 协议		        # 协议可以独立出现,写端口必须作为辅助条件出现,而且要写在端口前面

3.数据包的处理机制

	-j	ACCEPT|REJECT|DROP      # 放行|拒绝|丢弃
		DNAT|SNAT
		DNAT --to-destination 	# $ip:$port
		SNAT --to-source		# $ip

        MASQUERADE              # 伪装源地址,确保返回流量能正确返回容器

三、示例

1.ipset集合

#创建ipset fsipsetlist集合
ipset create fsipsetlist hash:net
#删除集合
ipset destroy fsipsetlist
#删除所有集合
ipset destroy fsi
#向fsipsetlist集合添加ip
ipset add fsipsetlist 10.88.96.66
#删除fsipsetlist集合中的IP
ipset del fsipsetlist 192.168.1.0/24
#查看fsipsetlist集合中有哪些IP
ipset list fsipsetlist
#清空集合
ipset flush fsipsetlist
#查看有哪些集合
ipset list
ipset list -n
#将集合添加为防火墙规则
#当源ip在fsipsetlist集合中,并且目的端口为80才允许进入
#当目的IP在fsipsetlist集合中,并且源端口为80的请求,才允许出。
iptables -I INPUT -p tcp --dport 80 -m set  --match-set fsipsetlist src -j ACCEPT
iptables -I OUTPUT -p tcp --sport 80 -m set  --match-set fsipsetlist dst -j ACCEPT

2.iptables规则

#查看防火墙规则
# filter、nat、mangle、ram
# INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING
iptables -t nat -nvL --line-number
#添加规则
iptables -t $表名 -I INPUT -s 10.88.112.0/25 -p tcp --dport 62222 -j ACCEPT
iptables -t $表名 -I OUTPUT -d 10.88.112.0/25 -p tcp --sport 62222 -j ACCEPT
#设置防火墙规则默认为拒绝
iptables -P INPUT DROP
iptables -P OUTPUT DROP
#删除规则
iptables -nvL --line-number
iptables -t nat -D PREROUTING 1
#备份iptables规则
iptables–save > /etc/iptables/iptables.rules 

#恢复iptables规则
#注意:恢复时,如果原规则中有ipset集合,需要先创建集合,否则会报错失败!!!
iptables–restore < /etc/iptables/iptables.rules

3.iptables实现地址转发

#入站流量:
raw表(PREROUTING链)-->mangle表(PREROUTING链)-->nat表(PREROUTING链)-->filter表(INPUT链)

#出站流量:
raw表(OUTPUT链)-->mangle表(OUTPUT)-->nat表(OUTPUT链)-->filter表(OUTPUT表)-->nat表(POSTROUTING链)
#物理机发出47.103.9.124:1883请求,重定向到10.88.0.140:1883
iptables -t nat -I OUTPUT -p tcp --dport 1883 --destination 47.103.9.124 -j DNAT --to-destination 10.88.0.140:1883
#容器发起访问,重定向容器目的地址。
sudo iptables -t nat -A PREROUTING -p tcp --dport 1883 --destination 47.103.9.124 -j DNAT --to-destination 10.88.0.140:1883
#MASQUERADE伪装源地址,确保返回流量能正确地回送到服务器
#这条规则在启动docker后已经有了,无需手工添加
sudo iptables -t nat -A POSTROUTING -p tcp -d 10.88.0.140 --dport 1883 -j MASQUERADE
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值