0%

局域网自定义域名

局域网自定义域名

背景

由于家庭网络环境日渐复杂,服务器上跑的工程项目越来越多。人工强行基于IP+端口的方式来记忆各个服务着实有些费劲。本文简单介绍一下折腾自定义域名的过程。

拓扑

一个并不完整的家庭网路拓扑

一个并不完整的家庭网路拓扑

搭建思路

自定义域名到IP

由域名到IP会经过几个步骤、例如查找系统缓存、查找Host文件、查找路由器缓存、查找DNS服务器等。考虑到Host只能解决单系统的自定义域名解析问题并不通用。这里最终采用了在路由器上搭建DNS Server的方案。

自定义域名到端口

DNS Server只解决域名到IP的问题,域名到服务器上特定端口的特定服务仍待解决。这里采用的是Nginx反代的方案。

搭建过程

DNS Server

详细介绍请见参考链接,这里仅体现了核心步骤

  1. 进入路由器 启用SSH
  2. 基于SSH登陆路由器
  3. 编辑文件 /jffs/configs/dnsmasq.d/dnsmasq.conf
  4. 添加泛域名解析 address=/home.site/192.168.x.x
  5. 重启服务 service restart_dnsmasq

补充

  1. 默认的dnsmasq.conf的文件地址为:/etc/dnsmasq.conf
  2. 多个泛域名解析格式为 address=/pan****.com/home.site/192.168.x.x

经过以上过程即可将*.home.site域名解析到192.168.x.x。执行完毕后可在本地简单ping一下测试联通情况。

Nginx反代

基于DockerNginx安装、以及案例中涉及的home-assistant的安装这里不再赘述,详情见参考链接。

按照以下配置将iot.home.site代理到服务器的8123端口即可解决自定义域名到端口的问题。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
upstream home-assistant {
hash $remote_addr consistent;
server localhost:8123;
}
server {
listen 80;
server_name iot.home.site;
location / {
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "$connection_upgrade";
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://home-assistant;
}
}

结果

image

参考 & 引用

docker部署Nginx - 知乎 (zhihu.com)

梅林固件DNSmasq添加接内部域名解析

Docker部署homeassitant_x86bit的博客-CSDN博客_docker安装homeassistant