Comments (16)
--add-tagchn-ip 允许定义 ipset name
目前 --add-taggfw-ip 需要指定 set name, 那是因为没有现有的 name 可用. 但 --add-tagchn-ip 却直接使用现有的name 也就是 chnroute{,6}, 但是这俩数据库的作用其实是为了处理上游dns解析结果的时候做判断依据用的, --add-tagchn-ip 这种做法会导致 chnroute{,6} 数据库出现变化, 然后可能在某些情况下影响判断, 比如刚好某 -m 的 list 里面解析出来内网ip, 那么内网ip加入进去了, 那么可能会影响后续的既不在 -g 也不在 -m 里面的域名的解析结果.
这个说的有道理,给 -a/--add-tagchn-ip 加个可选参数,即 -a=list4,list6
、--add-tagchn-ip=list4,list6
。
from chinadns-ng.
也就是说,现在有3类独立的set:
- tag:none 域名,用于判定是否为大陆ip:
--ipset-name4/--ipset-name6
(chnroute) - tag:chn 域名,用于收集白名单ip:
--add-tagchn-ip
(whitelist) - tag:gfw 域名,用于收集黑名单ip:
--add-taggfw-ip
(blacklist)
对于 --add-tagchn-ip,如果不指定 set,则使用 --ipset-name4/6 的 set;大部分情况下这样用就可以了
from chinadns-ng.
--add-tagchn-ip 和 --add-taggfw-ip 允许只设置 ipv4 的 set name
这样是为了配合 -N, 既然都丢弃了 ipv6了, 那么 新建 set6 就意义不大? 比如接受这样的参数 : set4 | set4,set6
这个还是不改了,主要是 --ipset-name6 默认就有值,如果 tagchn 和 taggfw 只提供 v4-set,逻辑上就不太“对称”。
当然,在使用-N过滤所有AAAA的情况下,确实不会触发任何v6-set的逻辑(无论是tag:none还是tag:gfw、tag:chn),因此你可以在 chinadns-ng 中指定一个假的 v6-set 的名字,不需要真的去创建它。
总之,为了匹配原有的历史设计(以及逻辑上的对称),还是需要指定 v4 和 v6,如果 v6 set 没用到,不去创建就好了。
from chinadns-ng.
LGTM
from chinadns-ng.
见最新release。
from chinadns-ng.
经测试
-a, --add-tagchn-ip=[set4,set6] 这个选项的参数只能用 =
才生效, 不能用 -a set4,set6
from chinadns-ng.
getopt_long官方行为。
可选参数必须粘着
from chinadns-ng.
但 -A proxy4,proxy6
可以
from chinadns-ng.
getopt_long官方行为。
可选参数必须粘着
-a -A 短选项 行为不一致
from chinadns-ng.
因为一个是optional_arg,一个是required_arg,类似于 -N/--no-ipv6。
from chinadns-ng.
明白了, 哈哈, 第一次用的时候没用 =
.
from chinadns-ng.
我总结一下:
对于 optional_argument:
- 短选项,官方行为是必须粘着,比如
-Nfoobar
,参数值就是foobar - 长选项,官方行为是必须=相连,比如
--no-ipv6=foobar
- chinadns-ng这边为了统一长短选项的格式,短选项额外支持
-N=foobar
形式
对于 required_argument:
- 短选项,
-Nfoobar
、-N foobar
都可以 - 长选项,
--no-ipv6=foobar
、--no-ipv6 foobar
都可以
可以看出,可选参数,不允许用空白符分开,一开始我也很惊讶,但这是 getopt 官方行为,所以也无权干涉。
from chinadns-ng.
https://man7.org/linux/man-pages/man3/getopt.3.html
from chinadns-ng.
OK,这俩选项我统一用长选项=
了.
from chinadns-ng.
嗯,如果有强迫症,想风格统一,可以这样:
- no_arg的选项:长选项和短选项都ok,即
-f
、--foo
,但短选项不要于其他短选项相连,假设有另外一个短选项-x
,不要写成-fx
,而是分开-f -x
- required_arg的选项,短选项用空格分开
-f abc
、长选项用等号相连--foo=abc
- optional_arg的选项,只是用长选项,无参数则
--foo
,有参数则--foo=abc
这样看起来就没什么问题了。
简单来说,optional_arg用长选项格式(--foo、--foo=abc),其他一律短选项(-f、-f abc),保证格式统一。
from chinadns-ng.
2023.06.01 版本改进了参数解析,选项与可选参数之间允许带空格了,与required_arg选项的语法保持一致。
from chinadns-ng.
Related Issues (20)
- 动态添加IP问题(选项没指定,语法错误) HOT 19
- 请教redsocks和iptables搭配chinadns-ng进行DNS分流的食用方法 HOT 20
- 编译时报错 HOT 3
- mirrors.aliyuncs.com 解析失败 HOT 13
- nftset flags: timeout HOT 15
- chinadns-ng和mosdns有啥区别呢 HOT 1
- ac68u上的崩溃日志 HOT 3
- 用 int 承接 ts 会导致 2038问题, 建议所有ts都用time_t 或者 long long HOT 1
- 如何对查询结果附加(append)三方DNS记录 HOT 3
- 对于tag:none的组能否添加ipset的支持 HOT 5
- 问一下, chinadns-ng如果接管127.0.0.1:53后会缓存dns结果吗? HOT 2
- 监听0.0.0.0的时候能否连带ipv6的 [::]也监听了呢? HOT 3
- DNS上游没有响应任何查询,并非死循环。 HOT 48
- 对分流有个优化思路 HOT 1
- 问一个关于ChinaDNS-NG 域名默认标签“智能dns”的逻辑问题 HOT 7
- ChinaDNS-NG 2.0 HOT 62
- 可信DNS解析结果没有加入ipset的集合中,麻烦看一下是配置哪里有问题哦 HOT 4
- chnroute.ipset 国内IP库不全 HOT 10
- 群晖ds216se上运行报错protocol:12 errno:22 Invalid argument HOT 4
- chnlist.txt加入 -d gfw 之后可信上游不返回v6解析 HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from chinadns-ng.