3、端口转发基础:路由器端口转发原理、配置HA的HTTP/HTTPS端口转发、防火墙规则设置

好,咱们进入第三讲。这一讲是远程访问的「地基工程」——端口转发。

说实话,很多新手朋友一上来就折腾DDNS、折腾反向代理,结果发现外网还是连不上。为什么?因为最基础的路由器端口转发根本没配对。我见过太多这样的案例了,折腾一整天,最后发现是路由器上少开了一个端口。

所以这一章,咱们把端口转发这件事彻底讲透。你跟着我走一遍,以后再也不用来回翻路由器后台了。

3.1 端口转发到底在干什么?

先问个问题:你家路由器只有一个公网IP,但家里有十几台设备都在上网。外网发来的数据包,路由器怎么知道该发给谁?

答案就是端口转发。

说白了,端口转发就是一张「门牌号对照表」。路由器收到外网请求后,根据请求的端口号,把数据包转给内网里对应的设备。

举个例子:

  • 外网访问你的公网IP的8123端口 → 路由器查表 → 转发给内网192.168.1.100的8123端口
  • 外网访问你的公网IP的443端口 → 路由器查表 → 转发给内网192.168.1.100的443端口

嗯,就是这么简单。但实际配置时,坑可不少。

核心要点:端口转发是「一对一」的映射关系。一个外网端口只能映射到一个内网IP的一个端口。你不能把8123同时映射给两台设备。

3.2 配置HA的HTTP端口转发(8123)

Home Assistant默认跑在8123端口上。这是最基础的配置方式,也是我建议新手入门时用的方案。

具体步骤:

  1. 登录路由器后台——通常是192.168.1.1或192.168.0.1,具体看你的路由器品牌。
  2. 找到「端口转发」或「虚拟服务器」——不同路由器叫法不一样,TP-Link叫「虚拟服务器」,华硕叫「端口转发」,小米叫「端口映射」。反正就那个意思。
  3. 添加一条规则:
    • 外部端口:8123
    • 内部IP:你的HA主机IP(比如192.168.1.100)
    • 内部端口:8123
    • 协议:TCP
  4. 保存并重启路由器——这一步很多人会忘,我建议你养成习惯,配完就重启一下。

我的小技巧:配置之前,先在HA主机上执行 curl localhost:8123,确认HA本地能正常访问。否则你配了半天端口转发,结果发现HA自己挂了,那就尴尬了。

3.3 配置HA的HTTPS端口转发(443)

HTTP是明文传输,说白了就是「裸奔」。你在外网访问HA时,用户名密码都是明文在网络上跑。这你受得了吗?

所以我个人强烈建议,至少配一个HTTPS。哪怕你用自签名证书,也比裸奔强。

HTTPS端口转发的配置和HTTP类似,但有几个关键区别:

项目 HTTP HTTPS
默认端口 8123 443
协议 TCP TCP
是否需要证书 不需要 需要(自签名或Let's Encrypt)
安全性 低(明文) 高(加密)

配置步骤:

  1. 在HA的 configuration.yaml 中启用HTTPS:
# 启用HTTPS
http:
  server_port: 443
  ssl_certificate: /ssl/fullchain.pem
  ssl_key: /ssl/privkey.pem
  1. 在路由器上添加端口转发规则:
    • 外部端口:443
    • 内部IP:你的HA主机IP
    • 内部端口:443
    • 协议:TCP

注意:443端口是HTTPS的默认端口,很多运营商可能会封掉。如果你发现外网访问不了,可以试试用8443或其他高位端口。我曾经遇到过某运营商把443端口封了,折腾了两天才发现是运营商的问题。

3.4 防火墙规则设置

端口转发配好了,但外网还是访问不了?别急,八成是防火墙在搞鬼。

防火墙分两层:

  • 路由器防火墙——控制外网到内网的访问
  • 主机防火墙——控制内网到本机的访问

咱们一个一个说。

3.4.1 路由器防火墙

大部分家用路由器默认是「允许端口转发」的。但有些企业级路由器或刷了OpenWrt的路由器,默认会禁止所有入站流量。

你需要检查:

  • 是否开启了「允许WAN口访问」
  • 是否有「入站规则」拒绝了你的端口
  • 是否开启了「SPI防火墙」——这个有时候会误杀合法流量

3.4.2 主机防火墙(以Ubuntu为例)

如果你的HA跑在Linux上,大概率默认防火墙是关闭的。但如果你手动开启了ufw或iptables,那就得放行端口。

# 放行8123端口
sudo ufw allow 8123/tcp

# 放行443端口
sudo ufw allow 443/tcp

# 查看当前规则
sudo ufw status

避坑指南:我曾经遇到过一台树莓派,ufw默认规则是拒绝所有入站流量。我配了端口转发,但忘了放行ufw,结果外网死活连不上。查了半小时才发现是防火墙的问题。所以,配完端口转发后,第一件事就是检查主机防火墙。

3.5 验证端口转发是否生效

配置完了,怎么知道有没有生效?

我一般用这几种方法:

  1. 内网验证:在局域网内用另一台设备访问 http://192.168.1.100:8123,确认HA能正常打开。
  2. 外网验证:用手机切到4G/5G网络,访问 http://你的公网IP:8123
  3. 在线端口检测工具:yougetsignal.comportchecker.co 检测端口是否开放。

如果外网访问不了,按这个顺序排查:

  • 公网IP对不对?——去 ip.sb 查一下
  • 路由器端口转发配没配?——进后台看一眼
  • 主机防火墙放没放行?——ufw status 看一下
  • 运营商封没封端口?——换个高位端口试试

嗯,基本上就这些。端口转发这件事,说白了就是「配一次,管三年」。只要配对了,以后基本不用动。

下一章咱们聊DDNS,解决公网IP变动的问题。到时候你会发现,端口转发配好了,DDNS就是锦上添花的事。