docker容器内使用iptables
被测试的应用部署在docker容器里,只主机上iptables drop某个ip后,此ip依然可以访问容器里的应用,容器里ping ip也可以ping通。所以需要容器里安装iptables并做响应设置。
这个过程中遇到的问题和解决方法如下:
1. apt-get install iptables遇到certification error. 解决方法参考 https://www.cnblogs.com/imyingzi/p/16139510.html
2. iptables安装成功之后,iptables --help可以。但iptables -L -n报Permission denied
这是因为docker run 的时候没有使用 --privileged。可以重现run这个容器,也可以带--privileged重新exec进入容器
docker exec -it --privileged 容器id /bin/bash
(我不想重新run, 尝试了网上说的修改容器配置文件hostconfig.json,但不管用,restart 容器"Privileged":就又被置为false了,(试了拷贝到其他地方再考回来什么的都不行))
再iptables -L -n就可以了
3. 在容器里,iptables -I INPUT -p all -s xxx.xx.xx.xxx -j DROP 就可以了
再ping就ping不通了
4. 之后想不屏蔽,先使用iptables -L -n --line-numbers 查看对应规则的number
再 iptables -D INPUT number
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话