Open Joyist2021 opened 8 months ago
open /etc/mosdns/hosts: no such file or directory
在提交之前,请确认
- [x] 我已经尝试搜索过 Issue ,但没有找到相关问题。
- [x] 我正在使用最新的 mosdns 版本(或者最新的 commit),问题依旧存在。
- [x] 我仔细看过 wiki 后仍然无法自行解决该问题。
- [x] 我非常确定这是 mosdns 核心的问题。(如果是通过第三方衍生软件使用 mosdns 核心,不确定问题源头时,请先向衍生软件开发者提交问题。)
mosdns 版本
几乎最新版本
操作系统
ubuntu
Bug 描述和复现步骤
2024-03-20T13:57:26.474Z INFO working directory changed {"path": "/etc/mosdns"} Error: fail to load config, failed to unmarshal config: 1 error(s) decoding:
- '' has invalid keys: data_providers, servers 2024-03-20T13:57:26.478Z FATAL fail to load config, failed to unmarshal config: 1 error(s) decoding:
- '' has invalid keys: data_providers, servers 2024-03-20T14:05:57.139Z INFO working directory changed {"path": "/etc/mosdns"} 2024-03-20T14:05:57.142Z INFO main config loaded {"file": "/etc/mosdns/config.yaml"} Error: failed to init plugin [BUG]OpenWrt 服务脚本不能启动程序 #4 hosts, failed to init plugin: failed to read file #0 /etc/mosdns/hosts, open /etc/mosdns/hosts: no such file or directory 2024-03-20T14:05:57.144Z FATAL failed to init plugin [BUG]OpenWrt 服务脚本不能启动程序 #4 hosts, failed to init plugin: failed to read file #0 /etc/mosdns/hosts, open /etc/mosdns/hosts: no such file or directory 2024-03-20T14:15:23.744Z INFO working directory changed {"path": "/etc/mosdns"} 2024-03-20T14:15:23.747Z INFO main config loaded {"file": "/etc/mosdns/config.yaml"} 2024-03-20T14:17:45.469Z INFO working directory changed {"path": "/etc/mosdns"} 2024-03-20T14:17:45.471Z INFO main config loaded {"file": "/etc/mosdns/config.yaml"}
使用的配置文件
# EasyMosdns v3.0(Final Release) # https://apad.pro/easymosdns log: file: "./mosdns.log" level: error data_providers: - tag: chinalist file: ./rules/china_domain_list.txt auto_reload: true - tag: gfwlist file: ./rules/gfw_domain_list.txt auto_reload: true - tag: cdncn file: ./rules/cdn_domain_list.txt auto_reload: true - tag: chinaip file: ./rules/china_ip_list.txt auto_reload: true - tag: gfwip file: ./rules/gfw_ip_list.txt auto_reload: true - tag: adlist file: ./rules/ad_domain_list.txt auto_reload: true - tag: ecscn file: ./ecs_cn_domain.txt auto_reload: true - tag: ecsnoncn file: ./ecs_noncn_domain.txt auto_reload: true - tag: hosts file: ./hosts.txt auto_reload: true plugins: # 缓存的插件 # [lan|wan] - tag: cache_lan type: cache args: size: 8192 #redis: "redis://127.0.0.1:6379/0" lazy_cache_ttl: 86400 cache_everything: true lazy_cache_reply_ttl: 1 - tag: cache_wan type: cache args: size: 131072 compress_resp: true #redis: "redis://127.0.0.1:6379/0" lazy_cache_ttl: 86400 cache_everything: true lazy_cache_reply_ttl: 5 # Hosts的插件 - tag: hosts type: hosts args: hosts: - "provider:hosts" # 获取ECS的插件 - tag: ecs_auto type: ecs args: auto: true force_overwrite: false # 指定ECS的插件 - tag: ecs_global type: ecs args: auto: false ipv4: "168.95.1.0" ipv6: "2001:b000:168::" force_overwrite: false # 匹配ECS的插件 - tag: ecs_is_lan type: query_matcher args: ecs: - "0.0.0.0/8" - "10.0.0.0/8" - "100.64.0.0/10" - "127.0.0.0/8" - "169.254.0.0/16" - "172.16.0.0/12" - "192.0.0.0/24" - "192.0.2.0/24" - "198.18.0.0/15" - "192.88.99.0/24" - "192.168.0.0/16" - "198.51.100.0/24" - "203.0.113.0/24" - "224.0.0.0/3" - "::1/128" - "fc00::/7" - "fe80::/10" - tag: ecs_is_cn type: query_matcher args: ecs: - "provider:chinaip" # 调整TTL的插件 # [1m|5m|1h] - tag: ttl_1m type: ttl args: minimal_ttl: 60 maximum_ttl: 3600 - tag: ttl_5m type: ttl args: minimal_ttl: 300 maximum_ttl: 86400 - tag: ttl_1h type: ttl args: minimal_ttl: 3600 maximum_ttl: 86400 # 匹配TYPE12类型请求的插件 - tag: qtype12 type: query_matcher args: qtype: [12] # 匹配TYPE65类型请求的插件 - tag: qtype65 type: query_matcher args: qtype: [65] # 匹配TYPE255类型请求的插件 - tag: qtype255 type: query_matcher args: qtype: [255] # 匹配RCODE2的插件 - tag: response_server_failed type: response_matcher args: rcode: [2] # 屏蔽请求的插件 - tag: black_hole type: blackhole args: rcode: 0 ipv4: "0.0.0.0" ipv6: "::" # 匹配无效域名的插件 - tag: query_is_non_domain type: query_matcher args: domain: - "keyword::" # 匹配本地域名的插件 - tag: query_is_local_domain type: query_matcher args: domain: - "provider:chinalist" # 匹配污染域名的插件 - tag: query_is_non_local_domain type: query_matcher args: domain: - "provider:gfwlist" # 匹配CDN域名的插件 - tag: query_is_cdn_cn_domain type: query_matcher args: domain: - "provider:cdncn" # 匹配广告域名的插件 - tag: query_is_ad_domain type: query_matcher args: domain: - "provider:adlist" # 匹配强制本地解析域名的插件 - tag: query_is_cn_domain type: query_matcher args: domain: - "provider:ecscn" # 匹配强制非本地解析域名的插件 - tag: query_is_noncn_domain type: query_matcher args: domain: - "provider:ecsnoncn" # 匹配本地IP的插件 - tag: response_has_local_ip type: response_matcher args: ip: - "provider:chinaip" # 匹配污染IP的插件 - tag: response_has_gfw_ip type: response_matcher args: ip: - "provider:gfwip" # 转发至本地服务器的插件 - tag: forward_local type: fast_forward args: upstream: - addr: "223.5.5.5" - addr: "tls://120.53.53.53:853" enable_pipeline: true # 转发至远程服务器的插件 - tag: forward_remote type: fast_forward args: upstream: - addr: "tcp://208.67.220.220:5353" enable_pipeline: true #socks5: "127.0.0.1:1080" - addr: "tls://8.8.4.4" enable_pipeline: true #socks5: "127.0.0.1:1080" # 转发至分流服务器的插件 - tag: forward_easymosdns type: fast_forward args: upstream: - addr: "https://doh.apad.pro/dns-query" bootstrap: "119.29.29.29" #dial_addr: "ip:port" #enable_http3: true # 主要的运行逻辑插件 # sequence 插件中调用的插件 tag 必须在 sequence 前定义 # 否则 sequence 找不到对应插件 - tag: main_sequence type: sequence args: exec: # 域名映射IP - hosts # 屏蔽TYPE65与无效类型请求 - if: "[qtype65] || (query_is_non_domain)" exec: - _new_nxdomain_response - _return # 优化PRT与ANY类型请求 - if: "[qtype12] || [qtype255]" exec: - _no_ecs - forward_local - ttl_1h - _return # 缓存ECS - ecs_auto - _edns0_filter_ecs_only - if: ecs_is_lan exec: - cache_lan - _no_ecs else_exec: - cache_wan # 强制用本地服务器解析 - if: query_is_cn_domain exec: - forward_local - ttl_5m - _return # 强制用非本地服务器解析 - if: query_is_noncn_domain exec: # 优先返回ipv4结果 - _prefer_ipv4 - ecs_global - primary: # 默认用分流服务器 - forward_easymosdns secondary: # 超时用远程服务器 - forward_remote fast_fallback: 2500 always_standby: false - ttl_5m - _return # 屏蔽广告域名 - if: query_is_ad_domain exec: - black_hole - ttl_1h - _return # 已知的本地域名或CDN域名用本地服务器解析 - if: "(query_is_local_domain) || (query_is_cdn_cn_domain)" exec: - primary: # 默认用本地服务器 - forward_local - ttl_1m secondary: # 超时用分流服务器 - forward_easymosdns - ttl_5m fast_fallback: 25 always_standby: false # 预防已知的本地域名临时污染 - if: "(! response_has_gfw_ip)" exec: - _return # 已知的污染域名用分流服务器或远程服务器解析 - if: query_is_non_local_domain exec: # 优先返回ipv4结果 - _prefer_ipv4 - ecs_global - primary: # 默认用分流服务器 - forward_easymosdns secondary: # 超时用远程服务器 - forward_remote fast_fallback: 2500 always_standby: false - ttl_5m - _return # 剩下的未知域名用IP分流 # 优先返回ipv4结果 - _prefer_ipv4 - primary: # 默认用分流服务器 - forward_easymosdns - if: response_server_failed exec: - forward_local - _return - ecs_global - if: "(! ecs_is_cn) && (! response_has_local_ip) && [_response_valid_answer]" exec: - forward_easymosdns secondary: # 超时用本地分流器 - forward_remote - if: response_has_local_ip exec: - forward_local - _return - ecs_global - if: "(! ecs_is_cn) && [_response_valid_answer]" exec: - forward_remote fast_fallback: 2500 always_standby: false - ttl_5m servers: - exec: main_sequence timeout: 6 listeners: - protocol: udp addr: "0.0.0.0:53" - protocol: tcp addr: "0.0.0.0:53" #- protocol: http # addr: "127.0.0.1:9053" # url_path: "/dns-query" # get_user_ip_from_header: "X-Forwarded-For" #- protocol: tls # addr: "0.0.0.0:853" # cert: "/etc/mosdns/yourdomain.cert" # TLS 所需证书文件。 # key: "/etc/mosdns/yourdomain.key" # TLS 所需密钥文件。 #api: # http: "127.0.0.1:9080"
mosdns 的 log 记录
2024-03-20T13:57:26.474Z INFO working directory changed {"path": "/etc/mosdns"} Error: fail to load config, failed to unmarshal config: 1 error(s) decoding: * '' has invalid keys: data_providers, servers 2024-03-20T13:57:26.478Z FATAL fail to load config, failed to unmarshal config: 1 error(s) decoding: * '' has invalid keys: data_providers, servers
I had the same issue in version 5.3.1
在提交之前,请确认
- [x] 我已经尝试搜索过 Issue ,但没有找到相关问题。
- [x] 我正在使用最新的 mosdns 版本(或者最新的 commit),问题依旧存在。
- [x] 我仔细看过 wiki 后仍然无法自行解决该问题。
- [x] 我非常确定这是 mosdns 核心的问题。(如果是通过第三方衍生软件使用 mosdns 核心,不确定问题源头时,请先向衍生软件开发者提交问题。)
mosdns 版本
几乎最新版本
操作系统
ubuntu
Bug 描述和复现步骤
2024-03-20T13:57:26.474Z INFO working directory changed {"path": "/etc/mosdns"} Error: fail to load config, failed to unmarshal config: 1 error(s) decoding:
- '' has invalid keys: data_providers, servers 2024-03-20T13:57:26.478Z FATAL fail to load config, failed to unmarshal config: 1 error(s) decoding:
- '' has invalid keys: data_providers, servers 2024-03-20T14:05:57.139Z INFO working directory changed {"path": "/etc/mosdns"} 2024-03-20T14:05:57.142Z INFO main config loaded {"file": "/etc/mosdns/config.yaml"} Error: failed to init plugin [BUG]OpenWrt 服务脚本不能启动程序 #4 hosts, failed to init plugin: failed to read file #0 /etc/mosdns/hosts, open /etc/mosdns/hosts: no such file or directory 2024-03-20T14:05:57.144Z FATAL failed to init plugin [BUG]OpenWrt 服务脚本不能启动程序 #4 hosts, failed to init plugin: failed to read file #0 /etc/mosdns/hosts, open /etc/mosdns/hosts: no such file or directory 2024-03-20T14:15:23.744Z INFO working directory changed {"path": "/etc/mosdns"} 2024-03-20T14:15:23.747Z INFO main config loaded {"file": "/etc/mosdns/config.yaml"} 2024-03-20T14:17:45.469Z INFO working directory changed {"path": "/etc/mosdns"} 2024-03-20T14:17:45.471Z INFO main config loaded {"file": "/etc/mosdns/config.yaml"}
使用的配置文件
# EasyMosdns v3.0(Final Release) # https://apad.pro/easymosdns log: file: "./mosdns.log" level: error data_providers: - tag: chinalist file: ./rules/china_domain_list.txt auto_reload: true - tag: gfwlist file: ./rules/gfw_domain_list.txt auto_reload: true - tag: cdncn file: ./rules/cdn_domain_list.txt auto_reload: true - tag: chinaip file: ./rules/china_ip_list.txt auto_reload: true - tag: gfwip file: ./rules/gfw_ip_list.txt auto_reload: true - tag: adlist file: ./rules/ad_domain_list.txt auto_reload: true - tag: ecscn file: ./ecs_cn_domain.txt auto_reload: true - tag: ecsnoncn file: ./ecs_noncn_domain.txt auto_reload: true - tag: hosts file: ./hosts.txt auto_reload: true plugins: # 缓存的插件 # [lan|wan] - tag: cache_lan type: cache args: size: 8192 #redis: "redis://127.0.0.1:6379/0" lazy_cache_ttl: 86400 cache_everything: true lazy_cache_reply_ttl: 1 - tag: cache_wan type: cache args: size: 131072 compress_resp: true #redis: "redis://127.0.0.1:6379/0" lazy_cache_ttl: 86400 cache_everything: true lazy_cache_reply_ttl: 5 # Hosts的插件 - tag: hosts type: hosts args: hosts: - "provider:hosts" # 获取ECS的插件 - tag: ecs_auto type: ecs args: auto: true force_overwrite: false # 指定ECS的插件 - tag: ecs_global type: ecs args: auto: false ipv4: "168.95.1.0" ipv6: "2001:b000:168::" force_overwrite: false # 匹配ECS的插件 - tag: ecs_is_lan type: query_matcher args: ecs: - "0.0.0.0/8" - "10.0.0.0/8" - "100.64.0.0/10" - "127.0.0.0/8" - "169.254.0.0/16" - "172.16.0.0/12" - "192.0.0.0/24" - "192.0.2.0/24" - "198.18.0.0/15" - "192.88.99.0/24" - "192.168.0.0/16" - "198.51.100.0/24" - "203.0.113.0/24" - "224.0.0.0/3" - "::1/128" - "fc00::/7" - "fe80::/10" - tag: ecs_is_cn type: query_matcher args: ecs: - "provider:chinaip" # 调整TTL的插件 # [1m|5m|1h] - tag: ttl_1m type: ttl args: minimal_ttl: 60 maximum_ttl: 3600 - tag: ttl_5m type: ttl args: minimal_ttl: 300 maximum_ttl: 86400 - tag: ttl_1h type: ttl args: minimal_ttl: 3600 maximum_ttl: 86400 # 匹配TYPE12类型请求的插件 - tag: qtype12 type: query_matcher args: qtype: [12] # 匹配TYPE65类型请求的插件 - tag: qtype65 type: query_matcher args: qtype: [65] # 匹配TYPE255类型请求的插件 - tag: qtype255 type: query_matcher args: qtype: [255] # 匹配RCODE2的插件 - tag: response_server_failed type: response_matcher args: rcode: [2] # 屏蔽请求的插件 - tag: black_hole type: blackhole args: rcode: 0 ipv4: "0.0.0.0" ipv6: "::" # 匹配无效域名的插件 - tag: query_is_non_domain type: query_matcher args: domain: - "keyword::" # 匹配本地域名的插件 - tag: query_is_local_domain type: query_matcher args: domain: - "provider:chinalist" # 匹配污染域名的插件 - tag: query_is_non_local_domain type: query_matcher args: domain: - "provider:gfwlist" # 匹配CDN域名的插件 - tag: query_is_cdn_cn_domain type: query_matcher args: domain: - "provider:cdncn" # 匹配广告域名的插件 - tag: query_is_ad_domain type: query_matcher args: domain: - "provider:adlist" # 匹配强制本地解析域名的插件 - tag: query_is_cn_domain type: query_matcher args: domain: - "provider:ecscn" # 匹配强制非本地解析域名的插件 - tag: query_is_noncn_domain type: query_matcher args: domain: - "provider:ecsnoncn" # 匹配本地IP的插件 - tag: response_has_local_ip type: response_matcher args: ip: - "provider:chinaip" # 匹配污染IP的插件 - tag: response_has_gfw_ip type: response_matcher args: ip: - "provider:gfwip" # 转发至本地服务器的插件 - tag: forward_local type: fast_forward args: upstream: - addr: "223.5.5.5" - addr: "tls://120.53.53.53:853" enable_pipeline: true # 转发至远程服务器的插件 - tag: forward_remote type: fast_forward args: upstream: - addr: "tcp://208.67.220.220:5353" enable_pipeline: true #socks5: "127.0.0.1:1080" - addr: "tls://8.8.4.4" enable_pipeline: true #socks5: "127.0.0.1:1080" # 转发至分流服务器的插件 - tag: forward_easymosdns type: fast_forward args: upstream: - addr: "https://doh.apad.pro/dns-query" bootstrap: "119.29.29.29" #dial_addr: "ip:port" #enable_http3: true # 主要的运行逻辑插件 # sequence 插件中调用的插件 tag 必须在 sequence 前定义 # 否则 sequence 找不到对应插件 - tag: main_sequence type: sequence args: exec: # 域名映射IP - hosts # 屏蔽TYPE65与无效类型请求 - if: "[qtype65] || (query_is_non_domain)" exec: - _new_nxdomain_response - _return # 优化PRT与ANY类型请求 - if: "[qtype12] || [qtype255]" exec: - _no_ecs - forward_local - ttl_1h - _return # 缓存ECS - ecs_auto - _edns0_filter_ecs_only - if: ecs_is_lan exec: - cache_lan - _no_ecs else_exec: - cache_wan # 强制用本地服务器解析 - if: query_is_cn_domain exec: - forward_local - ttl_5m - _return # 强制用非本地服务器解析 - if: query_is_noncn_domain exec: # 优先返回ipv4结果 - _prefer_ipv4 - ecs_global - primary: # 默认用分流服务器 - forward_easymosdns secondary: # 超时用远程服务器 - forward_remote fast_fallback: 2500 always_standby: false - ttl_5m - _return # 屏蔽广告域名 - if: query_is_ad_domain exec: - black_hole - ttl_1h - _return # 已知的本地域名或CDN域名用本地服务器解析 - if: "(query_is_local_domain) || (query_is_cdn_cn_domain)" exec: - primary: # 默认用本地服务器 - forward_local - ttl_1m secondary: # 超时用分流服务器 - forward_easymosdns - ttl_5m fast_fallback: 25 always_standby: false # 预防已知的本地域名临时污染 - if: "(! response_has_gfw_ip)" exec: - _return # 已知的污染域名用分流服务器或远程服务器解析 - if: query_is_non_local_domain exec: # 优先返回ipv4结果 - _prefer_ipv4 - ecs_global - primary: # 默认用分流服务器 - forward_easymosdns secondary: # 超时用远程服务器 - forward_remote fast_fallback: 2500 always_standby: false - ttl_5m - _return # 剩下的未知域名用IP分流 # 优先返回ipv4结果 - _prefer_ipv4 - primary: # 默认用分流服务器 - forward_easymosdns - if: response_server_failed exec: - forward_local - _return - ecs_global - if: "(! ecs_is_cn) && (! response_has_local_ip) && [_response_valid_answer]" exec: - forward_easymosdns secondary: # 超时用本地分流器 - forward_remote - if: response_has_local_ip exec: - forward_local - _return - ecs_global - if: "(! ecs_is_cn) && [_response_valid_answer]" exec: - forward_remote fast_fallback: 2500 always_standby: false - ttl_5m servers: - exec: main_sequence timeout: 6 listeners: - protocol: udp addr: "0.0.0.0:53" - protocol: tcp addr: "0.0.0.0:53" #- protocol: http # addr: "127.0.0.1:9053" # url_path: "/dns-query" # get_user_ip_from_header: "X-Forwarded-For" #- protocol: tls # addr: "0.0.0.0:853" # cert: "/etc/mosdns/yourdomain.cert" # TLS 所需证书文件。 # key: "/etc/mosdns/yourdomain.key" # TLS 所需密钥文件。 #api: # http: "127.0.0.1:9080"
mosdns 的 log 记录
2024-03-20T13:57:26.474Z INFO working directory changed {"path": "/etc/mosdns"} Error: fail to load config, failed to unmarshal config: 1 error(s) decoding: * '' has invalid keys: data_providers, servers 2024-03-20T13:57:26.478Z FATAL fail to load config, failed to unmarshal config: 1 error(s) decoding: * '' has invalid keys: data_providers, servers
I had the same issue in version 5.3.1
报错提示已经很明显了“open /etc/mosdns/hosts: no such file or directory”,都不看日志或者前面我的回答的吗?
在提交之前,请确认
mosdns 版本
几乎最新版本
操作系统
ubuntu
Bug 描述和复现步骤
2024-03-20T13:57:26.474Z INFO working directory changed {"path": "/etc/mosdns"} Error: fail to load config, failed to unmarshal config: 1 error(s) decoding:
'' has invalid keys: data_providers, servers 2024-03-20T13:57:26.478Z FATAL fail to load config, failed to unmarshal config: 1 error(s) decoding:
'' has invalid keys: data_providers, servers 2024-03-20T14:05:57.139Z INFO working directory changed {"path": "/etc/mosdns"} 2024-03-20T14:05:57.142Z INFO main config loaded {"file": "/etc/mosdns/config.yaml"} Error: failed to init plugin #4 hosts, failed to init plugin: failed to read file #0 /etc/mosdns/hosts, open /etc/mosdns/hosts: no such file or directory 2024-03-20T14:05:57.144Z FATAL failed to init plugin #4 hosts, failed to init plugin: failed to read file #0 /etc/mosdns/hosts, open /etc/mosdns/hosts: no such file or directory 2024-03-20T14:15:23.744Z INFO working directory changed {"path": "/etc/mosdns"} 2024-03-20T14:15:23.747Z INFO main config loaded {"file": "/etc/mosdns/config.yaml"} 2024-03-20T14:17:45.469Z INFO working directory changed {"path": "/etc/mosdns"} 2024-03-20T14:17:45.471Z INFO main config loaded {"file": "/etc/mosdns/config.yaml"}
使用的配置文件
mosdns 的 log 记录