1. 系统底层实现流量控制,数据包控制的软件是 netfilter
2. 我们通过iptables命令,实现规则的修改
10 20
简单明了,深入浅出
掌握主要的
filter表
- 以及表对应的几个链
- 对应链的规则添加
nat表
- 以及表对应的几个链
- 对应链的规则添加
1. 查看防火墙规则
-n 不做主机名解析,只显示,ip,port,更直观
-L 列出所有的链,的语句 (5条链),默认只显示filter表,的3个链的规则
iptables -nL
# chain 链(一堆规则的集合,名字,链)
[root@m-61 ~]#iptables -nL
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
思路,就是你的规则
已知,1号规则,是拒绝10网段的,且访问的是80端口的数据包
提问,如何让10.0.0.1,可访问这个80端口?
1. 清空规则
2. 加规则,改规则(没有改一说,只有删除,重建一说)
怎么加?注意防火墙,前后匹配的语法
思考5分钟,发弹幕,统一记录
陈亮亮
加在这个规则前面
杨松麟
添加 允许10.0.0.0/24 通过80端口在最前面
# -I 再规则最前面,写入新的
# -A 再最后面写入新规则
iptables -I INPUT -s 10.0.0.0/24 -p tcp --dport 80 -j ACCEPT
#删除松林写的规则
[root@m-61 ~]#iptables -D INPUT 1
[root@m-61 ~]#iptables -nL --line-num
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 DROP tcp -- 10.0.0.0/24 0.0.0.0/0 tcp dpt:80
Chain FORWARD (policy ACCEPT)
num target prot opt source destination
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
[root@m-61 ~]#
# 加入永飞写的规则
# 还原环境,写入2个规则语句即可
# -A -I 参数
iptables -I INPUT -s 10.0.0.1 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -s 10.0.0.0/24 -p tcp --dport 80 -j DROP
刘永飞
加一条允许10.0.0.1访问80端口的规则加到号码1上面
iptables -I INPUT -s 10.0.0.1 -p tcp --dport 80 -j ACCEPT
[root@m-61 ~]#iptables -nL
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- 10.0.0.1 0.0.0.0/0 tcp dpt:80
DROP tcp -- 10.0.0.0/24 0.0.0.0/0 tcp dpt:80
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
[root@m-61 ~]#
[root@m-61 ~]#
#给61机器,运行80端口应用,走INPUT链
# 已验证,10.0.0.1是可以访问的
# 验证,永飞这个规则,是单独给 10.0.0.1 访问80的放行规则
# 如何让51机器也可以通过80
# 删除规则
# 添加规则(办法可能会有很多)
# 1. 针对51机器的规则
# 2. 针对51机器所处网段的规则
#
[root@m-61 ~]#iptables -nL
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- 10.0.0.1 0.0.0.0/0 tcp dpt:80
DROP tcp -- 10.0.0.0/24 0.0.0.0/0 tcp dpt:80
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
[root@m-61 ~]#
[root@m-61 ~]#touch 超哥666
[root@m-61 ~]#
[root@m-61 ~]#
[root@m-61 ~]## 完全看懂 51机器不通,刷1111
[root@m-61 ~]#
网络过滤器
4表5链
filter表,数据包过滤
nat表,网络地址转发
=======================================
mangle表,拆解报文,修改报文
raw表,取消链路跟踪
一个简单的说法,你部署了一个nginx服务器,如何确认用户可以访问到nginx,以及nginx如何可以给用户返回数据?我们以前都是直接关闭了防火墙功能。
开启防火墙后会是如何?
[root@yuanlai-school ~]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
会发现这里有3个chain,表示三个链,链是干啥的?
图解
网络过滤器
input
output
刚才我们描述的关系,是很明确的,源地址、目的地
10.0.0.1:32447 > 10.0.0.7:80
可以用netstat查看tcp连接
但有时候,客户端的报文请求目标地址,可能不是当前机器啊,而是另一台机器,还好netfilter支持forward转发数据包的功能。
因此就引入了iptables的其他三个链,关卡
路由前----prerouting链
转发链---forward链
路由后----postrouting链
5条链的作用
先记住 route -n 可以查看网络关卡即可