Shadowsocks + ChnRoute 实现 OpenWRT / LEDE 路由器自动科学上网

本站发布的三种使用 shadowsocks 在 OpenWrt / LEDE 上的自动科学上网方案:

1、Shadowsocks + ChnRoute 实现 OpenWRT / LEDE 路由器自动科学上网
2、Shadowsocks + Redsocks 实现 OpenWRT 路由器自动科学上网 (停止更新)
3、Shadowsocks + GfwList 实现 OpenWRT / LEDE 路由器自动科学上网

这篇文章介绍的方法基于aa65535的luci-app-shadowsocks/openwrt-shadowsocks,介绍了如何在OpenWRT / LEDE下配置自动科学上网,新版本支持在Luci下图形化配置,大大简化了配置过程。配置完成后,路由器本身获得自动科学上网能力,所有连入该路由的设备都可无障碍访问被墙的站点。是运行于路由器的透明代理。

方案简介
方案根据IP判断是否代理,国内IP不代理,国外IP走代理。代理通过shadowsocks所带ss-redir做TCP转发实现,分国内外IP通过国内IP段列表文件chnroute来区别,并通过iptables规则分别处理。

由于是基于IP的判定,故需要解决DNS污染的问题,本方案使用优化的DNS解析方案,除过防DNS污染,同时具有良好的CDN兼容性,大部分情况下是最优的解析结果(缺点是配置过程稍繁琐)。

本方案进一步优化,增加GFWList和Dnsmasq-China-List,使得GFWList中域名强制走代理,而Dnsmasq-China-List中的域名则强制直连,并且可以自行定义强制走代理或者不走代理的域名

本文changelog
[2020.04.01] 优化了端口附加参数部分;优化了custom bypass;添加了OpenWrt19.07可能需要额外安装luci-compat的描述文字。

[2019.05.09] 修订一些错误。

[2018.04.16] 修正部分下载链接。

[2018.04.16] 删除OpenWrt CC版本的安装说明;针对aa65535最新的静态链接编译的版本,修改安装步骤。

[2018.02.23] 部分小错误修订,细节完善(如:增加WAN口DNS设置)。

[2017.10.07] libcares代替libudns,更新安装说明。

[2017.07.22] 跟进luci-app-shadowsocks 1.7.0版本,增加负载均衡说明,修订多进程和TFO的说明。

[2017.06.05] 新增开启TCP Fast Open步骤;新增开启多进程、设置MTU的描述。新增changelog。

[2017.04.09] “附加参数”设置修订。

[2017.03.19] 修订安装步骤。

[2017.02.22] 新增gfwlist配置自动生成脚本;修订chinalist配置自动生成脚本。

[2017.02.09] 支持最新3.x版本shadowsocks-libev;新增LEDE安装说明。

[2017.01.27] 变更DNS方案,DNS部分修订完成;DNS引入dns-forwarder,引入chinalist和gfwlist,新增chinalist配置自动生成脚本。

[2016.12.9] aa65535变更包结构,包名改变;新增访问控制等大量新功能;文章根据新版本重写。

[2014.12 – 2016.11] 各种修订。

[2014-11-18] 首版发布,基于aa65535的shadowsocks-libev-spec。

注:本文不再提供OpenWrt 15.05及以下版本的说明;仅支持LEDE 17.01, OpenWrt 18.06及后续版本

一、安装

适用于 openwrt-shadowsocks 3.0.1及以上版本,搭配 luci-app-shadowsocks 1.6.0及后续版本。

使用OpenWrt 19.07及后续版本的用户可能要安装 luci-compat 才可以正常使用 luci-app-shadowsocks 

所需软件列表

方法一: 添加作者的软件源,直接利用opkg命令安装 (此方式快捷方便,推荐!)

软件源位置:http://openwrt-dist.sourceforge.net/packages/

前提是所用网络环境直连sourceforge.net和downloads.openwrt.org没有问题。

参照 http://openwrt-dist.sourceforge.net/ 里的说明:

首先添加 a65535 的 gpg key,只有这样,第三方的包才能通过签名验证。执行:

打开Luci,定位到“系统”-“软件包”-“配置”选项卡,在“自定义feeds”末尾加入两行并点击“提交”:

请根据自己的CPU架构(可以执行 opkg print-architecture 查看,或者参考“发行版软件源”里的URL里的文本),将mipsel_24kc替换成相应的文本,最后点击提交。

然后执行命令 opkg update 更新软件列表,然后执行下列命令安装依赖包以及shadowsocks相关的软件:


方法二: 手动下载软件包,上传至路由器后安装

如果直连遇到困难(无法连接或者过程中下载总是中断),请继续下面的步骤来安装。实测国内许多ISP,执行 opkg update 和 opkg install 下载安装的时候都可能会遇到卡住、中断的情况,请多试几次。如果尝试多次仍然失败,请参考下面的依赖列表,手动至官方下载站点手工下载。

详细步骤点击展开

依赖包要装全!依赖包要装全!依赖包要装全!重要的事情说三遍!遇到安装问题请参考下列以来列表,看自己装全了没有!

依赖列表

右边注释为该包在官方软件源目录下划分到了哪一类 方便查找

安装过程中如果出现错误提示无法解决,可以留言。

首次安装的话,先确保路由器联网,并更新软件包列表:

注:部分ISP访问OpenWrt官方站点可能会非常缓慢甚至下载失败,此时需要自行在PC上下载上面的依赖包以后自行上传至路由器目录手动安装。

首先,需要手动安装部分依赖包(并不是所有的依赖包,部分依赖包会自动从软件仓库安装)

接下来下载软件,注意需要根据自己的CPU内核架构来进行选择。可使用如下命令查看架构类型:

下载地址: http://openwrt-dist.sourceforge.net/packages/

需要下载的文件:

将下载的包通过WinSCP之类的工具上传至路由器的/tmp目录。

安装shadowsocks, ChinaDNS以及dns-forwarder:

二、shadowsocks 配置

登录Luci,指向“服务”,此时应该能够看到shadowsocks(中文界面下显示“影梭”)了。接下来进行shadowsocks的配置。

I. 添加服务器

第一步先禁用LAN、WAN的ipv6,因为目前此方案的透明代理模式不支持ipv6,如果存在ipv6网络可能会有各种尴尬的问题:

LAN口设置里,将这三个改成已禁用即可:

至于禁用WAN口ipv6,如果你不需要路由器自身翻墙,则可以忽略这一步,否则:

①看看WAN6口有没有获取到IPv6地址,如果均没有跳到③,如果有跳到②;

②删掉WAN6口,保存,重连WAN口,稍等一会儿再看WAN口有没有ipv6,如果没有就完成设置了,如果有,跳到③

③修改WAN口设置,在高级设置里把获取ipv6地址改成禁用

PS:如果你想搞得彻底点,可以不管上面的步骤,直接在/etc/sysctl.conf里面添加两行:

然后执行 sysctl -p  生效,这样会在路由器上整体禁用ipv6。

 

切换到“服务器管理”选项卡,点击“添加”来增加一个服务器配置信息。你也可以同时添加多个服务器配置信息,如下图:

%e6%9c%8d%e5%8a%a1%e5%99%a8%e7%ae%a1%e7%90%861

添加一个服务器配置后,就要填写服务器配置(如下图),服务器地址、服务器端口、密码、加密方式是必须的。建议在别名中为当前配置文件起一个名字;填入信息后保存&应用。插件名称和插件参数留空,因为插件的使用不是本文的讨论范围。服务器地址需要填入IP地址。


II. 设置代理方案

接着切换到“访问控制”页面,一种配置举例如下图(不要抄图中的设置,每个人的情况不同,请参考下文的说明,根据自己情况设置!):

简单的说明一下图中配置的应用场景:

路由器多人共用,只有我使用shadowsocks,因此设置“代理类型”为“直接连接”,此时连入路由的设备访问网络时候默认直连,不走shadowsocks;而我有一台PC、一部手机、一台平板需要走代理,在“内网主机”中配置这三台设备的IP的代理类型为“正常代理”,还有一台PS4,联网游戏需要全局代理,设置他的IP(图中192.168.X.102)的代理类型为“全局代理”;还有一台下载机和一个物联网监控设备,不能让它们走代理,设置他们的IP(192.168.X.103/105)为“直接连接”。

具体使用时,需要根据自己的情况设置。多数情况设置代理类型为“正常代理”即可。具体每个选项的解释如下:

外网区域:控制访问哪些外网地址时走代理/不走代理

忽略列表文件:访问在这个列表中的IP时,不经过shadowsocks代理。这个方案使用chnroute文件作为忽略文件,只有配置了这个文件,shadowsocks才可以自动区分国内和国外IP。由于安装ChinaDNS的带有这个路由表文件,就选择“ChinaDNS路由表”。

不过这个列表需要定期更新,ChinaDNS安装时候附带的那个比较老旧了,需要更新,执行以下命令手动更新(建议ss开启时候更新,更新完后记得重启ss),请确保看到进度条走满,并检查最终的 /etc/chinadns_chnroute.txt 文件,文件中应该是每行一个CIDR。更新过程如果中断,请重试,更新前请备份之前的文件以免出问题。更新完成后,需要重启shadowsocks。

额外被忽略IP:这个列表中的IP强制绕过shadowsocks代理,如果有多shadowsocks服务器的可以将所有服务器的IP填进去,如果是单服务器不用填;其他按需添加。

强制走代理IP:这个列表中的IP强制走shadowsocks代理,填入8.8.8.8和8.8.4.4,其他按需添加。

 

内网区域:控制连入路由的设备访问网络时候的代理方式

共三种代理方式可选:

1.正常代理:使用外网区域设置的方式。

2.直接连接:忽略外网区域的设置,不走代理。

3.全局代理:忽略外网区域的设置,强制走代理。

具体到每个选项:

网络接口:shadowsocks只作用于勾选了的网络接口。默认OpenWRT/LEDE只有一个LAN区域,此处也只会显示一个接口,也就是:“桥接:br-lan”;一般情况勾选它就行。当路由配置了多个LAN区域时候,则会显示多个,比如配置了访客网络,勾选访客网络的接口就可以让shadowsocks的配置在访客网络中生效;如果你不想让访客访问网络时走代理,那么这里不勾选即可。

代理类型:连入路由的设备访问网络时,默认的代理方式。

代理自身:路由设备自身访问网络时的代理方式。使用本文方案时请选择“正常代理”或者“全局”,否则会导致DNS解析出问题,稍后我会修改方案,避免出现这种尴尬状况。

内网主机:单独配置内网特定IP的代理方式,优先级更高。需要为设备划分固定IP地址已达到最佳效果。

全部完成后,点击保存&应用。


III. 开启代理服务

最后切换到常规设置,来完成最终的配置:

运行状态:

透明代理: ss-redir的运行状态,shadowosocks代理的基础服务,提供TCP/UDP透明代理。

socks5代理:ss-local的运行状态,shadowsocks的socks5代理功能,路由器作为socks5代理服务器。

端口转发:ss-tunnel的运行状态,通常用作转发DNS。

透明代理:

主服务器:透明代理使用的默认服务器(TCP透明代理、端口转发两个功能会使用这里选择的服务器),此处从列表中选择你需要使用的服务器。

UDP服务器:UDP透明代理使用的服务器,可以和主服务器一致,也可以不同(也就是可以使用不同的服务器分别代理TCP和UDP连接)。在代理一些外服网络游戏的时候可能比较有用,其他多数情况下可以关闭。开启此项需要服务器支持,服务器端需要开启UDP功能。

本地端口:shadowsocks服务需要占用一个路由器端口,推荐保留默认,但不能和其他运行的程序有冲突,也不能和下面”socks5代理”和“端口转发”中的本地端口冲突。

更新MTU:手工指定MTU值传递给shadowsocks。通常PPPoE宽带连接为1492(也是此处默认值),网线直连以太网为1500。通过执行 ifconfig 可查看MTU值(找到wan口对应网卡设备即可)。也可以通过ping命令测试,具体步骤请超出本文讨论范围,不再叙述。

socks5代理:

有需要就开吧,不知道有用没的话就停用。

端口转发:

通常用于转发DNS请求,本文的方法未用到此功能,不用开启。如需要UDP方式的国外DNS解析,可用这个功能替换掉dns-forwarder.

最后再次保存&应用,并刷新页面,看到“运行状态”中对应的项目显示运行中即表示成功。


IV. 额外的优化

1. 避免高端口走代理

在访问控制→附加参数中选择自定义,填入 -m multiport --dports 22:1023,5228 ,这样可以避免高端口走代理(22:1023是指的代理22~1023所有的端口,后面跟的5228是google play store下载时用到的端口)。P2P类下载软件,多使用高端口,这样的设置可以避免此类软件走代理从而产生高额流量。也可以选择只代理53/80/443(至代理DNS、HTTP、HTTPS流量),或者选择无(不按端口区分走不走代理),请根据情况酌情选择。

如需代理FTP,请选择无,或者确保服务端是主动模式时代理对应的端口(通常是20和21)

你也可以自定义,其实就是iptables的额外参数,举例:

2. 开启 TCP Fast Open (TCP快速打开,缩略为TFO)

需求: 系统内核版本≥3.7,shadowsocks-libev≥3.0.4,luci-app-shadowsocks≥1.6.3;shadowsocks服务端开启tcp fast open。

修改 /etc/sysctl.conf ,加入如下一行:

执行如下命令使之生效:

然后在luci-app-shadowsocks的服务器设置中勾选TCP快速打开即可:

保存并应用即可。

2. 多服务器负载均衡

负载均衡可以使用多个服务器同时代理,使用时不同的TCP连接会分别分配到不同的服务器上,因此在多线程下载/上传时候可以做到带宽叠加提升速度。1.7.0版本加入此特性,使用方法也很简单,点击主服务器右边的加号再添加一个服务器即可,使用前请确保CPU不成为性能瓶颈,否则也只是徒增负载而已。注意使用多服务器负载均衡时, 可能会导致某些网站登录异常。

下面的描述针对使用多核心CPU的用户:

上面的配置其实是对HK2和HK1两个服务器分别开了一个进程,如果使用的是多核心CPU的路由器,建议使用多服务负载均衡,将进程数开到和CPU核心数(有超线程技术的则是和线程数)保持一致。如果不想使用多服务器负载均衡,只是想使用单一服务器,或者只有一个服务器可用,那么可以添加相同的主服务器,这样虽然对于网速没有改善,不过可以充分利用多核心的性能。

 

三、DNS配置

到此虽然shadowsocks配置完成,不过还没有进行DNS部分的配置,只有完成了DNS的配置才能解决DNS污染并优化DNS解析,接下来的部分来对DNS的配置进行说明。

PS:DNS的调试可以使用dig

I. DNS转发链图示

完整的DNS转发链如下图所示,先在dnsmasq这一层利用China-List和GFWList进行国内和国外域名区分,不在这两个列表中的域名交给ChinaDNS来区分;区分完毕后,国内的直接通过UDP协议交给国内DNS处理,国外的则会先利用dns-forwarder转成TCP协议后,走shadowsocks代理后交给国外DNS处理。

之所以交给国外DNS查询之前要转成TCP协议,是因为实际使用时候发现,UDP方式的查询在很多ISP的网络中不稳定,会造成各种异常,甚至使得ChinaDNS卡死,而且UDP方式对于部分特殊ISP甚至完全不可用;而TCP方式较为稳定,不过会相对慢一些,但绝大数情况下不会有明显差异。因此本文默认使用TCP方式。如果你需要使用UDP方式(比如说对DNS查询延迟要求很高),那么请使用shadowsocks的端口转发(ss-tunnel)替换此处的dns-forwarder。

其他转TCP查询的方式可以参考:《TCP 方式查询解决 DNS 污染问题》

II. DNS转发链的基本配置

luci界面,“服务”→”DNS 转发”(英文界面是DNS Forwarder),如图配置:

dns-forwarder

“服务”→”ChinaDNS”,如图配置,建议修改114.114.114.114为你ISP的DNS地址(此处5311为DNS Forwarder的监听端口,需要和上面dns-forwarder设置保持一致):

chinadns

在Luci中切换至“网络”-“DHCP/DNS”设置,如下图,在”DNS转发”中填入:127.0.0.1#5353

dns

其中,5353是ChinaDNS的本地端口,需要和上面ChinaDNS设置保持一致。

然后切到HOSTS和解析文件选项卡,勾中“忽略解析文件”,否则,dnsmasq会引入WAN口自动获取的DNS,造成DNS污染。

4

另外,请记住原来的设置(如下图),免得哪天想要撤掉科学上网的时候改不回去了,注意取消勾选后下面的“解析文件”里的值需要重新填写。

problem1

 

如果你需要路由器自身也能翻,那么到这里还没结束,因为目前的DNS设置不会对路由器自身访问WAN时候的DNS请求生效,还要下面的的额外步骤:

切换到WAN口设置→高级设置,取消“

同时也请记住你修改过这里的配置,那天你想撤掉科学上网的时候记得把这个改回去。

 

至此,DNS的基本功能的配置结束,应该可以正常科学上网了,此时可以尝试一下是否成功。然而此时区分国内国外域名全靠ChinaDNS,但是ChinaDNS的判断并不一定是准确的,需要优化。“DNS转发链的优化配置”部分会加入GFWList和China-List,来优化国内国外域名的解析。

III. DNS转发链的优化配置

1. 修改dnsmasq配置:

新建目录  /etc/dnsmasq.d ,然后执行:

如果返回值为 uci: Entry not found 或者其他非  /etc/dnsmasq.d 的值,则执行:

如果需要增加缓存条数,对应需要执行:

如果返回值为 uci: Entry not found ,则执行(缓存条数酌情设置):

如果返回值是一个数字,说明设置过该选项,但如果感觉小了,运行如下命令修改该值:

然后为了正常使用下面用到的脚本,需要安装可信根证书以及curl:

2. 添加gfwlist和China-List配置文件(此部分配置和“四、按域名指定是否走代理”部分的配置二选一):

(感觉下面的步骤有难度的,或者单纯不想用自动脚本生成的,可以使用现成的配置文件来代替下面的操作,但需要进行批量替换,将China-List中的DNS改成你ISP的DNS,将GfwList中的DNS改成127.0.0.1#5311。下载地址:dnsmasq_gfwlist.confaccelerated-domains.china.conf

下面的步骤会使用我编写的脚本来自动生成配置文件,脚本放在github维护,可能随时更新,可到gfwlist2dnsmasq, openwrt-scripts查看最近更新的动态。

下载自动生成规则文件的脚本:

逐条执行,并重启dnsmasq(记得下面命令中114DNS换成ISP的DNS):

完成后可自行查看 /etc/dnsmasq.d/accelerated-domains.china.conf 和文件,如有不需要的域名,注释掉或者删除即可(eg: 我这里港服PS Store直连很慢,于是在列表中搜索playstation关键字,将对应行用#注释掉。如果直连不慢建议不要更改)

PS:路由性能不好的,慎用China-List。

四、按域名指定是否走代理(可选)

这一部分的配置用于替代 “三.III.2. 添加gfwlist和China-List配置文件”中的步骤。请在完成“三.III.2. 添加gfwlist和China-List配置文件”前面的配置后进行这一部分的配置。

下面的步骤会使用我编写的脚本来自动生成配置文件,脚本放在github维护,可能随时更新,可到gfwlist2dnsmasq, openwrt-scripts查看最近更新的动态。

先使用dnsmasq-full替换掉原有的dnsmasq,由于先卸载dnsmasq后很可能会导致后面下载dnsmasq-full包的时候无法域名解析,从而导致下载失败,因此这里使用一个取巧的办法,先尝试安装dnsmasq-full:

然后会收到错误信息(原因是文件冲突),dnsmasq-full也不会成功安装;但是不用管,因为此时dnsmasq-full的依赖包应该已经装好了。接下来到openwrt官网下载dnsmasq-full的包,举例:https://downloads.openwrt.org/releases/packages-18.06/arm_cortex-a9_vfpv3/base/dnsmasq-full_2.80-1_arm_cortex-a9_vfpv3.ipk

然后将ipk包上传到路由器/tmp目录,并执行如下命令:

I. China-List强制直连 自定义域名强制直连

下载并执行自动生成规则文件的脚本,并重启dnsmasq(记得命令中114DNS换成ISP的DNS):

完成后可自行查看 /etc/dnsmasq.d/accelerated-domains.china.conf 和文件,如有不需要的域名,注释掉或者删除即可(eg: 我这里港服PS Store直连很慢,于是在列表中搜索playstation关键字,将对应行用#注释掉。如果直连不慢建议不要更改)

接着可以继续添加自己的需要强制不走代理的域名,在 /etc/dnsmasq.d 目录下新建 custom_bypass.conf ,按照下列格式添加(把114替换成ISP的DNS):

建议把所有.CN域名强制不走代理,玩steam、ps等的玩家也酌情将对应的域名添加进来,相关的域名列表可以在网络上搜索获取。

一个站点很可能存在CDN,此时也要将对应CDN域名加进来,并且站点页面也可能加载了多个域名的资源,这些域名也要酌情加入进来,可以使用浏览器的开发者工具查看这些域名。

最后不要忘记重启dnsmasq:

PS:路由性能不好的,慎用这一部分的配置。

II. GFWList强制走代理 自定义域名强制走代理

下载自动生成规则文件的脚本并执行:

接着可以增加自己的强制走代理的域名,在 /etc/dnsmasq.d 目录下新建 custom_forward.conf ,按照下列格式添加(5311对应dns-forwarder端口):

一个站点很可能存在CDN,此时也要将对应CDN域名加进来,并且站点页面也可能加载了多个域名的资源,这些域名也要酌情加入进来,可以使用浏览器的开发者工具查看这些域名。

最后不要忘记重启dnsmasq:

四、其他

一些强烈推荐的额外设置项(涉及到更新、维护)可以参考:《Shadowsocks for OpenWRT / LEDE 拾遗》

需要自己搭建服务器的,可以参考:shadowsocks – libev 服务端的部署

推荐的VPS商家见:https://cokebar.info/about

本博客有关 shadowsocks 文章合集目录

五、写在最后

本人作为一名普通使用者,水平有限,且文章也缺乏校审,肯定有错误存在,也有很多能改进的地方,如有意见或建议,请留言指出,万分感谢! 如果使用时遇到问题也欢迎留言,本人如果有空都会回复,不过请一定要将出错信息贴出来,有些错误信息需要到系统日志中查看。

2,166 条评论

  1. Frankie Leung 回复

    大神好,用ss+chinadns+dnsforwarder的方案,玩PS4会显示nat2,但是会说IP封包碎片,求解决方案,感谢

    1. cokebar 文章作者 回复

      MTU问题 Ps4上手动指定mtu为1397试试

      1. Frankie Leung 回复

        正好我开着PS4,刚试过了,不行,还有其他数据可以用吗?

    2. cokebar 文章作者 回复

      如果你ps4上不开代理,在线游戏没问题,那么建议不要打开udp,这样不会有封包碎片问题 ;
      如果确实要代理udp流量来在线游戏的话,先手动测一下网络的MTU吧,在pc上用ping设置DF位就可以测,具体方法搜索一下很多教程。
      PPPoE默认是1492,如果是1492那么去除ss需要的额外字节,还剩1397,所以让你设置成1397;但是用的ISP可能比这个小,如果isp的mtu更小,比如说有的地方是1480,这时候要设置到1385,所以你需要额外测试一下。
      如果光是ps4上改mtu不行,那么,路由器的wan口也手动指定mtu试试。

      1. Frankie Leung 回复

        感谢感谢,还打了那么多字,我已经用裸连光猫,不过路由器,测出来是1452,如果加28就是之前说的1480,因为我是6300v2ddwrt做主路由拨号,3800用lede做副路由,主路由lan口出,副路由wan接口进带有SS,我已经把主路由改了1385,副路由的也改了wan的1385,还有PS4也改了1385,最后还是会有IP封包碎片。如果关掉UDP的SS代理,就没有IP封包碎片提示,但是游戏联网都有问题,证明游戏走的是UDP。因为有很多PS4玩家都遇到这个问题,如果有IP封包碎片就用不了PS4的语音,PARTY功能。还要麻烦您再帮想想解决方案,谢谢

    3. cokebar 文章作者 回复

      主路由。。副路由。。。能只用一个么?还有就是别一起改1385啊,路由改1480才对吧

    4. cokebar 文章作者 回复

      路由先不要手动设定mtu,先只改ps4的,现在想了想路由改mtu应该用不到,除非路由wan口mtu无法自动获取,这时需要手动设,而这个应该很少见。
      所以路由依然自动获取。ps4上1385不行就先直接改个小的1200试试,可以的话再往大调。
      还有就是,能只接一级路由测试么

    5. cokebar 文章作者 回复

      wan口比ps4走代理的mtu大95,所以设一样mtu不行,必定碎片

      1. Frankie Leung 回复

        我后来只用一个路由,就是lede带有SS的路由连接PS4,路由设置1480,PS4设置1385,不行,还是碎片,设置1200,也是碎片,设置了900还是碎片,难道是SS的bug?

        1. cokebar 文章作者

          受限于tproxy;refer:https://github.com/shadowsocks/shadowsocks-libev/issues/361
          xbox已经没办法了,ps4至少不是完全不能用

        2. cokebar 文章作者

          我自己也试了一遍,跟你一样现象;因为基本不完在线,玩的几个不挂代理也能玩所以一直没开过udp代理,所以也没在意过udp碎片封包问题。 这还有一篇帖子:http://bbs.a9vg.com/thread-4605267-1-1.html,可以看一下,不过最终也没解决,只是改善了搜人速度。
          问题应该出在tproxy处理udp包relay的过程中,具体不大懂,但是估计是无解了。你可以去其他地方问问高手,更深入的我真不懂了

      2. Frankie Leung 回复

        不知道shadowvpn能否解决这个碎片问题,不过估计shadowvpn也不容易搭建。

        1. cokebar 文章作者

          shadowvpn可以解决,部署也不难,主要是没人维护了,目前的状态是只有基本功能,使用起来不是很方便。

      3. Frankie Leung 回复

        非常感谢,让你费心了,还找了那么多资料,我都一一试过,但是真的是没办法解决这个问题,好像只有shadowvpn才可以完美解决这个问题,请问shadowvpn构建的方式和shadowsocks的硬件条件是一样的吗,如果稳定,有没有继续维护和开发都无所谓,无非是达到使用的目的。你有没有假设shadowvpn的教程,以及设置经验,如果有,能写出来,对大家一定很受用。再次感谢你

        1. cokebar 文章作者

          作者wiki里应该很全面了:https://github.com/clowwindy/ShadowVPN/wiki
          openwrt移植(LEDE下需要自行编译):https://github.com/aa65535/openwrt-shadowvpn
          luci:https://github.com/aa65535/openwrt-dist-luci

        2. Frankie Leung

          非常感谢cokebar大神和aa65535大神,在这里得到你们帮助,感恩,我今天就在收集资料装shadowvpn的服务器,有问题我再麻烦你们,感谢

    6. cokebar 文章作者 回复

      服务端、路由器我均更新到最新版本重新测试,问题消失

      1. Frankie Leung 回复

        感谢大神提醒,我马上去更新,shadowvpn 已经测试,相对稳定,但是一用超过1个半小时开始迟钝,需要重新启动路由器,非常不稳定,看来是软件没有得到优化所致,目前还有一个思科vpn 是成熟的,但是没得测试,测试后给你反馈信息,谢谢

      2. Frankie Leung 回复

        我已经更新了luci的最新版本,ss我一直用你最新的3.03,LUCI更新后可以设置MTU,请问你是设置多少,我试了1480,1385,还是有碎片,是否我遗漏了什么?

        1. cokebar 文章作者

          是我失误了 我测试时候开了仅代理20-1023端口。今天回去再试试,可能还是无解

  2. 施彦超 回复

    老哥 用了你的方法设置了,也成功翻墙了,但是我自己xshell连vps连不上了

    1. cokebar 文章作者 回复

      你的vps和你使用的ss是同一个服务器么?如果不是,把vps的ip填到额外被忽略的ip那一项中

  3. Oxygen 回复

    大大有支持SSR的IPK么?自己水平太渣不敢乱动

    1. cokebar 文章作者 回复

      SSR本人不使用 不清楚

    1. cokebar fans 回复

      另外求教,编译固件的时候如何替换默认的dnsmasq?直接删掉默认的,弄这个直接选不到dnsmasq了……超级菜鸟求助……

      1. cokebar 文章作者 回复

        改dnsmasq的makefile,把源码改到这个地址上

        1. cokebar fans

          大神什么时候编译的时候改好的makefile能发我一份么…… 非常非常感谢。

      2. cokebar 文章作者 回复

        等那个分支不再是个test以后再说

        1. cokebar fans

          好的,非常感谢。 无法用言语表达呀。

      1. cokebar fans 回复

        非常感谢,已经使用中。

  4. Max 回复

    请教一下,在安装ss-lib的时候,报这个错,应该如何处理呢?谢谢

    root@Hedy-LEDE-2403:/tmp# opkg install shadowsocks-libev*.ipk luci-app-shadowsocks*.ipk
    Installing shadowsocks-libev (3.0.3-1) to root…
    Installing luci-app-shadowsocks (1.6.2-1) to root…
    Configuring luci-app-shadowsocks.
    Collected errors:
    * satisfy_dependencies_for: Cannot satisfy the following dependencies for shadowsocks-libev:
    * libudns *
    * opkg_install_cmd: Cannot install package shadowsocks-libev.

    1. Max 回复

      补充一下,我机器是Netgear WNDR 3800, 好像现在LEDE上SS-lib的分支对应我这台路由的,不再以 ar71xx来命名,所以我后来搜了一下,用的是这个: shadowsocks-libev_3.0.3-1_mips_24kc.ipk
      不知道有没有选对版本。

      1. cokebar 文章作者 回复

        target(路由器固件)继续以cpu型号区分,如ar71xx。而对于package,已内核架构加以区分,因为相同内核架构的不同型号cpu的包是可以通用的。

    2. cokebar 文章作者 回复

      最近shadowsocks-libev的更改,把udns也弄成动态链接了,所以增加了libudns的依赖。而udns在OP/LEDE的官方源里并没有,因此出现此错误信息。文中所列下载shadowsocks预编译包的目录里有编译好的libudns,下载那个安装后,再装shadowsocks即可。 这里所属的步骤已经更新到文章中,你也可以查看稳重最新的描述。

      1. Max 回复

        非常感谢,已经装上,跑起来了。

        目前在做这一步:下载 accelerated-domains.china.conf 和 dnsmasq_gfwlist.conf 两个文件

        dnsmasq_gfwlist.conf 的链接,里面有2个文件:
        dnsmasq_gfwlist.conf
        dnsmasq_gfwlist_ipset.conf

        应试是只要下载第一个就可以了吧?

        另外,后面的叙述中,有这样写:
        将 foreign_list.conf (GFWList)文件中所有的 127.0.0.1#5300 修改为 。。。。。

        所以是需要把 下载下来的dnsmasq_gfwlist.conf 改名为 foreign_list.conf, 是这样理解吗?
        另外做这一步的作用是把gfwlist里面所有域名直接通过tcp查询境外DNS,是这样吗?

        谢谢啦

        1. cokebar 文章作者

          1. 第二个dnsmasq_gfwlist_ipset.conf是给gfwlist方案用的,这里无需下载;
          2. foreign_list.conf这个是笔误,应该写为 dnsmasq_gfwlist.conf;这里无需改名,改了也无所谓,只要放在 /etc/dnsmasq.d目录中就行

      2. Max 回复

        太感谢了,终于可以畅快地上网了

  5. Joe Sun 回复

    非常感谢博主,捣鼓了两天成功了

    1. Joe Sun 回复

      好像ios的facebook不能用

    2. Joe Sun 回复

      facbook可以了,ios邮件客户端gmail连接不上,显示无法连接到“smtp.google.com”

    3. Joe Sun 回复

      大神能不能给解答一下ios连接不上gmail的问题,imap.gmail.com无响应

      1. Joe Sun 回复

        icloud的邮箱也能用

      2. Joe Sun 回复

        我把gmail的改成直连可以了,icloud不知是不是地址没找对,还是不行

    4. Joe Sun 回复

      大神,安装dnsmasq以后还需要做dns转发链的优化吗?

      1. Joe Sun 回复

        这个我明白了,里面都有

    5. Joe Sun 回复

      china-list的脚本好像有问题,命令打对了,没有转换

    6. cokebar 文章作者 回复

      I can’t get your idea.

      1. Joe Sun 回复

        问题1:generate_dnsmasq_chinalist.sh脚本有问题,输入命令后,DNS没变,没有添加ipset那一列
        问题2:用iPhone自带“邮件”应用,gmail和iCloud邮箱都不能连接服务器了。我把gmail.com添加到custom_bypass.conf后,gmail正常连接,但是一直没有找到icloud邮箱的域名。

        1. cokebar 文章作者

          1. 无法重现。你使用的脚本命令是什么?执行过程是否报错。
          2. 加到bypass反而可以,说明你的代理连接有问题,或者国外DNS解析有问题。请检查chnroute文件完整性,以及通过dig/nslookup调试DNS解析。

        2. Joe Sun

          感谢大神的回复,我是按照教程的命令执行的,没有报错,我也试了好几遍,可以生成文件,只是-d和-s命令无效。DNS解析正常,可以打开被墙的网站,只是iCloud邮箱连不上服务器。最近两天在出差,回去再研究一下,非常感谢您的回复。

  6. cokebar fans 回复

    请问大神,lede用op的在dnsmasq.conf里面加入conf-dir=/etc/dnsmasq.d 无效吗?必须在dhcp里加吗?

  7. freebird 回复

    无法安装3.0.3版本的shadowsocks-libev,提示:
    opkg install shadowsocks-libev_3.0.3-1_ar71xx.ipk
    Upgrading shadowsocks-libev on root from 3.0.2-1 to 3.0.3-1…
    Collected errors:
    * satisfy_dependencies_for: Cannot satisfy the following dependencies for shadowsocks-libev:
    * libudns *
    * opkg_install_cmd: Cannot install package shadowsocks-libev.

    请问咋办?

  8. freebird 回复

    sorry,原因是libudns_x.xx-x_xxxx.ipk没有安装!

  9. Steve 回复

    折腾了2天,严格按步骤执行,墙内网站可以打开,墙外网站都打不开……Netgear R7800 + LEDE 17.01.0……

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

请输入验证码 *