1 
                    
                    chinni      2023-02-15 10:15:22 +08:00 via Android 
                    
                    1.用 forward 表   2.用 sni 匹配比 ip 颗粒度更加细 
                 | 
            
     2 
                    
                    18xlX5iTe9mdoau0      2023-02-15 10:58:39 +08:00 
                    
                    我是树莓派搭建 DNS ,然后 DHCP 设置树莓派 ip ,直接 DNS 写规则屏蔽 
                 | 
            
     3 
                    
                    sylviaweissenba      2023-02-15 11:01:00 +08:00 
                    
                    vi /etc/hosts 
                 | 
            
     4 
                    
                    ouqihang      2023-02-15 11:01:01 +08:00 via Android    官方提供了好几种方法,包括防火墙,代理服务器,layer7 都有。 
                https://wiki.mikrotik.com/wiki/Manual:IP/Proxy https://wiki.mikrotik.com/wiki/Manual:IP/Firewall/L7  | 
            
     5 
                    
                    ouqihang      2023-02-15 11:01:57 +08:00 via Android 
                    
                    用 input 应该不对,input 是从外网进内网。 
                 | 
            
     6 
                    
                    ych8398527      2023-02-15 11:15:45 +08:00 
                    
                    ip->dns->static  把域名直接解析到 127.0.0.1 
                 | 
            
     10 
                    
                    mac100      2023-02-15 11:43:06 +08:00 
                    
                    添加一个旁路由吧。ros 管 IP 分流  OP 管域名分流 。完美 
                 | 
            
     11 
                    
                    Ruslan      2023-02-15 13:37:20 +08:00 
                    
                    配置 DNS 劫持,把 53 端口劫持到你自己内网的 DNS 服务器,在自己 DNS 服务器把域名解析到 127.0.0.1 
                 | 
            
     12 
                    
                    wwbfred      2023-02-15 14:33:19 +08:00 via iPhone 
                    
                    家用需求该是上 OP 吧,ROS 不是这个场景的,有些家庭基础功能到 ROS 里变成了折腾功能。OP 里 dnsmasq 直接写 0.0.0.0 就行了。 
                 | 
            
     13 
                    
                    qfdk   PRO 建议来个 aurgard home 然后 ip 设置成 3.7.2.1 想怎么玩儿就咋玩儿 
                 | 
            
     14 
                    
                    datocp      2023-02-15 15:09:09 +08:00 
                    
                    这种对于 openwrt 就简单了 
                直接 dnsmasq address=/qq.com/127.0.01 #这个地址还是是比 0.0.0.0 更可靠,消亡时间更快。之前是解决 office2016 升级用。 其它的就是对电视进行分析它连哪些外部 ip 域名,然后用 nslookup 之类的取得 ip 。以目前 CDN 的存在这种方式误伤率相当高的。又是 dnsmasq 更灵活调用 ipset ,ipset=/qq.com/BdstIP 然后 iptables -p tcp -s 电视 ip -d 升级 ip -j -j REJECT --reject-with tcp-reset iptables -s 电视 ip -d 升级 ip-j REJECT --reject-with icmp-net-unreachable 哈哈,ros 真看不上。哪有原生 linux 好用。随便搞个优酷 yk1 也能跑满 100mbps 。没有 1000mbps 带宽,不知道 erx 能带多大的带宽。  | 
            
     15 
                    
                    datocp      2023-02-15 15:10:07 +08:00 
                    
                    iptables -p tcp -s 电视 ip -d 升级 ip -j REJECT --reject-with tcp-reset 
                iptables -s 电视 ip -d 升级 ip -j REJECT --reject-with icmp-net-unreachable  | 
            
     18 
                    
                    3dxfood      2023-02-15 16:57:39 +08:00 
                    
                    可以用 ros 做 dns server ,dns static 里写黑洞 A 记录;或者 ros 里 DNS server 写旁路 op 地址,用 op 来做。 
                 | 
            
     19 
                    
                    mrzx      2023-02-15 17:13:58 +08:00 
                    
                    @3dxfood 谢谢,大致理解了。 
                routeros 大概通过 3 种方式来解决这个 UP 的需求。 1.采用 DNS 劫持的方式,将不想访问的站点直接解析成错误的 IP ,让广告失效。DNS 劫持的工作可以由 routeros 的 dns 功能做,或者 openwrt 固件的路由器来做? 2.通过 layer7 识别方式来写,感觉这个难度最高,怎么写才能屏蔽广告,如果有对应的例子就能理解了,看了一下楼上提供的官网例子,没看懂。。。 3.通过你们说的 sni,我搜了半天才了解 sni 是什么,“在 HTTPS 中,先有 TLS 握手,然后才能开始 HTTP 对话。如果没有 SNI ,客户端将无法向服务器指示正在与之通信的主机名。” 然后利用 routeros 强大的 sni 匹配功能,将主机名匹配起来,在决定 drop 和放行.  | 
            
     20 
                    
                    mrzx      2023-02-15 17:38:56 +08:00 
                    
                    layer7 语法搜了好久,大概理解了。 
                大致是先用 wireshark 抓包,抓取数据流用的 data 部分,比如 V2EX 在数据流的十六进制就是 76 32 65 78 ,在通过在 routeros 里新建 layer7 匹配策略,在 Regex 语句匹配这些十六进制,可能正则表达式跟 iptables 之类的稍有些区别。。 比如十六进制 76 在 routeros 下就写成\76 ^代表数据包的开头 $代表数据包的结尾 匹配 V2EX 的,layer7 语法应该写成“^\76.+ \78$” 哪天在家里屏蔽老妈上拼多多试试。。。。  | 
            
     21 
                    
                    mrzx      2023-02-15 17:41:05 +08:00 
                    
                    还有一点比较好奇的是,在 UP 主的 android 电视机上,用什么软件抓包? wireshark 肯定是没有的.tcpdump?那个需要 root 权限的。。。 
                 | 
            
     24 
                    
                    linuxgo   OP @3dxfood #18 我现在就是 ros 做 dns ,然后把国外的分流给 op 解析,我也看了 ros 的 dns static ,没看到如何添加 address-list ,一条条添加有点麻烦,因为总共有几十条地址要屏蔽 
                 | 
            
     25 
                    
                    linuxgo   OP 以前用 op 的 pw 的屏蔽网站功能很管用,但是 pw 的机场自动切换不好用,现在用的 openclash 又没地方加黑名单 
                 | 
            
     28 
                    
                    linuxgo   OP @3dxfood #26 你说的有道理,还是要用脚本更方便。我现在的 ip 分流是把 chinaip 做成一个 addresslist ,在 mangle 里把除了这些 ip 以外的 ip 都转发到 op 去解析和代理。 
                 | 
            
     29 
                    
                    neroxps      2023-02-16 08:32:10 +08:00 via iPhone 
                    
                    ros 能直接把某个域名加到 address-list 他会自动解析 ip 。然后 forward 表 block 这个 address_list 即可。设置起来比 OpenWrt 更简单。 
                @datocp 虽然我也不喜欢 ros (概念落后)但网络特别是防火墙配置上我感觉他比 OpenWrt 清晰,而且人家有手机 app 。OpenWrt 的 web ui 一言难尽。  | 
            
     31 
                    
                    neroxps      2023-02-16 08:40:04 +08:00 via iPhone 
                    
                    @3dxfood  
                ![]() 我的方案。 结合 op 做的。 ros 上游 dns 是 op 。脚本检查 op 的 dns 服务器工作不正常(例如进程 kill 掉了)那么就切回运营商 dns 。 自己写的脚本: https://github.com/neroxps/RouterOS-Script/blob/master/Clash_dns_check.rsc  | 
            
     32 
                    
                    neroxps      2023-02-16 08:42:41 +08:00 via iPhone 
                    
                    @linuxgo 有一个专门针对 ros 读取 clash 规则的 dns 工具。能通过 ros api 写到 address_list 里面。基于 coredns 做的插件。但没文档,go 写要编译。 
                配置得看代码写了🤣 作者就是写着玩的,文档没写。 https://github.com/charleyzhu/coredns_wormhole_plugin  | 
            
     34 
                    
                    linuxgo   OP 我现在就是把要屏蔽的域名添加到 blockweb address list 里,然后在 filter 添加 
                chain=forward action=reject reject-with=icmp-host-unreachable dst-address-list=blockweb 但实际上完全没作用  | 
            
     35 
                    
                    neroxps      2023-02-16 13:35:11 +08:00 
                    
                    @linuxgo #33 要确保客户机拿到的 IP 和你规则配置的 IP 一致。另外你 forward 表的规则顺序得搞对,不然前面有个 accept 下面再搞什么 reject 都没用。 
                 | 
            
     36 
                    
                    linuxgo   OP 顺便问下 ros 里 mangle,NAT 和 filter 的规则执行是什么样一个顺序?哪个先哪个后呀 
                 | 
            
     37 
                    
                    3dxfood      2023-02-17 20:44:14 +08:00 
                    
                    
                 | 
            
     38 
                    
                    winbox      2023-02-21 03:29:57 +08:00 
                    
                    直接给长虹域名指定一个错误的 IP 地址 
                /ip/dns/static/add type=FWD match-subdomain=yes address-list=VPN forward-to=1.1.1.1 name=openwrt.org  | 
            
     41 
                    
                    gam2046      2023-03-21 10:54:48 +08:00 
                    
                    ros 是否有办法将部分域名的 IPv6 给禁止掉。因为我发现国内有些厂商的域名,有 IPv6 的解析结果,但是却访问不了。导致浏览器需要挂起很久,才回落到 IPv4 访问。 
                 |