1
先看服务器上有哪些端口在监听
登录服务器后执行 ss -tlnp(看 TCP 端口;UDP 用 ss -ulnp)。本站测试机刚装好系统时的结果:
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=564,fd=7))
LISTEN 0 128 [::]:22 [::]:* users:(("sshd",pid=564,fd=8))
0.0.0.0:22、[::]:22:SSH 在所有网卡上监听,外面能连
- 只监听
127.0.0.1 的程序,只有服务器自己能连,外面连不上
- 最后一列是哪个程序在用这个端口
2
看有没有防火墙:后台没有安全组
搬瓦工没有云服务器那种“安全组”,KiwiVM 里也没有防火墙设置。端口能不能从外面连,只看服务器系统里的防火墙:
systemctl is-active firewalld # AlmaLinux / Rocky / CentOS
iptables -S # 看 iptables 规则
ufw status # Debian / Ubuntu 装了 ufw 才有
本站测试机(KiwiVM 安装的 AlmaLinux 9)的结果:
inactive
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
注意firewalld 没装,iptables 全部是 ACCEPT,等于没有防火墙:以后装的网站、面板、数据库只要监听在 0.0.0.0,外面都能直接连。其他系统模板可能不同,用上面的命令自己查。
3
装防火墙:先确认 SSH 已放行
AlmaLinux / Rocky 用 firewalld,测试机实测:
dnf install -y firewalld
systemctl enable --now firewalld
firewall-cmd --list-all
测试机上 firewall-cmd --list-all 的输出(节选):
public (active)
target: default
interfaces: eth0
services: cockpit dhcpv6-client ssh
ports:
默认区域 public 已经放行了 ssh(22 端口),所以开防火墙后 SSH 不会断。
注意改过 SSH 端口的,开防火墙前先想好怎么放行新端口;最稳的做法是在 KiwiVM 左侧 Root shell 网页终端里操作,它不经过 SSH,万一锁住自己也能改回来。改端口的注意事项见 SSH 安全教程。
4
放行端口、关闭端口
放行一个端口(例子是 8080),再重新载入:
firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --reload
firewall-cmd --list-ports # 确认:8080/tcp
建网站常用的 80、443,直接放行对应的服务:
firewall-cmd --permanent --add-service=http --add-service=https
firewall-cmd --reload
不用了就关掉:把 --add-port 换成 --remove-port,再 --reload。本站在测试机上开了一个 8080 端口的测试网页,从外部网络访问的结果:
| 测试机状态 | 从外部打开 8080 端口上的测试网页 |
| 没有防火墙(模板默认) | 能打开 |
| 装上 firewalld,没放行 8080 | 打不开 |
| 放行 8080 以后 | 能打开 |
正常结果--permanent 是写进配置、重启后还在;只改 --permanent 不 --reload 不会马上生效。
5
Debian / Ubuntu 和宝塔
Debian / Ubuntu 一般用 ufw(这部分本站测试机没有实测,命令是 ufw 的标准用法):
apt install -y ufw
ufw allow 22/tcp # 先放行 SSH,改过端口的换成你的端口
ufw allow 80,443/tcp
ufw enable
ufw status
用宝塔面板的,安装时会自动在系统防火墙里放行面板端口和 80、443,见宝塔建站教程。以后在宝塔“安全”里放行端口即可,不用去搬瓦工后台。
6
这些端口别对外开
按搬瓦工服务条款,下面这些会被当成违规:
- 对外开放的 DNS 解析(53/UDP)、端口映射服务(portmap,111)、NTP 时间服务(123/UDP):容易被拿去做放大攻击
- 扫描别人的端口
- 群发邮件:只允许偶尔发少量事务性邮件。本站测试机往外连 25、465、587 端口都能连上,但能连上不等于可以群发
另外,MySQL(3306)、Redis(6379)这类数据库端口只给本机用,不要放行到公网;要远程管理,用 SSH 隧道或者只放行自己的 IP。
注意迁移机房换了 IP 以后连不上,也可能是防火墙规则里还写着旧 IP(官方知识库特别提醒),排查见排除防火墙问题;完全连不上看连不上怎么办。