iptables是什么?
iptables 是一个强大的开源软件,它是 Linux 系统内核中 netfilter 包过滤框架的一部分,用来实现防火墙功能。iptables 提供了一种灵活的方式来控制和管理进出以及通过 Linux 计算机的网络流量。
前提
我在云服务器上用docker部署了一个rabbitmq服务,页面端口为15672,现在我想让我的ip访问不了云服务器。
查看ip
但是这里查出来的都不是公网ip,是局域网ip,所以得先取到公网ip。
查询公网ip
点我查询公网ip
查看环境
查看过滤规则
iptables -L:列出所有表(默认是 filter 表)中的链及其规则。
没有什么过滤规则
docker运行rabbitmq
访问rabbitmq
成功访问
添加过滤规则
在添加之前先把以前的规则备份一份
iptables-save > /etc/iptables.rules.bak
禁用221.238.10.234ip访问,我的公网ip为 221.238.10.234
iptables -A INPUT -s 221.238.10.234 -j DROP
验证
ping云服务器ip
这儿能看到已经ping不通了,但是有个奇怪的现象是我的rabbitmq竟然能访问,奇怪了(如果不是docker的服务到这一步就完成了)。
页面不是来自于缓存
最后我找了好久是和docker的网络有关,还需要在docker链上添加拒绝来自221.238.10.234的流量的规则
iptables -I DOCKER -s 221.238.10.234 -j DROP
再次查看确实不能访问了
现在这个ip算是禁用了,任何请求都进不来了。
其他命令
查看当前规则列表并确定要删除的确切规则序号
iptables -L INPUT --line-numbers
根据得到的行号删除规则(例如,若规则在第3行)
iptables -D INPUT 3
查看规则的命令
iptables -nvL
恢复备份规则
iptables-restore < /etc/iptables.rules.bak