物理服务器怎么绑定公网 IP 和域名:配置步骤与示例
物理服务器绑定公网 IP 和域名分四步:在服务器操作系统里按服务商给的参数配置静态公网 IP 并验证能上网;在域名服务商的 DNS 控制台添加 A(IPv4)和 AAAA(IPv6)记录指向这个 IP;在 Web 服务器里按域名绑定站点、放行 80 和 443 端口;服务器在中国内地机房的,网站上线前先完成 ICP 备案。
物理服务器怎么绑定公网 IP 和域名,流程是固定的四步:配 IP → 做解析 → 绑站点 → 办备案。先按服务商给的参数在服务器系统里配好静态公网 IP、网关和 DNS,确认能 ping 通外网;再去域名服务商的 DNS 管理页把域名的 A 记录(IPv4)和 AAAA 记录(IPv6)指向这个 IP;然后在 Nginx、Apache 或 IIS 里按域名绑定站点,防火墙放行 80 和 443;服务器在中国内地机房的,网站对外开放前要完成 ICP 备案。下面按这个顺序给出每一步的具体配置和检查方法,示例里的 203.0.113.0/24 和 2001:db8::/32 是文档专用地址段,请替换成你自己的。
第一步:拿齐网络参数
服务器托管或租用开通后,服务商会给你一组参数,缺一项都配不通:
| 参数 | 示例 | 说明 |
|---|---|---|
| 公网 IP | 203.0.113.10 | 分给这台服务器的地址,可能不止一个 |
| 子网掩码 / 前缀长度 | 255.255.255.0 或 /24 | 决定哪些地址和你在同一网段,写错会导致同段不通 |
| 网关 | 203.0.113.1 | 机房交换机或路由器的地址,所有出网流量先送到这里 |
| DNS 服务器 | 服务商提供,或公共 DNS 如 223.5.5.5、119.29.29.29 | 服务器自己解析域名用 |
| IPv6 地址与网关 | 2001:db8:1::10/64、2001:db8:1::1 | 有 IPv6 时提供 |
| 接线网口 | eno1、ens192 等 | 公网线插在哪个网口,多网口服务器尤其要确认 |
| MAC 绑定 | 是 / 否 | 很多机房把 IP 和网卡 MAC 绑定,换网卡要通知机房 |
网口名称用 ip -br link 查看,状态为 UP 且有流量的那个通常就是接了公网线的。租用服务器的话,这些参数一般在服务商的客户面板里能直接看到。
第二步:配置静态公网 IP
机房一般不为公网段提供 DHCP,公网 IP 要手工静态配置。下面给几种常见系统的做法。
Ubuntu(netplan)
Ubuntu 18.04 起默认用 netplan。编辑 /etc/netplan/ 下的 yaml 文件(文件名因安装方式而异,用 ls /etc/netplan/ 查看):
network:
version: 2
renderer: networkd
ethernets:
eno1:
dhcp4: false
dhcp6: false
addresses:
- 203.0.113.10/24
- 2001:db8:1::10/64
routes:
- to: default
via: 203.0.113.1
- to: default
via: 2001:db8:1::1
nameservers:
addresses: [223.5.5.5, 119.29.29.29]
# 先试运行,120 秒内不确认会自动回滚,远程改网络配置时能防止把自己锁在外面
sudo netplan try
# 确认无误后正式应用
sudo netplan apply
yaml 对缩进敏感,统一用两个空格。to: default 需要 netplan 0.103 及以上(Ubuntu 20.04 已更新到该版本),更老的版本改写成 to: 0.0.0.0/0,IPv6 为 to: ::/0。如果服务商给的是 /32 单个地址加一个不同网段的网关(部分机房的做法),要先加一条到网关的链路路由,再把默认路由标记为 on-link:
addresses:
- 203.0.113.10/32
routes:
- to: 203.0.113.1/32
scope: link
- to: default
via: 203.0.113.1
on-link: true
Debian(ifupdown)
Debian 默认不用 netplan,配置写在 /etc/network/interfaces:
auto eno1
iface eno1 inet static
address 203.0.113.10/24
gateway 203.0.113.1
iface eno1 inet6 static
address 2001:db8:1::10/64
gateway 2001:db8:1::1
DNS 写在 /etc/resolv.conf 里,每行一条 nameserver 223.5.5.5。改完执行 sudo systemctl restart networking,或者直接重启服务器。
RHEL / Rocky / AlmaLinux / CentOS Stream(nmcli)
# 查看连接名,通常与网口同名
nmcli con show
# 配置 IPv4
nmcli con mod eno1 ipv4.method manual ipv4.addresses 203.0.113.10/24 \
ipv4.gateway 203.0.113.1 ipv4.dns "223.5.5.5 119.29.29.29"
# 配置 IPv6(没有 IPv6 可跳过)
nmcli con mod eno1 ipv6.method manual ipv6.addresses 2001:db8:1::10/64 \
ipv6.gateway 2001:db8:1::1
# 重新激活连接使配置生效
nmcli con up eno1
多个公网 IP 写在同一个 ipv4.addresses 里用逗号分隔,附加的 IP 不需要再写网关。
Windows Server(PowerShell)
# 网卡别名用 Get-NetAdapter 查看;先关掉该网卡的 DHCP
Set-NetIPInterface -InterfaceAlias "Ethernet" -Dhcp Disabled
New-NetIPAddress -InterfaceAlias "Ethernet" -IPAddress 203.0.113.10 -PrefixLength 24 -DefaultGateway 203.0.113.1
Set-DnsClientServerAddress -InterfaceAlias "Ethernet" -ServerAddresses 223.5.5.5,119.29.29.29
# 附加 IP:不带网关
New-NetIPAddress -InterfaceAlias "Ethernet" -IPAddress 203.0.113.11 -PrefixLength 24
图形界面在“网络和共享中心 → 更改适配器设置 → 以太网 → 属性 → Internet 协议版本 4”里填同样的内容。
验证
ip -br addr # 网口上应出现 203.0.113.10/24
ip route # 应有一条 default via 203.0.113.1
ping -c 3 203.0.113.1 # 先通网关
ping -c 3 223.5.5.5 # 再通外网
dig +short example.com # DNS 能解析
网关不通,排查顺序是:网线插的网口对不对、IP 和掩码有没有写错、机房是否做了 MAC 绑定而你换了网卡、交换机端口 VLAN 是否正确。前两项自己改,后两项要找机房。网关通、外网不通,多半是网关填错或机房还没开通端口。
第三步:把域名解析到服务器
登录域名所在服务商的 DNS 管理页面,添加记录:
| 记录类型 | 主机记录 | 记录值 | 作用 |
|---|---|---|---|
| A | @ | 203.0.113.10 | example.com 指向 IPv4 |
| A | www | 203.0.113.10 | www.example.com 指向 IPv4 |
| AAAA | @ | 2001:db8:1::10 | example.com 指向 IPv6 |
| AAAA | www | 2001:db8:1::10 | www.example.com 指向 IPv6 |
| CNAME | blog | www.example.com |
子域名别名到 www,改 IP 时只改一处 |
几条规则:根域名(@)不能用 CNAME,只能用 A/AAAA;TTL 新建时可以用默认值(常见 600 秒),计划换 IP 前提前把 TTL 调小;泛解析 * 会把所有未定义的子域名都指向服务器,不需要就别加,避免被误用。
解析加好后验证,分别查权威 DNS 和公共递归 DNS,排除缓存影响:
# 先查域名的权威 DNS 是谁,再直接向它查询,结果不受缓存影响
dig +short NS example.com
dig +short @ns1.example-dns.com example.com A
# 问公共递归 DNS,看是否已传播
dig +short @223.5.5.5 www.example.com A
dig +short @223.5.5.5 example.com AAAA
Windows 上用 nslookup www.example.com 223.5.5.5。返回的 IP 正确,解析就完成了;没返回或返回旧值,等 TTL 过期再查。
第四步:Web 服务器按域名绑定站点
域名解析只是把请求送到服务器,服务器还要知道这个域名对应哪个站点。Web 服务器靠 HTTP 请求头里的 Host 字段区分。
Nginx
# /etc/nginx/conf.d/example.com.conf
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
root /var/www/example.com;
index index.html index.php;
}
# 兜底:直接用 IP 访问,或未绑定的域名指向本机时直接断开,不暴露任何站点
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
return 444;
}
sudo nginx -t && sudo systemctl reload nginx
Apache
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com
</VirtualHost>
Debian/Ubuntu 上文件放在 /etc/apache2/sites-available/,用 a2ensite example.com.conf 启用后 systemctl reload apache2;RHEL 系放在 /etc/httpd/conf.d/,apachectl configtest 通过后 systemctl reload httpd。
IIS
IIS 管理器 → 选中网站 → 右侧“绑定” → 添加:类型 http,IP 地址选“全部未分配”或指定公网 IP,端口 80,主机名填 example.com;再添加一条主机名为 www.example.com 的绑定。
放行防火墙并上 HTTPS
服务器本机防火墙放行 80 和 443:
# Ubuntu / Debian
sudo ufw allow 80,443/tcp
# RHEL 系
sudo firewall-cmd --permanent --add-service=http --add-service=https && sudo firewall-cmd --reload
# Windows
New-NetFirewallRule -DisplayName "Web 80/443" -Direction Inbound -Protocol TCP -LocalPort 80,443 -Action Allow
域名解析生效、80 端口可从公网访问后,就可以签发证书。用 certbot 为 Nginx 申请并自动配置:
sudo certbot --nginx -d example.com -d www.example.com
certbot 的 Nginx 插件默认走 HTTP-01 验证,要求域名已经解析到这台服务器且 80 端口对外可达,所以这一步必须放在解析和绑定之后。
备案:内地机房的前提条件
服务器放在中国内地机房、用域名对外提供网站服务,必须先办理 ICP 备案(非经营性互联网信息服务备案)。要点:
- 向谁办:由为你提供服务器的接入服务商(机房或服务器租用商)在工信部 ICP 备案系统中提交,审核机关是网站主办者所在地的省级通信管理局。你自己不能绕过接入商直接备案。
- 前提:域名已完成实名认证,域名持有者与备案主体一致;服务器 IP 属于这家接入商。
- 未备案的后果:接入商会对未备案域名的 Web 端口进行阻断,网站打不开;解析本身不受影响。
- 顺序:IP 可以先配好,解析也可以先加,但 Web 服务对外开放要等备案通过,并把备案号放到网站底部。
- 其他:经营性网站需要另外办理增值电信业务经营许可(ICP 许可证);网站开通后还要办理公安机关的联网备案。审核周期、材料清单以接入商和当地通信管理局公布的要求为准。
服务器在香港、澳门、台湾或海外机房的,不需要 ICP 备案,解析加好就能访问;代价是内地用户访问的延迟和线路质量取决于机房的回国线路。
绑好之后打不开怎么排查
| 现象 | 常见原因 | 怎么确认 |
|---|---|---|
| ping 网关不通 | 网口、IP/掩码、MAC 绑定或 VLAN 问题 | ip -br addr 核对配置,联系机房核对 MAC 与端口 |
| 网关通、外网不通 | 网关地址错,或机房端口未开通 | ip route 看默认路由,找机房确认 |
| 用 IP 能打开、域名打不开 | 解析未生效或记录值填错 | dig +short 域名 看返回的 IP |
| 域名解析正确,但连接超时 | 本机防火墙未放行,或未备案被阻断 | 在服务器上 curl -I http://127.0.0.1 能通,则是外部拦截 |
| 打开的是默认页或别的站点 | server_name / ServerName 与域名不一致 | nginx -T 查看实际加载的 server_name |
| 浏览器提示证书错误 | 证书域名不含当前访问的域名 | 证书要同时包含 example.com 和 www.example.com |
| 邮件被收件方拒收 | IP 没有反向解析(PTR) | PTR 由 IP 的持有方设置,向机房或服务商提工单 |
租用服务器时这些信息在哪看
租用服务器的用户不需要自己规划 IP:IP、网关、掩码和 DNS 由服务商分配,通常在客户面板的服务器详情页列出;装系统时服务商的镜像一般已经把公网 IP 配进系统,你只需核对。做得完整的面板还能让你自己重装系统、进救援模式、打开 VNC 控制台,网络配错把自己锁在外面时,用控制台改回来比提工单快得多(例如 Toplink DCIM 的客户自助端就把这几项放在一起)。托管自己的服务器则相反,这些参数要在上架前向机房索取,并且提前配好带外管理口,否则改错一次网络配置就得去一趟机房。
常见问题
一台服务器能绑定多个域名吗?
可以。多个域名的 A 记录都指向同一个 IP,再在 Nginx 或 Apache 里为每个域名配置一个 server 或 VirtualHost,Web 服务器按请求头里的 Host 字段把请求分到对应站点,IP 数量不限制域名数量。
域名解析改了多久生效?
权威 DNS 上的记录几乎立即更新,用户看到新结果要等各级递归 DNS 缓存按旧记录的 TTL 过期,通常几分钟到几小时。计划切换 IP 前一天把 TTL 调到 300 秒以内,切换后的等待时间就能压到几分钟。更换 DNS 服务商(改 NS 记录)的生效时间更长,通常以一两天计。
换了服务商或换了 IP,备案要重新办吗?
备案主体和域名不变、只在同一家接入商内换 IP 的,向接入商报备变更即可;换到另一家接入商,要在新接入商处办理接入备案(新增接入),原备案号保留,不用从头备案。材料和流程以新接入商的要求为准。
服务器只有 IPv6 地址,域名能用吗?
能,添加 AAAA 记录即可,但只有具备 IPv6 网络的用户能访问。目前多数用户仍依赖 IPv4,生产业务应同时配置 A 和 AAAA 记录。