iptables命令

iptables是用户态的命令行工具。
用户通过iptables来操作netfilter内核数据包处理模块。

规则串到一个链条上后形成了链。
PREROUTING链:DNAT;
INPUT链:处理目的地址为本机的报文;
FORWARD链:处理转发到其他机器或者network namespace的报文;
OUTPUT链:处理原地址为本机并向外发送的数据包;
POSTROUTING链:SNAT

filter表:过滤
nat表:NAT网络地址转换
mangle表:修改数据包内容
raw表:关闭nat表上启用的连接追踪机制

处理动作和规则顺序

ACCEPT 

放行,跳往下一个链。 

REJECT 

拒绝,通知对方(ICMP port-unreachable、ICMP echo-reply 或是 tcp-reset),直接中断。 

DROP 

丢弃,直接中断。 

REDIRECT 

重定向到另一个端口(PNAT),继续执行其他规则。 

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080 

MASQUERADE 

把源地址转换成宿主机出口网卡IP,跳往下一个链。 

SNAT 

更改源地址,跳往下一个链。 

DNAT 

更改目的地址,跳往下一个链。 

RETURN 

结束当前链,返回主规则链。 

MARK 

将包设置标志,继续执行其他规则。 

iptables -t mangle -A PREROUTING -p tcp --dport 22 -j MARK --set-mark 2 

LOG 

封包相关信息记录在/var/log/messages中,继续执行其他规则。 

iptables -A INPUT -p tcp -j LOG --log-prefix "INPUT packets" 

MIRROR 

把来源IP和目的IP交换,送回包,直接中断。 

QUEUE 

直接中断,把包放入队列,交给其他程序处理。 

具体操作

# 查看filter表中INPUT链的规则并显示行号
iptables -t filter -nvL INPUT --line
# 清空filter表中的INPUT链
iptables -t filter -F INPUT
# 给filter表INPUT链头部插入规则
# 192.168.0.101的虚拟机增加iptables规则
iptables -t filter -I INPUT -s 192.168.0.102 -j DROP
192.168.0.102的虚拟机无法ping通192.168.0.101

# 给filter表INPUT链尾部追加规则
iptables -t filter -A INPUT -s 192.168.0.102 -j ACCEPT
# 删除filter表INPUT链第一条规则
iptables -t filter -D INPUT 1
# 修改filter表INPUT链第一条规则从DROP改成REJECT
iptables -t filter -R INPUT 1 -s 192.168.0.102 -j REJECT

192.168.0.102的虚拟机无法ping通192.168.0.101。

# 保存规则
iptables-save > /etc/sysconfig/iptables
# 重载规则
iptables-restore < /etc/sysconfig/iptables

参考资料

https://www.zsythink.net/archives/category/%e8%bf%90%e7%bb%b4%e7%9b%b8%e5%85%b3/iptables

 

posted on   王景迁  阅读(81)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示