Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

动态添加IP问题(选项没指定,语法错误) #128

Closed
yiguihai11 opened this issue Apr 28, 2023 · 19 comments
Closed

动态添加IP问题(选项没指定,语法错误) #128

yiguihai11 opened this issue Apr 28, 2023 · 19 comments

Comments

@yiguihai11
Copy link

发现并没有动态添加IP

root@OpenWrt:~# ./chinadns-ng --bind-addr 127.0.0.1 --bind-port 65353 --china-dns 127.0.0.1#65354 --trust-dns 8.8.8.8#53,1.1.1.1#53 --gfwlist-file gfwlist.txt --default-tag chn add-taggfw-ip inet@shadowsocks@chnroute,inet@shadowsocks@chnroute6 --verbose
2023-04-28 20:15:57 I [main.c:343 main] local listen addr: 127.0.0.1#65353
2023-04-28 20:15:57 I [main.c:345 main] chinadns server#1: 127.0.0.1#65354
2023-04-28 20:15:57 I [main.c:347 main] trustdns server#1: 8.8.8.8#53
2023-04-28 20:15:57 I [main.c:348 main] trustdns server#2: 1.1.1.1#53
2023-04-28 20:15:57 I [dnl.c:551 dnl_init] gfwlist loaded:6159 added:6158 cost:130.522k
2023-04-28 20:15:57 I [dnl.c:556 dnl_init] L1 items:6113 lists:4327 buckets:8192 cost:32.000k
2023-04-28 20:15:57 I [dnl.c:560 dnl_init] L2 items:45 lists:30 buckets:64 cost:0.250k
2023-04-28 20:15:57 I [dnl.c:563 dnl_init] total memory cost (page-aligned): 164.000k
2023-04-28 20:15:57 I [main.c:355 main] default domain name tag: chn
2023-04-28 20:15:57 I [main.c:356 main] filter reply without ip addr
2023-04-28 20:15:57 I [main.c:357 main] dns query timeout: 5 seconds
2023-04-28 20:15:57 I [main.c:380 main] print the verbose running log
2023-04-28 20:15:57 I [main.c:117 handle_local_packet] query [packages.deepin.com] from 127.0.0.1#45155 (0)
2023-04-28 20:15:57 I [main.c:162 handle_local_packet] forward [packages.deepin.com] to 127.0.0.1#65354 (chinadns)
2023-04-28 20:15:57 I [main.c:117 handle_local_packet] query [packages.deepin.com] from 127.0.0.1#48891 (1)
2023-04-28 20:15:57 I [main.c:162 handle_local_packet] forward [packages.deepin.com] to 127.0.0.1#65354 (chinadns)
2023-04-28 20:15:57 I [main.c:281 handle_remote_packet] reply [packages.deepin.com] from 127.0.0.1#65354 (0), result: accept
2023-04-28 20:15:57 I [main.c:281 handle_remote_packet] reply [packages.deepin.com] from 127.0.0.1#65354 (1), result: accept
2023-04-28 20:16:05 I [main.c:117 handle_local_packet] query [home.deepin.org] from 127.0.0.1#47343 (2)
2023-04-28 20:16:05 I [main.c:162 handle_local_packet] forward [home.deepin.org] to 127.0.0.1#65354 (chinadns)
2023-04-28 20:16:05 I [main.c:281 handle_remote_packet] reply [home.deepin.org] from 127.0.0.1#65354 (2), result: accept
2023-04-28 20:16:05 I [main.c:117 handle_local_packet] query [home.deepin.org] from 127.0.0.1#47455 (3)
2023-04-28 20:16:05 I [main.c:162 handle_local_packet] forward [home.deepin.org] to 127.0.0.1#65354 (chinadns)
2023-04-28 20:16:05 I [main.c:281 handle_remote_packet] reply [home.deepin.org] from 127.0.0.1#65354 (3), result: accept
2023-04-28 20:16:08 I [main.c:117 handle_local_packet] query [v2ex.com] from 127.0.0.1#49147 (4)
2023-04-28 20:16:08 I [main.c:162 handle_local_packet] forward [v2ex.com] to 8.8.8.8#53 (trustdns)
2023-04-28 20:16:08 I [main.c:162 handle_local_packet] forward [v2ex.com] to 1.1.1.1#53 (trustdns)
2023-04-28 20:16:09 I [main.c:301 handle_remote_packet] reply [v2ex.com] from 8.8.8.8#53 (4), result: accept
2023-04-28 20:16:09 I [main.c:272 handle_remote_packet] reply [v2ex.com] from 1.1.1.1#53 (4), result: ignore
root@OpenWrt:~# nft list set inet shadowsocks gfwlist
table inet shadowsocks {
        set gfwlist {
                typeof ip daddr
                flags interval
                elements = { 1.1.1.1, 8.8.8.8 }
        }
}

除了我添加的服务器IP啥也没有

@cattyhouse
Copy link

cattyhouse commented Apr 28, 2023

纯域名分流模式下不执行 ipset/nftset 逻辑 :

default-tag 用来实现"纯域名分流",可提供比dnsmasq更优秀的匹配性能。
通常与-g或-m选项一起用,纯域名分流模式下不执行 ipset/nftset 逻辑,如:
-g gfwlist.txt -d chn:gfw列表的域名走可信上游,其他走国内上游。
-m chnlist.txt -d gfw:chn列表的域名走国内上游,其他走可信上游。

EDIT by zfl9:

这个不对哈,只是不执行ip test逻辑。ip add不影响,不然就没法实现gfwlist分流了

@yiguihai11
Copy link
Author

纯域名分流模式下不执行 ipset/nftset 逻辑 :

default-tag 用来实现"纯域名分流",可提供比dnsmasq更优秀的匹配性能。
通常与-g或-m选项一起用,纯域名分流模式下不执行 ipset/nftset 逻辑,如:
-g gfwlist.txt -d chn:gfw列表的域名走可信上游,其他走国内上游。
-m chnlist.txt -d gfw:chn列表的域名走国内上游,其他走可信上游。

若启用--add-taggfw-ip,则gfwlist.txt域名(准确来说是tag为gfw的域名)的解析结果IP会被动态添加到ipset/nftset,可用来实现gfwlist透明代理分流;也可配合chnroute透明代理分流,用来收集黑名单域名的IP,用于iptables/nftables操作,比如确保黑名单域名必走代理,即使某些黑名单域名的IP是大陆IP

@cattyhouse
Copy link

cattyhouse commented Apr 28, 2023

一旦指定了 -d,--default-tag, 那么 chnroute, ipset, nftset 功能全部 不起作用. 只有-g -m 2个列表起作用了, 一刀切模式.


EDIT by zfl9:

实际并不是这样,纯域名分流并没有什么特别之处,纯域名分流说白了就是将未匹配的域名(tag:none),手动归类为 tag:gfw 或 tag:chn。核心就这一处逻辑,其它逻辑完全没影响。

也就是说,未匹配域名,默认是 tag:none,如果指定了 -d gfw,那就是默认 tag:gfw,如果指定了 -d chn,那就是默认 tag:chn,除此之外,所有逻辑不变。

@yiguihai11
Copy link
Author

一旦指定了 -d,--default-tag, 那么 chnroute, ipset, nftset 功能全部 不起作用. 只有-g -m 2个列表起作用了, 一刀切模式.

所以我要删除这个吗

@cattyhouse
Copy link

你这个参数也用错了, correct 一下 :
--add-taggfw-ip=inet@shadowsocks@chnroute,inet@shadowsocks@chnroute6

@cattyhouse
Copy link

#127 (comment)

@yiguihai11
Copy link
Author

还是没有添加进去

@cattyhouse
Copy link

你修正后的启动参数是?

还是没有添加进去

@cattyhouse
Copy link

你加到了 inet@shadowsocks@chnroute , 却 list 这个 nft list set inet shadowsocks gfwlist

@yiguihai11
Copy link
Author

你修正后的启动参数是?

还是没有添加进去

./chinadns-ng --bind-addr 127.0.0.1 --bind-port 65353 --china-dns 127.0.0.1#65354 --trust-dns 8.8.8.8#53,1.1.1.1#53 --gfwlist-file gfwlist.txt add-taggfw-ip inet@shadowsocks@gfwlist,inet@shadowsocks@gfwlist6 --verbose

明天再研究了

@cattyhouse
Copy link

--add-taggfw-ip 而不是 add-taggfw-ip

@zfl9
Copy link
Owner

zfl9 commented Apr 29, 2023

我要指正一下,纯域名分流模式,只是不执行 ip test 逻辑,ip add逻辑不影响

@zfl9
Copy link
Owner

zfl9 commented Apr 29, 2023

你这个是参数错了,没有用 --add-taggfw-ip ,你前面两个 -- 没有带上。

@zfl9
Copy link
Owner

zfl9 commented Apr 29, 2023

准确来说。是否执行ipset逻辑,只取决于域名类型

tag:chn类型,ip add逻辑,选项是 --add-tagchn-ip

tag:gfw类型,ip add逻辑,选项是 --add-taggfw-ip

tag:none类型,ip test逻辑,选项是最原始的 --ipset-name4/name6,有默认值 chnroute chnroute6

纯域名分流模式只是没有 tag:none 域名,也就是不会执行 test 逻辑,但是 ip add 逻辑不会受影响。

@zfl9 zfl9 changed the title 动态添加IP问题 动态添加IP问题(选项没指定,语法错误) Apr 29, 2023
@zfl9
Copy link
Owner

zfl9 commented Apr 29, 2023

你观察chinadns-ng启动的输出就知道了。

会打印 tag:none,tag:gfw,tag:chn 分别用了什么ipset/nftset。

@zfl9
Copy link
Owner

zfl9 commented Apr 29, 2023

改了一下readme,防止还有人产生误解。。。

@zfl9
Copy link
Owner

zfl9 commented Apr 29, 2023

./chinadns-ng --bind-addr 127.0.0.1 --bind-port 65353 --china-dns 127.0.0.1#65354 --trust-dns 8.8.8.8#53,1.1.1.1#53 --gfwlist-file gfwlist.txt --default-tag chn add-taggfw-ip inet@shadowsocks@chnroute,inet@shadowsocks@chnroute6 --verbose

你仔细看启动参数,是 --add-taggfw-ip,不是 add-taggfw-ip。

所有option都是-开头,一个-是短选项,两个--是长选项。

由于我的疏忽,程序并未检测非-开头的未知选项。。

@yiguihai11

@yiguihai11
Copy link
Author

yiguihai11 commented Apr 29, 2023

./chinadns-ng --bind-addr 127.0.0.1 --bind-port 65353 --china-dns 127.0.0.1#65354 --trust-dns 8.8.8.8#53,1.1.1.1#53 --gfwlist-file gfwlist.txt --default-tag chn add-taggfw-ip inet@shadowsocks@chnroute,inet@shadowsocks@chnroute6 --verbose

你仔细看启动参数,是 --add-taggfw-ip,不是 add-taggfw-ip。

所有option都是-开头,一个-是短选项,两个--是长选项。

由于我的疏忽,程序并未检测非-开头的未知选项。。

@yiguihai11

尴尬!确实是参数写错了。应该养成良好的写作习惯才行。

./chinadns-ng \
--bind-addr 127.0.0.1 \
--bind-port 65353 \
--china-dns 127.0.0.1#65354 \
--trust-dns 8.8.8.8#53,1.1.1.1#53 \
--gfwlist-file gfwlist.txt \
--default-tag chn \
--add-taggfw-ip inet@shadowsocks@chnroute,inet@shadowsocks@chnroute6 \
--verbose

这样的写脚本的就不会连成一陀了直观多了,麻烦大家了。谢谢!

@zfl9 zfl9 closed this as completed Apr 29, 2023
@zfl9
Copy link
Owner

zfl9 commented May 8, 2023

加了个检测提示。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants