1. 30 秒自助解封 SMTP 25 端口与 SCP 宿主机状态防火墙配置
所有 G9–G12.5 代次的 Root Server 与 VPS 均在 KVM 宿主机网桥层集成了免费的有状态硬件防火墙(SCP Stateful Firewall,单实例支持最多 20 个规则集、500 条规则,按序号由小到大匹配)。为防止新开机实例被扫爆弱口令对外发送垃圾邮件,netcup 默认在每台新机器上挂载了名为 netcup Mail block 的预置策略拦截 TCP 25 端口。
登录 SCP 并选中目标服务器
打开
https://www.servercontrolpanel.de,使用 SCP 账号登录并点击目标虚拟机。进入 Firewall 菜单移除 netcup Mail block
在左侧导航点击 Firewall。在 Assigned Policies(已分配策略)列表中取消勾选或移除
netcup Mail block。配置最小权限生产防火墙规则并点击 Save
在移除拦截策略的同时,建议添加你自己的入站白名单规则(仅放行 SSH 22、HTTP 80、HTTPS 443 及邮局所需的 25/465/587/993),点击 Save 后宿主机将在数秒内下发规则生效。
官方参考:netcup Helpcenter: SCP Firewall。解封 25 端口无需提交人工工单,也无需等待账单满月。
解封后如何验证出站 25 端口与 rDNS 反向解析是否生效?
在服务器终端内执行以下两条测试命令:
# 1. 验证出站 TCP 25 端口是否畅通(测试直连 Gmail 或 Outlook 邮件网关)
nc -zv -w 5 smtp.gmail.com 25
# 正常应输出:Connection to smtp.gmail.com 25 port [tcp/smtp] succeeded!
# 2. 验证 IPv4 与 IPv6 的 rDNS (PTR 反向解析) 是否已生效
dig -x 你的服务器IPv4 +short
dig -x 你的服务器IPv6 +short
# 正常应返回你在 SCP Network 中设置的完整域名(如 mail.yourdomain.com)
2. 重点:在 Ubuntu / Debian 上配置 netcup /64 IPv6 子网与 fe80::1 网关
每台标准 Root Server 和 VPS 均分配有 1 个公网 IPv4 地址和 1 个完整的路由 /64 IPv6 子网(包含 $2^{64}$ 个可用地址,例如 2a03:4000:xx:xxxx::/64)。在 netcup 的 KVM 网络架构中,所有机房的 IPv6 默认网关统一固定为链路本地地址 fe80::1。
如果你在重装系统、手动绑定多个 IPv6 地址(例如为自建邮局单独分配 ::2 并设置独立 PTR 反向解析)后遇到 IPv6 不通,请直接使用以下经过验证的配置文件模板:
Ubuntu 22.04 / 24.04 LTS(Netplan 配置:/etc/netplan/01-netcfg.yaml)
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: true
dhcp6: false
accept-ra: false
addresses:
# 将下方前缀替换为 SCP -> Network 中显示的你的 /64 IPv6 子网前缀
- 2a03:4000:60:1234::1/64
- 2a03:4000:60:1234::2/64
routes:
- to: "::/0"
via: "fe80::1"
on-link: true
nameservers:
addresses:
- 46.38.225.230
- 46.38.252.230
- 2a03:4000:0:1::e1e6
- 2a03:4000:8000::fce6
保存后执行 chmod 600 /etc/netplan/01-netcfg.yaml && netplan apply 立即生效。
Debian 12 / 13(/etc/network/interfaces 静态配置)
auto eth0
iface eth0 inet dhcp
iface eth0 inet6 static
address 2a03:4000:60:1234::1/64
gateway fe80::1
up ip -6 addr add 2a03:4000:60:1234::2/64 dev eth0
down ip -6 addr del 2a03:4000:60:1234::2/64 dev eth0
配置完成后,前往 SCP > Network 即可分别为 2a03:4000:60:1234::1 和 2a03:4000:60:1234::2 设置不同的 rDNS (PTR 反向解析) 主机名。
3. 快照机制、导出 .raw.zst 裸盘镜像到本地与跨服务器迁移
根据 netcup Helpcenter: SCP Snapshots,当虚拟磁盘剩余未分配/可用空间不少于 10% 时,可在 SCP 创建快照:
| 快照类型 | 创建条件 | 文件系统一致性 | 是否支持导出 (.raw.zst) |
|---|---|---|---|
| Online Snapshot(在线快照) | 服务器保持开机运行状态 | 包含内存/磁盘瞬时状态,高并发写数据库可能存在未刷盘事务 | 不支持导出 |
| Offline Snapshot(离线快照) | 先通过 ACPI 正常关机(Shutdown) | 100% 保证文件系统与数据库落盘一致性 | 支持免费导出下载或转存 Custom Images |
在本地解压 .raw.zst 快照、挂载提取单文件或转换为 Proxmox / QEMU 镜像
SCP 为每台机器免费提供 1 个快照导出槽位。点击离线快照旁的 Export 后,即可通过浏览器或 wget/aria2c 将整块硬盘下载为 zstd 压缩的原始镜像(.raw.zst):
# 1. 解压从 SCP 下载的 .raw.zst 整盘备份镜像
zstd -d -T0 server-backup.raw.zst -o server-backup.raw
# 2. 在本地 Linux 机器上挂载该镜像,直接提取里面的任意配置文件或数据库目录
losetup -fP --show server-backup.raw # 假设输出 /dev/loop0
mount -o ro /dev/loop0p3 /mnt/recovery
ls -la /mnt/recovery/var/lib/postgresql/
# 3. 或者转换为精简制备的 qcow2 格式,直接导入本地 Proxmox VE / KVM 运行
qemu-img convert -p -f raw -O qcow2 -c server-backup.raw server-backup.qcow2
4. Grml 救援系统(Rescue System)救砖、重置密码与 SSH 流式全盘对拷
当修改 /etc/fstab、升级内核失败或防火墙锁死导致无法 SSH 登录时,可在 SCP > Rescue System 启动官方集成的 Grml Linux Live 内存救援系统(启动时 SCP 会生成临时 root 密码):
# 1. SSH 登录进 Grml 救援系统后,查看原服务器磁盘分区结构(通常主盘为 /dev/vda 或 /dev/sda)
lsblk -f
# 2. 挂载原系统的根分区(假设为 /dev/vda3)与 EFI/boot 分区,并绑定虚拟文件系统进入 chroot
mount /dev/vda3 /mnt
mount /dev/vda2 /mnt/boot
for i in /dev /dev/pts /proc /sys /run; do mount -B $i /mnt$i; done
chroot /mnt /bin/bash
# 3. 在 chroot 环境内即可直接重置 root 密码、修复 /etc/fstab、修复 sshd_config 或重装 GRUB
passwd root
update-grub && exit
# 4. 进阶技巧:在 Grml 救援模式下,无需占本地空间,直接将整块 NVMe 硬盘通过 zstd 压缩流式传输到另一台服务器
dd if=/dev/vda bs=16M status=progress | zstd -1 -T0 | ssh root@目标服务器IP "zstd -d | dd of=/dev/vda bs=16M"
5. SCP REST API(OAuth 2.0 认证与 curl 自动化调用实例)
netcup 已于 2025 年 9 月 30 日正式下线旧版 SOAP Webservice,全面切换至符合 OpenAPI 3.0 规范的 SCP REST API(接口规范地址:https://www.servercontrolpanel.de/scp-core/api/v1/openapi)。API 采用基于 Keycloak 的 OAuth 2.0 授权(Client ID 为 scp),以下为在终端获取令牌并查询服务器状态的完整命令:
# 第一步:发起 OAuth 2.0 设备授权请求(Device Authorization Flow)
curl -s -X POST "https://www.servercontrolpanel.de/realms/scp/protocol/openid-connect/auth/device" \
-d "client_id=scp" -d "scope=offline_access openid" | jq .
# 在浏览器打开返回的 verification_uri_complete 完成一次授权后,用 device_code 换取长期 Refresh Token:
curl -s -X POST "https://www.servercontrolpanel.de/realms/scp/protocol/openid-connect/token" \
-d "grant_type=urn:ietf:params:oauth:grant-type:device_code" \
-d "client_id=scp" -d "device_code=填入上一步返回的device_code" | jq .
# 第二步:携带 Access Token 调用 SCP REST API 列出名下所有服务器与运行状态
curl -s -H "Authorization: Bearer $ACCESS_TOKEN" \
"https://www.servercontrolpanel.de/scp-core/api/v1/servers" | jq .
# 第三步:查询指定服务器({serverId})的实时监控指标、网卡流量与防火墙状态
curl -s -H "Authorization: Bearer $ACCESS_TOKEN" \
"https://www.servercontrolpanel.de/scp-core/api/v1/servers/123456?loadServerLiveInfo=true" | jq .
补充说明:Root Server 与 VPS 均不向客户机透传 AMD SVM 硬件虚拟化标志(无 /dev/kvm,不支持嵌套虚拟化 Nested KVM);Docker、Podman、LXC 及 SCP 内置的 SCP Apps [Beta](基于 virtio-vsock 通信的 Docker Swarm + Traefik 平台)均原生支持。