Closed onlyJinx closed 1 year ago
自己看防火墙规则吧
刚编译好的固件, 防火墙没做任何改动, 我试了passwall2也是同样的问题, 直接把所有连接都走了代理, Hello world也有点问题, 手机连上之后虽然可以上百度, 但他自身检测这里只能看到Google和youtube, 百度淘宝都不亮, 下面是防火墙规则截图.
显然不可能,我一直开绕过国内IP,就一个100G的小机场一个月都用不完,要是全部代理了100G早不够用了吧
我也觉得奇怪,难道是少编译了什么用来解析DNS的插件?我都是自己选的,不认识的全都被我取消了。。。只选了一些自己需要的
@onlyJinx 我没看到有ipset匹配china的数据包被return,你看看ipset list china
有没有ip,并且排查一下能不能dns查询得到中国域名的ip,例如nslookup baidu.com 你的路由器ip
@w311ang 应该不是这个问题,我刚才又编译了一遍,然后发现不是编译的问题,我用nslookup随便查了几个国内的域名,发现解析回来的ip全都是国外的,所以ssr plus才会按照国外ip分流出去的,现在把dns问题解决应该就可以,但是我不知道为什么会解析成国外ip,我路由器的DNS指向的是主路由。
我把ssr plus关了的话,nslookup就正常解析成国内IP
@onlyJinx dnsmasq的配置应该在类似/var/etc/dnsmasq.conf这个文件,你贴出来一下,还有uci show dhcp
这个路径下只有一个 dnsmasq.conf.cfg01411c
root@OpenWrt:~# ls /var/etc/
bypass.include shadowsocksr.include ssl uhttpd
dnsmasq.conf.cfg01411c smartdns ssrplus
root@OpenWrt:~#
里面的内容如下:
root@OpenWrt:~# cat /var/etc/dnsmasq.conf.cfg01411c
# auto-generated config file from /etc/config/dhcp
conf-file=/etc/dnsmasq.conf
dhcp-authoritative
domain-needed
localise-queries
read-ethers
enable-ubus=dnsmasq
expand-hosts
bind-dynamic
local-service
cache-size=8192
edns-packet-max=1232
domain=lan
local=/lan/
addn-hosts=/tmp/hosts
dhcp-leasefile=/tmp/dhcp.leases
resolv-file=/tmp/resolv.conf.d/resolv.conf.auto
stop-dns-rebind
rebind-localhost-ok
dhcp-broadcast=tag:needs-broadcast
conf-dir=/tmp/dnsmasq.d
user=dnsmasq
group=dnsmasq
dhcp-ignore-names=tag:dhcp_bogus_hostname
conf-file=/usr/share/dnsmasq/dhcpbogushostname.conf
srv-host=_vlmcs._tcp,OpenWrt,1688,0,100
bogus-priv
conf-file=/usr/share/dnsmasq/rfc6761.conf
no-dhcp-interface=eth0
enable-ra
quiet-ra
root@OpenWrt:~#
root@OpenWrt:~# uci show dhcp
dhcp.@dnsmasq[0]=dnsmasq
dhcp.@dnsmasq[0].domainneeded='1'
dhcp.@dnsmasq[0].boguspriv='1'
dhcp.@dnsmasq[0].filterwin2k='0'
dhcp.@dnsmasq[0].localise_queries='1'
dhcp.@dnsmasq[0].rebind_protection='1'
dhcp.@dnsmasq[0].rebind_localhost='1'
dhcp.@dnsmasq[0].local='/lan/'
dhcp.@dnsmasq[0].domain='lan'
dhcp.@dnsmasq[0].expandhosts='1'
dhcp.@dnsmasq[0].nonegcache='0'
dhcp.@dnsmasq[0].cachesize='8192'
dhcp.@dnsmasq[0].authoritative='1'
dhcp.@dnsmasq[0].readethers='1'
dhcp.@dnsmasq[0].leasefile='/tmp/dhcp.leases'
dhcp.@dnsmasq[0].resolvfile='/tmp/resolv.conf.d/resolv.conf.auto'
dhcp.@dnsmasq[0].nonwildcard='1'
dhcp.@dnsmasq[0].localservice='1'
dhcp.@dnsmasq[0].ednspacket_max='1232'
dhcp.@dnsmasq[0].filter_aaaa='0'
dhcp.@dnsmasq[0].filter_a='0'
dhcp.@dnsmasq[0].noresolv='0'
dhcp.lan=dhcp
dhcp.lan.interface='lan'
dhcp.lan.ignore='1'
dhcp.wan=dhcp
dhcp.wan.interface='wan'
dhcp.wan.ignore='1'
dhcp.@srvhost[0]=srvhost
dhcp.@srvhost[0].srv='_vlmcs._tcp'
dhcp.@srvhost[0].target='OpenWrt'
dhcp.@srvhost[0].port='1688'
dhcp.@srvhost[0].class='0'
dhcp.@srvhost[0].weight='100'
root@OpenWrt:~#
这是未开启ssr plus的时候nslookup反馈结果:
root@OpenWrt:~# nslookup www.baidu.com
Server: 127.0.0.1
Address: 127.0.0.1:53
Non-authoritative answer:
www.baidu.com canonical name = www.a.shifen.com
Name: www.a.shifen.com
Address: 14.215.177.38
Name: www.a.shifen.com
Address: 14.215.177.39
Non-authoritative answer:
www.baidu.com canonical name = www.a.shifen.com
root@OpenWrt:~#
这里的反馈是正常的, ip归属是国内,
下面的是开启了ssr plus的时候(被解析到美国的baidu IP):
root@OpenWrt:~# nslookup www.baidu.com
Server: 127.0.0.1
Address: 127.0.0.1:53
** server can't find www.baidu.com: REFUSED
Non-authoritative answer:
www.baidu.com canonical name = www.a.shifen.com
www.a.shifen.com canonical name = www.wshifen.com
Name: www.wshifen.com
Address: 104.193.88.77
Name: www.wshifen.com
Address: 104.193.88.123
root@OpenWrt:~#
国内DNS我这里选的是腾讯的DNSPod, 我尝试更换成WAN口下发的DNS
也是同样的结果
@onlyJinx 如果不选国内dns服务器会不会好,还有这个ipset list china
究竟有没有ipcidr
国内DNS留空不选的话也是一样的结果
root@OpenWrt:~# ipset list china
Name: china
Type: hash:net
Revision: 7
Header: family inet hashsize 262144 maxelem 1000000 bucketsize 12 initval 0x57666b87
Size in memory: 6576
References: 4
Number of entries: 0
Members:
root@OpenWrt:~#
@w311ang 我想我知道原因了, 我手动点击【国内IP段】数据库
的时候是无法更新的, 这个更新地址应该属于国内, 然后走了代理之后被我的服务端block掉了, 我关闭代理之后点击更新, 然后成功更新了, ipset list china
也可以列出很多ip地址了, 现在能正常使用了, 应该是ssr plus的处理逻辑是第一次启动时会去自动更新这个ip段数据库, 然后刚好被我的服务端block一直无法更新成功, 才出现所有地址都当成国外ip处理的, 这个ip数据库一直得不到更新, 陷入死循环, 问题已解决, 多谢啦
很奇怪, 我做了改动, 一保存, ipset list china
里的内容就被全部清空了, 然后, 国内网址有全部都被代理过去了.
现在再点击更新的时候就提示已经是最新的了, 请问这个要怎么把他更新出来呀
root@OpenWrt:~# ipset list china
Name: china
Type: hash:net
Revision: 7
Header: family inet hashsize 4096 maxelem 65536 bucketsize 12 initval 0xa6620f64
Size in memory: 528
References: 0
Number of entries: 0
Members:
root@OpenWrt:~#
@onlyJinx 是通过https://ispip.clang.cn/all_cn.txt
更新的ipset,具体可以看这个代码https://github.com/fw876/helloworld/blob/master/luci-app-ssr-plus/root/usr/share/shadowsocksr/update.lua
@w311ang 好的, 就是说以后这个list空了的话, 就自己手动执行以下/usr/share/shadowsocksr/chinaipset.sh /var/etc/ssrplus/china_ssr.txt
去更新对吧?
另外想请教一下,怎么看到ssr puls的分流日志呢?因为我服务端有时候会收到一些国内域名的请求, 我想看看是不是ssr plus的问题,要看看日志
@onlyJinx ssrplus依靠的是iptables和dnsmasq做的分流,具体的日志也还是只能看iptables和dnsmasq,不过你可以间接地通过nslookup查询dns和查看ipset的china和whitelist列表还有防火墙的计数看看走了代理还是直连
好的,我打开部分被墙域名的话经常会提示连接已被重置,就是那种我没打开代理的表现,要我手动刷新好几次才有概率打开,提示连接已被重置时,我看着服务端v2ray是没有相关的访问记录的,只有把页面刷新出来我在服务端日志才可以看到这个网址,我想问下这是不是和IPv6有关系,当返回IPv6时我无法访问,只有多次刷新返回IPv4的时候我才能正常代理出去然后访问页面?
如果我在DHCP里勾选了禁用解析IPv6的话,会导致整个dnsmasq无法启动,然后解析不了任何dns请求,下面是日志还有勾选了禁用IPv6后的配置文件内容。
Fri Dec 23 15:30:39 2022 daemon.crit dnsmasq[1]: bad option at line 12 of /var/etc/dnsmasq.conf.cfg01411c
Fri Dec 23 15:30:39 2022 daemon.crit dnsmasq[1]: FAILED to start up
Fri Dec 23 15:30:44 2022 daemon.crit dnsmasq[1]: bad option at line 12 of /var/etc/dnsmasq.conf.cfg01411c
Fri Dec 23 15:30:44 2022 daemon.crit dnsmasq[1]: FAILED to start up
Fri Dec 23 15:30:49 2022 daemon.crit dnsmasq[1]: bad option at line 12 of /var/etc/dnsmasq.conf.cfg01411c
Fri Dec 23 15:30:49 2022 daemon.crit dnsmasq[1]: FAILED to start up
Fri Dec 23 15:30:54 2022 daemon.crit dnsmasq[1]: bad option at line 12 of /var/etc/dnsmasq.conf.cfg01411c
Fri Dec 23 15:30:54 2022 daemon.crit dnsmasq[1]: FAILED to start up
Fri Dec 23 15:30:59 2022 daemon.crit dnsmasq[1]: bad option at line 12 of /var/etc/dnsmasq.conf.cfg01411c
Fri Dec 23 15:30:59 2022 daemon.crit dnsmasq[1]: FAILED to start up
Fri Dec 23 15:31:04 2022 daemon.crit dnsmasq[1]: bad option at line 12 of /var/etc/dnsmasq.conf.cfg01411c
Fri Dec 23 15:31:04 2022 daemon.crit dnsmasq[1]: FAILED to start up
Fri Dec 23 15:31:04 2022 daemon.info procd: Instance dnsmasq::cfg01411c s in a crash loop 6 crashes, 0 seconds since last crash
Fri Dec 23 15:31:33 2022 daemon.err procd: Got unexpected signal 1
root@OpenWrt:~# cat /var/etc/dnsmasq.conf.cfg01411c
# auto-generated config file from /etc/config/dhcp
conf-file=/etc/dnsmasq.conf
dhcp-authoritative
filterwin2k
log-queries=extra
localise-queries
read-ethers
enable-ubus=dnsmasq
expand-hosts
bind-dynamic
local-service
filter-aaaa
edns-packet-max=1232
domain=lan
local=/lan/
addn-hosts=/tmp/hosts
dhcp-leasefile=/tmp/dhcp.leases
resolv-file=/tmp/resolv.conf.d/resolv.conf.auto
stop-dns-rebind
rebind-localhost-ok
dhcp-broadcast=tag:needs-broadcast
conf-dir=/tmp/dnsmasq.d
user=dnsmasq
group=dnsmasq
dhcp-ignore-names=tag:dhcp_bogus_hostname
conf-file=/usr/share/dnsmasq/dhcpbogushostname.conf
srv-host=_vlmcs._tcp,OpenWrt,1688,0,100
bogus-priv
conf-file=/usr/share/dnsmasq/rfc6761.conf
no-dhcp-interface=eth0
root@OpenWrt:~#
root@OpenWrt:~# nslookup xxxbus.com
Server: 127.0.0.1
Address: 127.0.0.1:53
Non-authoritative answer:
Name: xxxbus.com
Address: 104.25.111.111
Name: xxxbus.com
Address: 172.67.80.44
Name: xxxbus.com
Address: 104.25.112.111
Non-authoritative answer:
Name: xxxbus.com
Address: 2606:4700:20::6819:6f6f
Name: xxxbus.com
Address: 2606:4700:20::6819:706f
Name: xxxbus.com
Address: 2606:4700:20::ac43:502c
@onlyJinx 这个过滤ipv6无效的问题建议另开issue,这个我也不知道怎么解决
嗯嗯,我想确认一下是否是IPv6这个原因导致的,因为有些网站确实需要刷新好几次才可以打开(打开之后,后续就都正常,等过段时间再开问题会复现,可能是DNS缓存刷新了),这段期间确认代理没问题的。
ssrplus不支持ipv6代理,所有ipv6连接都是直连,的确是可以怀疑走了ipv6,有可能是浏览器优先访问ipv6,如果多次不行才会ipv4
好的, 感谢。 ipv6问题我将重新开个issue或者重新编译一个固件,不勾选ipv6相关。
显然不可能,我一直开绕过国内IP,就一个100G的小机场一个月都用不完,要是全部代理了100G早不够用了吧
windows 11 才会出现楼主说的问题。我也出现了。
显然不可能,我一直开绕过国内IP,就一个100G的小机场一个月都用不完,要是全部代理了100G早不够用了吧
windows 11 才会出现楼主说的问题。我也出现了。
不是客户端的问题,是openwrt的问题,我发现每次重启或者更改ssrp的配置保存后(会自动重启ssrp应用这些更改)就有概率让ipset里得China list全部丢失,然后ssrp就会把所有的ip判断为“国外”ip然后全部分流出去,现在我也不知道怎么搞了,只能手动运行一下那个脚本让China list重新导入然后尽量不重启
+1
手里三台设备,尝试了不同的 OpenWRT 版本,SSRP+ 也试了最近两个版本,【绕过中国大陆模式】遇到了相同的问题,暂时还没有什么解决办法。
我跟你遇到了相同的问题,由于我的技术力低下无法解决,所以只能采取了一个笨办法,希望对你有帮助,我每次启动节点保存之后之后,要是没有ip列表的话,我就在ssrp的高级设置-中国大陆 IP 段更新 URL这里切换到cidr那个,然后去更新下IP,这时候ipset list china里面可以看到ip了,然后正常分流了,当然如果你嫌弃cidr比cn少3000个IP,那你就再切换回cn再更新,提示你获取8000多个ip
已解决。
SSRP>访问控制>代理域名>ispip.clang.cn , 然后主服务器上的路由规则里,在屏蔽大陆的规则前添加一条 ispip.clang.cn 直连的规则。
我这里解决不了,ip数据库已经成功更新,然后重启ssrp,还是会把国内的ip全部代理出去
我这里解决不了,ip数据库已经成功更新,然后重启ssrp,还是会把国内的ip全部代理出去
我是先启动,再更新ip数据库,更新成功以后,不重启先用着
我这里解决不了,ip数据库已经成功更新,然后重启ssrp,还是会把国内的ip全部代理出去
这个用啥命令看的
这个是服务端的日志,贴出来想说明更新ip数据库是正常的,国内域名baidu被代理到了服务端(分流异常)
这个是服务端的日志,贴出来想说明更新ip数据库是正常的,国内域名baidu被代理到了服务端(分流异常)
楼主解决了吗?我也遇到类似的问题,用五千多条的那个IP库可以顺利分流,用八千多条的IP库就跟开了全局一样。同样是clang.cn,不知道两个IP库为什么会造成这种区别。
楼主解决了吗?我也遇到类似的问题,用五千多条的那个IP库可以顺利分流,用八千多条的IP库就跟开了全局一样。同样是clang.cn,不知道两个IP库为什么会造成这种区别。
无力解决,一次弄好之后软件重启就会又出问题,懒得搞了,直接debian11 + iptables + xray-core一把梭。。
楼主解决了吗?我也遇到类似的问题,用五千多条的那个IP库可以顺利分流,用八千多条的IP库就跟开了全局一样。同样是clang.cn,不知道两个IP库为什么会造成这种区别。
无力解决,一次弄好之后软件重启就会又出问题,懒得搞了,直接debian11 + iptables + xray-core一把梭。。
我把访问控制里【不走代理的域名】和【强制走代理的域名】都清空,IP分流就正常了,好像是域名分流和IP分流有冲突
老版本的ShadowSocksR Plus+没有这个问题,新版本有这个问题,所以我刷回老版本了!
老版本的ShadowSocksR Plus+没有这个问题,新版本有这个问题,所以我刷回老版本了!
老哥,你用的那个版本的
楼主解决了吗?我也遇到类似的问题,用五千多条的那个IP库可以顺利分流,用八千多条的IP库就跟开了全局一样。同样是clang.cn,不知道两个IP库为什么会造成这种区别。
无力解决,一次弄好之后软件重启就会又出问题,懒得搞了,直接debian11 + iptables + xray-core一把梭。。
我把访问控制里【不走代理的域名】和【强制走代理的域名】都清空,IP分流就正常了,好像是域名分流和IP分流有冲突
+1 这样可以了
我也是同样的问题, 只要软路由重新启动, 选择是SS plus 绕过国内IP, 启动后, 谷歌可以连通, 但是百度就是不可以, 只要关掉墙, 再重新开启, 就可以连通百度! 如果选择GFW 模式, 启动没有问题, 但是许多网站没法解析, 也就上不去!
老版本的ShadowSocksR Plus+没有这个问题,新版本有这个问题,所以我刷回老版本了!
老哥,你用的那个版本的
老版本的Core是可以升级为1.83版本的?还是老的Xray Core?
楼主解决了吗?我也遇到类似的问题,用五千多条的那个IP库可以顺利分流,用八千多条的IP库就跟开了全局一样。同样是clang.cn,不知道两个IP库为什么会造成这种区别。
无力解决,一次弄好之后软件重启就会又出问题,懒得搞了,直接debian11 + iptables + xray-core一把梭。。
我把访问控制里【不走代理的域名】和【强制走代理的域名】都清空,IP分流就正常了,好像是域名分流和IP分流有冲突
清空访问代理里面的域名就可以吗? 我试试, 看看实际是否可以解决问题
@w311ang 我想我知道原因了, 我手动点击
【国内IP段】数据库
的时候是无法更新的, 这个更新地址应该属于国内, 然后走了代理之后被我的服务端block掉了, 我关闭代理之后点击更新, 然后成功更新了,ipset list china
也可以列出很多ip地址了, 现在能正常使用了, 应该是ssr plus的处理逻辑是第一次启动时会去自动更新这个ip段数据库, 然后刚好被我的服务端block一直无法更新成功, 才出现所有地址都当成国外ip处理的, 这个ip数据库一直得不到更新, 陷入死循环, 问题已解决, 多谢啦
但是软路由重新启动后, 还是一样的老问题啊? 需要再次手动关闭SS Plus, 再启动, 就可以连通百度了! 总不可以不重启软路由吧?>
@innojerry 我前段时间重新拉取源码编译之后好像就没有这个问题来了,你可以试试.
@innojerry 我前段时间重新拉取源码编译之后好像就没有这个问题来了,你可以试试.
这个我还不知道如何解决呢? 请教一下, 如何解决?
这个我还不知道如何解决呢? 请教一下, 如何解决?
我好像记得当时是用dirclean清理,然后重新编译就好了,不过用了这个清理之后可能会让你回到第一次编译的那种状态需要编译很久,具体我也不是很清楚,跟着教程误打误撞就搞好了
make dirclean
git pull
./scripts/feeds update -a
./scripts/feeds install -a
make defconfig
make download -j8
make V=s -j$(nproc)
解决了,多谢@onlyJinx 的探索。 我是一样的情况,用绕过中国IP模式,全部网站都走了代理。 命令 ipset list china 查看为空, 通过命令 /usr/share/shadowsocksr/chinaipset.sh /var/etc/ssrplus/china_ssr.txt 手动去更新时候报错 name 已存在, ipset v7.17: Error in line 1: Set cannot be created: set with the same name already exists 然后自己 cat /usr/share/shadowsocksr/chinaipset.sh 里面看执行的代码 猜测是之前已经有名叫 china 的 ipset集合 导致重名无法再次创建了 尝试注销掉 /usr/share/shadowsocksr/chinaipset.sh 中 create china hash:net 那一行 再手动执行 /usr/share/shadowsocksr/chinaipset.sh /var/etc/ssrplus/china_ssr.txt 成功! ipset list china 有了且分流正常 !
PS: 但是我另一个openwrt就一切正常,可以执行/usr/share/shadowsocksr/chinaipset.sh /var/etc/ssrplus/china_ssr.txt 而不会报错 name 已存在,目前不知道哪里的差别导致的,openwrt版本都一样的。
我已经放弃了,改用openclash了
我找到了个土办法 就是把直连的国内ip,手动加进配置文件里面,配置文件在/etc/config/shadowscoksr里面config access_control里面
后面把这https://github.com/dogelee2/pic/raw/master/shadowsocksr 里的都加进去,加完快6000多行了而且ssrp的后台进去也好卡,但是用是能用,速度也没影响,直连也可以直连
你好,我遇到了相似的问题,或者我认为相似的问题,不知道如何解决,我选择绕过国内IP并且把国内IP更新到最新后,国内的延迟却比国外高
还是没解决?
我也是一样的问题呢
反馈bug/问题模板,提建议请删除
1.关于你要提交的问题
SS Plus+分流异常
Q:是否搜索了issue (使用 "x" 选择)
2. 详细叙述
(1) 具体问题
A:先说明一下, 服务端我的配置是 禁止访问所有国内IP和网站, 就是说如果把国内的域名代理了, 那会导致直接无法访问(被我服务端block了) 分流如图, 选的是绕过国内IP, 然后连通性检查的时候会提示错误, 我上服务端看日志的时候, 发现baidu这个域名被代理了, 只有GFW列表模式可以正常工作, 重新编译了也是同样的问题, 现在没有处理的头绪
(2) 路由器型号和固件版本
A:x86 软路由
(3) 详细日志
A: