好像很复杂的样子,如果根据gfwlist来判断的话还有很多遗漏的域名,我感觉还是用白名单比较舒服,国内走本地,其他走socks5,这样100%不会受到墙的干扰,而且一定程度上可以加速一些国外网站的访问,当然你自己的shadowsocks速度要给力才行。我说说我的做法:
1、shadowsocks,用ss-redir运行,得到一个透明代理。
2、chnroute整理国内ip段出来,通过iptables创建规则,默认流量走ss透明代理,国内ip段则走本地。整理出来大概将近4000条防火墙规则,我用openwrt执行的话大概需要三四分钟,也就是开机加载时间比较久,路由器不重启的话基本没什么影响。
3、dns污染问题,实际上我觉得这个老方法更有效
https://code.google.com/p/openwrt-gfw/wiki/AntiDNSPoisoning用这个方法你会得到大概十几二十条iptables规则,加上这些规则基本不会受到污染,再配合dnsmasq把一些域名受到严重污染的域名通过8.8.8.8或者其他dns来解析,最重要的一点,不影响一些网站的本地cdn加速而且不受污染。