V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Kenshiro
V2EX  ›  路由器

求 2024 年能永久在华硕路由器上写 hosts 做屏蔽的方法

  •  
  •   Kenshiro · 346 天前 · 3297 次点击
    这是一个创建于 346 天前的主题,其中的信息可能已经有所发展或是发生改变。
    如题,挺纳闷的。华硕路由器作为折腾路由没有相应的 HOSTS 文件的 GUI 文件,用 SSH 修改重启就没了。Gooogle 一圈和 SMB 论坛试了一堆方法,主题不对或脚本不能在新系统使用等一堆破事。

    求懂的老哥出个主意
    32 条回复    2023-12-29 21:04:51 +08:00
    r6cb
        1
    r6cb  
       346 天前   ❤️ 1
    crontab 用 @reboot 来实现每次重启后用自己的文件覆盖系统的 hosts
    nomytwins
        2
    nomytwins  
       346 天前
    整个软路由,直接软路由改掉不就行了
    Kenshiro
        3
    Kenshiro  
    OP
       346 天前
    @r6cb 老哥方便给个现成的轮子吗?
    5966
        4
    5966  
       346 天前 via iPhone
    小米的能够在 app 上添加内容啊。
    Puteulanus
        5
    Puteulanus  
       346 天前   ❤️ 1
    之前搜到过这个,现在能用的好像是 script_usbmount 钩子
    https://www.tiansam.net/?p=1334
    https://blog.bbskali.cn/3929.html
    参考这俩,需要路由器上插一个 U 盘,用钩子设定开机启动脚本,然后你脚本里再去修改 hosts (可以直接在 jffs 存一份你的 hosts ,开机的时候用脚本拷过去覆盖系统的)
    xiaoz
        6
    xiaoz  
       346 天前 via Android
    换个思路?搭建 AdguardHome ,然后 ADH 上设置 host ,再把路由器 DNS 指向 adh 不就解决了。
    dsgdsfh
        7
    dsgdsfh  
       346 天前
    @xiaoz 我就是这样做的
    bigshawn
        8
    bigshawn  
       346 天前 via iPhone
    @xiaoz 还能顺便 doh 。
    Kenshiro
        9
    Kenshiro  
    OP
       346 天前
    @Puteulanus 这就去试试,谢大佬
    Kenshiro
        10
    Kenshiro  
    OP
       346 天前
    @xiaoz 问题是墙对自建 DNS 不定期乱打,不然也想搭了😥
    gentrydeng
        11
    gentrydeng  
       346 天前 via Android
    如果能装 Asuswrt-Merlin 固件的话,就比较方便了。它支持编写自定义配置文件: https://github.com/RMerl/asuswrt-merlin.ng/wiki/Custom-config-files

    如果是 postconf 脚本的话,记得赋予执行权限。
    Kenshiro
        12
    Kenshiro  
    OP
       346 天前
    @gentrydeng postconf 这个试了不行😥
    Kenshiro
        13
    Kenshiro  
    OP
       346 天前
    @Puteulanus 老哥不行啊,脚本没有执行
    rshun
        14
    rshun  
       346 天前
    安装梅林后,在/jffs/configs/dnsmasq.d,新建 dnsmasq.conf ,内容如下

    address=/baidu.com/127.0.0.1

    重启一下 dnsmasq
    service restart_dnsmasq

    不知道是不是你要的效果
    gentrydeng
        15
    gentrydeng  
       346 天前 via Android
    @Kenshiro #12 这个只有在 Asuswrt-Merlin 才可用。
    如果你使用的是原厂固件,则没有这个功能。
    helldiablo
        16
    helldiablo  
       346 天前
    1.原厂固件做不到,需要梅林固件或者官改,主要是 jffs 的问题;
    2.改刷梅林固件或者官改,开启 JFFS 和 SSH 登录;
    3.SSH 或 WINSCP 登录路由器后
    在/jffs/configs 下建一名为 dnsmasq.conf.add 的文件
    在里面写 addn-hosts=/jffs/configs/hosts
    在/jffs/configs 下建自己的 hosts 的文件
    执行 service restart_dnsmasq 重启 dnsmasq 服务(或者重启路由器)
    4.hosts 文件直接使用 win 下的就行,需要维护时就替换一下,重启下 dnsmasq 服务即可,全程可避免重启。这种方法我已经用了 3 年多了,重启不掉。
    xiaoz
        17
    xiaoz  
       346 天前
    @Kenshiro #10
    1. ADH 搭建在内网的,根本不走 GFW
    2. 再说了 ADH 可以自定义 HOST ,这个优先级肯定是很高的啊。
    Puteulanus
        18
    Puteulanus  
       346 天前
    @Kenshiro 其他的我就不知道了,只是查资料的时候正常查到过华硕的这个 😂
    Kenshiro
        19
    Kenshiro  
    OP
       346 天前
    @xiaoz 求一个搭建方法。
    @helldiablo 成功复制过去但 hosts 屏蔽的域名没生效。
    helldiablo
        20
    helldiablo  
       345 天前 via Android
    @Kenshiro 路由固件是什么,官方原版的就放弃吧,不支持 jffs 下的配置的
    Kenshiro
        21
    Kenshiro  
    OP
       345 天前
    @helldiablo 梅林的 386.12.4 路由器需要什么设定吗
    helldiablo
        22
    helldiablo  
       345 天前
    @Kenshiro 梅林的在后台开 jffs ,按照上述步骤走就可以了。其实就是给 DNSMASQ 加了一个配置文件,或者你可以将类似于 address=/test.com/127.0.0.1 的形式添加到/jffs/configs/dnsmasq.conf.add 中替代 hosts 文件
    Kenshiro
        23
    Kenshiro  
    OP
       345 天前
    @helldiablo 是这样的老哥,ssh 看了系统 hosts 文件是加进了,但里面的被 127.0.0.1 域名还是能在设备访问,DNS 缓存也刷了。

    路由那启动了 DNS Director 和 静态 DHCP 的 DNS 指定,有没有可能是这些设定影响吗?老哥方便透露您那边设定的吗
    Kenshiro
        24
    Kenshiro  
    OP
       345 天前
    @gentrydeng 我这个是梅林但 postconf 好像新版不能用了
    gentrydeng
        25
    gentrydeng  
       345 天前
    @Kenshiro 不可能,不能用肯定是别的原因。比如没有赋予执行权限,“chmod +x example.postconf”或者放错位置。
    helldiablo
        26
    helldiablo  
       344 天前
    @Kenshiro
    1.系统管理-系统设置下,Enable JFFS custom scripts and configs-->是
    2.DHCP 下,DNS 未作指定,Advertise router's IP in addition to user-specified DNS-->是
    3.DNS Director 未设置
    4./jffs/configs 下两个文件,dnsmasq.conf.add 和 hosts 。dnsmasq.conf.add 内容为 addn-hosts=/jffs/configs/hosts 。hosts 文件编码为 UTF-8
    5.初次修改或维护 hosts 后,重启路由器或者 SSH 过去 service restart_dnsmasq ,重启 dnsmasa 服务
    6.客户端 DNS 设置为路由器 IP
    Brainos
        27
    Brainos  
       342 天前
    @Kenshiro #23 就是这里的问题,你用这两个功能把客户端的指向了其他的 dns ,路由器里的 dnsmasq 就直接被绕过去了,只有客户端的 dns 使用的是 dnsmasq 的监听地址(路由器的 ip 地址),修改才能生效
    Kenshiro
        28
    Kenshiro  
    OP
       342 天前
    @helldiablo 老哥按照你设定改了,HOSTS 是写入了但网关地址作 DNS 解析不了网站
    @Brainos DNS Director 这个是有可能但静态 DHCP 也会导致吗,方便展开说说?
    Kenshiro
        29
    Kenshiro  
    OP
       342 天前
    @gentrydeng 周末研究研究
    Brainos
        30
    Brainos  
       342 天前
    @Kenshiro #28 如果只用静态 dhcp 给设备固定 ip 地址就不会,但如果手动给设备设置了独立的 dns 服务器就会影响设备的 dns 解析。
    另外,你应该 ssh 进命令行界面,用 `nslookup 你设置 host 的域名 你的路由器地址` 来测试设置是否生效
    BitGeek
        31
    BitGeek  
       334 天前   ❤️ 1
    https://github.com/jumpsmm7/Asuswrt-Merlin-AdGuardHome-Installer 我先咱用的就是这个,官方的 adguardhome 安装脚本
    BitGeek
        32
    BitGeek  
       334 天前
    @BitGeek 但科学上网和它冲突,安装科学上网后 ad 就失效了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3140 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 14:17 · PVG 22:17 · LAX 06:17 · JFK 09:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.