iptables复习

2024-05-30  本文已影响0人  午觉不眠Orz

一、iptables原理学习资料:

云计算底层计算
重温iptables #感谢作者,写的真细

二、概念原理总结,辅助理解

1)iptables是用户空间命令,通过netlink和内核的netfilter模块进行交互,在L3/L4操控封包。
2)PREROUTING链和OUTPUT链,可以DNAT,OUTROUTING链可以SNAT。其他链路都没NAT操作。
3)raw,mangle,nat,filter,四张表加上security五张表,一般有用途上的区别
raw表:最高优先级,一般用于连接跟踪,Connection Tracking
mangle表:一般用于修改封包,典型:设置TTL,MARK标记;
nat表,一般用于nat地址转换
filter表,一般记录过滤条件,决定封包的放行,丢弃,拒绝
security表:安全相关,甚少使用。

4)根据规则看NAT,判断方法
例如OUTROUTING链路,见到规则 -j MASQUERADE,那就是SNAT
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE

例如PREROUTING链和OUTPUT链,见到-j DNAT,那就是DNAT
iptables -t nat -A PREROUTING # 入站后第一个链
-p tcp --dport 7777 -i eth0 # 如果封包来自eth0且目标端口为7777
-j DNAT --to-destination 172.16.87.132:80

5)TCP标记,可用的标记SYN, ACK, FIN, RST, URG, PSH,还有两个特殊的值ALL, NONE分别匹配具有任何标记的封包、没有任何标记的封包

三、调试iptables的方法(ubuntu 20.04版本)

开启iptables调试内核模块
$ modprobe nf_log_ipv4

$ sysctl net.netfilter.nf_log.2

net.netfilter.nf_log.2 = nf_log_ipv4

添加iptables规则
$ iptables -t raw -A PREROUTING -p icmp -j TRACE

$ iptables -t raw -A OUTPUT -p icmp -j TRACE

$ iptables -t raw -A PREROUTING -p tcp -j TRACE

$ iptables -t raw -A OUTPUT -p tcp -j TRACE

测试规则
客户端执行 ping 命令,
$ ping 192.168.6.23 -n 1

这里使用 -n 参数指定发送的包数量为1,方便我们分析日志
此时在服务器上执行查看日志命令, 日志文件为:/var/log/syslog 或者 /var/log/kern.log 或者 /var/log/messages
$ tail -f /var/log/syslog

iptables -t raw -nvL PREROUTING --line-number
iptables -t raw -nvL OUTPUT --line-number
iptables -t raw -D PREROUTING 4
iptables -t raw -D OUTPUT 8
iptables -t raw -A PREROUTING -p tcp -j TRACE

iptables -t raw -A OUTPUT -p tcp -j TRACE

向xx.xx.xx.xx的80端口发起一次tcp syn请求
hping3 -c 1 -S -p 80 xx.xx.xx.xx

上一篇 下一篇

猜你喜欢

热点阅读