华硕路由器局域网DNS解析

Database and Ruby, Python, History


我希望内部局域网里面,通过ds220plus可以访问到群晖NAS。我用了华硕的官改固件,默认带了jffs。

SSH进入路由器

ssh -o PubkeyAcceptedKeyTypes=+ssh-rsa -i ~/.ssh/ids_rsa your_username@192.168.51.1 -p 22

创建/jffs/dnsmasq.conf.add文件,内容为addn-hosts=/jffs/configs/hosts,然后在/jffs/configs/hosts里添加192.168.51.123 ds220plus即可。

解析所有*.ds200plus 域名

如果要解析所有*.ds220plus域名,就需要创建/jffs/configs/dnsmasq.d/dnsmasq.conf.add,内容为address=/.ds220plus/192.168.51.123即可。

重启生效

运行service restart_dnsmasq重启dnsmasq生效改动。

为什么.local 域名不行

刚开始想用.local域名,发现Mac等系统已经使用了.local 域名,会导致解析不生效。

搭配Nginx

我也解析了.macmini域名,这样postgres.macmini会被解析到我的Mac Mini上的5432端口。Postgres是本机安装,所以用了Mac Mini的5432端口。

如果是安装在容器里面,比如Orb stack里面我跑了两个web应用,都监听了80端口,那就需要使用Nginx。比如,下面的配置就可以将rsbuild.macmini转发到Orb stack里面的rsbuild容器的8080端口。

server {
    listen 80;
    server_name rsbuild.macmini;

    access_log /var/log/nginx/airflow-access.log;
    error_log /var/log/nginx/airflow-error.log;

    location / {
        proxy_pass http://rsbuild.default.svc.cluster.local:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        
        # WebSocket support (for Airflow UI)
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        
        # Timeout settings
        proxy_connect_timeout 300s;
        proxy_send_timeout 300s;
        proxy_read_timeout 300s;
    }
}

Reference

https://github.com/RMerl/asuswrt-merlin.ng/wiki/Custom-domains-with-dnsmasq