iptables初见

1 认识进站, 出站 , 转发请求

1.1 入站请求

https://img2022.cnblogs.com/blog/2672061/202201/2672061-20220126000830335-534279690.png

客户端发出请求, 数据包流向如图, iptables规则过滤进站数据包请求

1.2出站请求

https://img2022.cnblogs.com/blog/2672061/202201/2672061-20220126000928893-1325652291.png

1.3转发请求

https://img2022.cnblogs.com/blog/2672061/202201/2672061-20220126001037089-100715729.png https://img2022.cnblogs.com/blog/2672061/202201/2672061-20220126001137786-1515311084.png https://img2022.cnblogs.com/blog/2672061/202201/2672061-20220126001219713-912452469.png)

2 iptables的四表五链

  • 当一个数据包进入网卡时 , 首先进入PREROUTING链, 根据路由表中的数据判断进入FORWARD或INPUT链 .
  • 如果数据包是进入本机的, 就会进入INPUT链 . 数据包到了INPUT链后 , 任何进程都会收到它 . 本机上运行的程序可以发送数据包 , 数据包经过OUTPUT链, 然后到达POSTROUTING 链输出
  • 如果数据包是转发出去的, 且需要经过内核允许转发 , 数据包就会经过FORWARD链, 然后到达POSTROUTING链
  • 路由前PREROUTING(路由表之前)
  • 路由后POSTROUTING

2.1 iptables中的顺序

表顺序: raw -> mangle -> nat -> filter
链顺序: 
PREROUTING -> FORWARD -> POSTROUTING
PPREROUTING -> INPUT
OUTPUT -> POSTROUTING
规则匹配顺序:
自上而下 依次匹配 匹配即停止(log动作除外)

3 规则匹配顺序对性能的影响

规则1

ACCEPT 80
ACCEPT 443
ACCEPT 22
DROP all

规则2

ACCEPT 443
ACCEPT 80
ACCEPT 22
DROP all

那么规则1 和规则2 哪个性能更好呢

肯定是443处理多的请求更多

4 iptables 的常用匹配类型

iptables规则分类

自定义规则
REJECT
DROP
ACCEPT 
LOG 记录日志信息
SNAT
DNAT
REDIRECT 重定向

默认规则: DROP ACCEPT

三种匹配类型

常用的通用匹配

协议匹配: -p (tcp udp icmp)
地址匹配: -s 源地址 -d 目的地址
接口匹配: -i 入站网卡 -o 出站网卡

常用的隐含匹配

端口匹配: --sport --dport 需要在-p tcp 或udp之后使用
icmp匹配类型: --icmp-type (038 级别)
0 echo-reply (回应)
3 destination-unreachable
8 echo-request (请求)


防火墙规则防近不防出 出去的数据包默认都是放行的
互联网发展之初 有过死亡之ping 的dos攻击,
多台主机 将serverping到宕机
那么就有了防御手段, client不能ping  server, 但是server可以ping client
s: 80.4
c: 80.5
iptables -t filter -A INPUT -p icmp --icmp-type 0 -j ACCEPT # 接收0级别
#目前可以达成目的, 但是ping 一个不存在的主机时 s:80.5 不能显示木有目标主机
再次
iptables -t filter -I INPUT -p icmp --icmp-type 3 -j ACCEPT # 先接收3级别 再接收0 级别
显式匹配
-m 扩展模块 
IP范围匹配:
MAC范围匹配:
转发匹配: 
状态匹配: -m state --state (NEW , ESTABLISH , RELATED )
NEW 新建立的链接
ESTABLISHED 已建立过的链接
RELATED 相关联的

5 SNAT与DNAT

一些小概念

上行带宽 即上传带宽
下行带宽 即下载带宽
双发 即下载与上传可同时进行
单发 只能单位时间内 上传和下载

当做了snat 数据包返回时便会自动做dnat
反之同理

snat应用场景

https://img2022.cnblogs.com/blog/2672061/202201/2672061-20220126001411065-460514793.png
#路由器配置
iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -o eth0 -j SNAT --to-source 10.10.10.20

dnat 应用场景

iptables -t nat -A PREROUTING -i eth1 -d 10.10.10.12 -p tcp ---dport 80  -j DNAT --to-destination 192.168.66.11:80


#ip映像
#将公网ip映像到局域网的的主机
iptables -t nat -A PREROUTING -d 10.10.10.12 -j DNAT --to-destination 192.168.66.11 #这样我们暴露路由公网IP,可以连接到内网的webServer

路由前和路由后 -> 防止数据包方向错误进入localhost

https://img2022.cnblogs.com/blog/2672061/202201/2672061-20220126001930185-1056845488.png

为什么SNAT要使用路由后呢

源地址转换的场景

家庭局域网		路由器					百度

192.168.80.3		80.1  10.1				10.8


sIP80.3			80.3					10.8

dIP10.8			10.8					10.1

所以在路由之后才做的源地址转换,如果在之前做

sIP80.3			10.1

dIP10.8			10.8
路由表在路由器中

从百度回来的数据包,没有记录对应局域网ip 是不能返回到对应家庭设备中的

posted on 2022-01-26 00:26  joe_HelloWorld  阅读(64)  评论(0编辑  收藏  举报

导航