iptables 添加、删除指令、重启指令
作为 linux 防火墙软件,一直都不太习惯使用,大多使用服务商的安全组来配置端口、ip 放行规则。
有台服务器被同事添加了防火墙规则,导致数据库远程无法访问。网上找到 iptables 添加规则的指令:
iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 3306 -j ACCEPT
-A 后面是 INPUT 或 OUTPUT,分别表示入站规则和出站规则; -p 后面是使用的协议;--dport 后面是放行或禁用的端口;-j 后面一般是 ACCEPT 或 REJECT,分别表示接受和拒绝,对应放行规则和禁用规则。
后面是保存 iptables 设置并重启使之生效的指令:
service iptables save
service iptables restart
# 查看规则
iptables -L -n
指令的结果就是找不到 iptables 服务,一直尝试都没有用:ubuntu Failed to start iptables.service: Unit iptables.service not found.
此时我也意识到了管理 iptables 的指令好像在 centos 和 ubuntu 中不一样,搜索 ubuntu 下重启 iptables 服务,果然,ubuntu 下使用了 ufw 指令来控制 iptables 服务:
# 查看状态
ufw status
# 启用防火墙
ufw enable
# 禁用防火墙
ufw disable
# 重新加载防火墙
ufw reload
重载防火墙后,依然不能远程连接数据库。查看防火墙规则发现,存在 禁用 3306 的规则存在,我新添加的 放行 3306 规则明显没有起作用。
这时最直接的方法就是删除那条禁用的规则:
# 查看每条规则 chain 的列号
iptables -L -n --line-number
...
16 REJECT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:3306 reject-with icmp-port-unreachable
...
# 删除规则,需要指定是入站规则还是出站规则
iptables -D INPUT 16
此时再次重载防火墙,尝试远程连接数据库,好了!
当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »