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端口上。这是最基础的配置方式,也是我建议新手入门时用的方案。
具体步骤:
- 登录路由器后台——通常是192.168.1.1或192.168.0.1,具体看你的路由器品牌。
- 找到「端口转发」或「虚拟服务器」——不同路由器叫法不一样,TP-Link叫「虚拟服务器」,华硕叫「端口转发」,小米叫「端口映射」。反正就那个意思。
- 添加一条规则:
- 外部端口:8123
- 内部IP:你的HA主机IP(比如192.168.1.100)
- 内部端口:8123
- 协议:TCP
- 保存并重启路由器——这一步很多人会忘,我建议你养成习惯,配完就重启一下。
我的小技巧:配置之前,先在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) |
| 安全性 | 低(明文) | 高(加密) |
配置步骤:
- 在HA的
configuration.yaml中启用HTTPS:
# 启用HTTPS
http:
server_port: 443
ssl_certificate: /ssl/fullchain.pem
ssl_key: /ssl/privkey.pem
- 在路由器上添加端口转发规则:
- 外部端口: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 验证端口转发是否生效
配置完了,怎么知道有没有生效?
我一般用这几种方法:
- 内网验证:在局域网内用另一台设备访问
http://192.168.1.100:8123,确认HA能正常打开。 - 外网验证:用手机切到4G/5G网络,访问
http://你的公网IP:8123。 - 在线端口检测工具:用
yougetsignal.com或portchecker.co检测端口是否开放。
如果外网访问不了,按这个顺序排查:
- 公网IP对不对?——去
ip.sb查一下 - 路由器端口转发配没配?——进后台看一眼
- 主机防火墙放没放行?——
ufw status看一下 - 运营商封没封端口?——换个高位端口试试
嗯,基本上就这些。端口转发这件事,说白了就是「配一次,管三年」。只要配对了,以后基本不用动。
下一章咱们聊DDNS,解决公网IP变动的问题。到时候你会发现,端口转发配好了,DDNS就是锦上添花的事。