Vultr 默认防火墙规则导致端口不通如何修改 iptables 配置?

文章导读
Vultr 实例端口不通通常由 Vultr 云端防火墙或系统内部 iptables 规则拦截导致。优先检查 Vultr 控制面板的 Cloud Firewall 规则,确认放行后再修改系统内部 iptables 配置。
📋 目录
  1. 命令速用版
  2. 为什么会这样
  3. 分步处理
  4. 怎么验证是否生效
  5. 常见坑
  6. 常见问题
A A

Vultr 实例端口不通通常由 Vultr 云端防火墙或系统内部 iptables 规则拦截导致。优先检查 Vultr 控制面板的 Cloud Firewall 规则,确认放行后再修改系统内部 iptables 配置。

先说结论:Vultr 平台存在外部云端防火墙和内部系统防火墙两层防护,端口不通需按顺序排查。

  • 先确认:登录 Vultr 控制面板检查 Cloud Firewall 是否阻止了目标端口。
  • 先处理:在云端防火墙放行端口后,再登录系统修改 iptables 规则。
  • 再验证:使用 telnet 或 nc 命令从外部测试端口连通性。

命令速用版

# 查看当前 iptables 规则
iptables -L -n -v

# 临时清空所有规则(生产环境慎用,可能断开 SSH)
iptables -F

# 放行特定端口示例(以 TCP 80 为例)
iptables -I INPUT -p tcp `--dport` 80 -j ACCEPT

# 保存规则(CentOS/RHEL)
service iptables save

# 保存规则(Ubuntu/Debian 需安装 iptables-persistent)
netfilter-persistent save

为什么会这样

Vultr 实例网络流量先经过 Vultr 云端防火墙,再进入操作系统内部。

如果 Vultr 云端防火墙规则默认拒绝所有入站流量,即使系统内部 iptables 放行了端口,外部请求也会在到达 VPS 之前被丢弃。反之,如果云端放行但系统内部 iptables 默认策略为 DROP 且无放行规则,端口同样无法访问。两层防火墙独立工作,需同时配置。

分步处理

步骤 1:检查 Vultr 云端防火墙

登录 Vultr 控制面板,进入 Instances 列表,点击目标实例。查找 Firewall 或 Cloud Firewall 选项卡。确认是否存在允许目标端口(如 80、443 或自定义端口)的入站规则。如果没有,添加一条允许 TCP/UDP 对应端口的规则。

步骤 2:检查系统内部防火墙状态

通过 SSH 登录实例,执行iptables -L -n -v。观察 INPUT 链的默认策略(policy)。如果显示 DROP 或 REJECT,需要添加 ACCEPT 规则。注意确认是否安装了 ufw 或 firewalld,这些工具底层也调用 iptables/nftables,建议统一使用一种管理工具。

步骤 3:修改 iptables 配置

Vultr 默认防火墙规则导致端口不通如何修改 iptables 配置?

使用iptables -I INPUT -p tcp `--dport` 端口号 -j ACCEPT添加放行规则。规则添加后,务必执行保存命令,防止重启失效。CentOS 使用service iptables save,Ubuntu 需确保iptables-persistent包已安装并使用netfilter-persistent save

怎么验证是否生效

在本地电脑或另一台服务器上执行测试命令。使用telnet 实例 IP 端口nc -zv 实例 IP 端口。如果显示 Connected 或 succeeded,说明端口已通。如果显示 Connection refused 或 timed out,说明仍有拦截。

同时检查系统日志/var/log/messages/var/log/syslog,查看是否有防火墙丢弃数据包的记录。

常见坑

  • SSH 端口被锁:修改 iptables 默认策略前,务必先放行 SSH 端口(默认 22),否则会导致无法远程连接。
  • 规则顺序错误:iptables 规则按顺序匹配,放行规则应放在拒绝规则之前。
  • 重启失效:iptables 规则默认存储在内存中,重启服务器会丢失,必须执行保存命令。
  • 工具冲突:同时使用 ufw、firewalld 和原生 iptables 命令可能导致规则混乱,建议只保留一种管理方式。

常见问题

Vultr 云端防火墙和系统 iptables 有什么区别?

Vultr 云端防火墙位于 hypervisor 层,在流量到达 VPS 之前拦截;系统 iptables 位于操作系统内核层,处理进入系统后的流量。

修改 iptables 后需要重启服务器吗?

不需要重启服务器,iptables 规则即时生效。但需要执行保存命令确保重启后规则不丢失。

为什么 iptables 放行了端口还是不通?

大概率是 Vultr 云端防火墙未放行,或者服务器内部有其他安全软件(如 fail2ban、云安全 agent)进行了拦截。

如何临时关闭 iptables 排查问题?

执行iptables -F清空规则并将默认策略设为 ACCEPT,但生产环境慎用,排查后应立即恢复。