-
Notifications
You must be signed in to change notification settings - Fork 1.1k
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
What to Do with chnroutes #24
Comments
VPN 不会断,因为它是无状态的。 |
考虑改用ipset吗?好处是这样可以和tun设备的创建或回收解耦。 也方便用户自定义ipset 列表。 |
是一个办法,通用性好一些,不过担心性能不如路由表。 |
写了一个反转 IP 段的工具: 对 chnroutes + 保留 IP 段反转后,得到国外 IP 段。可以看看生成的结果有没有 bug: 结果 6000 多条,比 chnroutes 多 50%,不过应该性能差不多。这样就可以反过来不改默认路由,只写 VPN 的路由了。 |
比 chnroutes 多了不到2000条,影响不大,有时间测试一下。 |
看了一下chnroute本身,不太清楚它的IP段是如何获取的…… |
我对chnroutes依赖不是很大。 我只是少量网站需要翻墙,所以通过dns解析 + ipset 就满足了。 |
这一份就是根据 apnic 取得的准确的最新国内 IP 段,简化过的都是不准确的。 要简化可以直接修改代码过滤掉比较小的 IP 段,即把一部分国内 IP 段误判成国外:
当然也可以反过来,对生成的结果做过滤,把一部分国外 IP 段误判成国内。 |
@clowwindy 所以 iptables -t nat -A POSTROUTING -o $intf -j MASQUERADE
iptables -P FORWARD ACCEPT
iptables -D delegate_forward -j reject>/dev/null 2>&1 我只测试了二级路由和 LAN - LAN 连接两种方式,pppoe 拨号没条件测试,有条件的可以测试一下。 至于 |
@aa65535 |
@clowwindy 如果担心安全性问题的话,可以改成这样,昨天忘记测试这个情况了。 iptables -t nat -A POSTROUTING -o $intf -j MASQUERADE
iptables -A FORWARD -i $old_intf -o $intf -j ACCEPT
iptables -A FORWARD -i $intf -o $old_intf -j ACCEPT
iptables -D delegate_forward -j reject>/dev/null 2>&1 就是在原有的后面加一条 |
不建议采用这种方式改iptables 规则, 尽量采用uci http://wiki.openwrt.org/doc/uci/firewall?s[]=firewall
|
涉及到 delegate_forward 这样只有 OpenWRT 才有的表的话 client_up.sh 就不通用了。最好只在打 OpenWRT 包时使用。 |
@cj1324 @clowwindy |
最好是用 if 判断一下再执行,不要打个错误出来。从经验上看,哪怕错误没有影响,用户也会被吓到的,然后就会觉得这个软件有问题不稳定。 |
后面有加 |
这样也行吧。 |
autoddvpn有个脚本,从gfwlist获得域名,然后用国外DNS解析获得IP。我在这基础上改进了一下,把所有ip变成/16网段,再在bgp.he.net上根据ASN获得几个重要企业的IP网段如google、facebook、twitter等,进行合并后得到500条记录,然后去除里面的中国IP最终只有880条记录。 |
但是这些网站在不同地区和时间解析结果是不一样的,也就是说这些记录不适合打包在项目里,只适合在路由器上定时自动跑更新 |
要选择世界各地的DNS解析再合并,可以稍微改善结果,整个脚本运行需要1小时左右,可以在VPS上定时更新。用路由表比较适合低端的路由器。最好的方式当然是iptables+ipset+dnsmasq+ip rule,完全自动,但是比较费CPU |
查了下,很多人现在shadowsocks+ss_redir用的就是ipset,反馈是采用RC4-MD5之后的性能很不错,可以认为目前主流的openwrt路由器(AR9331之类)可以承受ipset? |
@lsylsy2 我就是采用这种方式, 一般有1500个ip ,性能方面没有测试过,只要服务器连通性够好。看1080P 无压力。 |
我尝试在国内的服务器上部署shadowvpn+chnroute. |
@xtheo 那你的 vps ip 就落在这个 IP 段里咯。 |
完全不是,我的vps是107.170开头digitalocean的 |
那就是某个经常访问的 IP 在这个 IP 段。 |
What about this? |
@airtheva IMO not neccessary. It's only 1% faster, but it will leads to unforeseen routes in countries other than CN, US, UK, JP. |
有提到”很痛恨openvpn断了之后,半分钟才能重连“,我目前自用的是openvpn static模式,当网络变化的时候,主要的网络中断是耗在了chnroute上……
我(以及chnroute官网等大多数人)使用的方案是设置国内路由直连,之后将默认路由设置为VPN(通过设置0.0.0.0/1与128.0.0.0/1两条路由)的形式;优点是路由条目比较少,缺点是一旦出现问题VPN断开,国外网络就会直接断掉;
之前曾经想过一个思路,把路由表放到VPN程序内部做;系统级别,VPN连接着的时候所有数据走VPN,VPN断开时所有数据该怎么走怎么走;显然,这样会有性能问题。
@clowwindy 有什么好法子解决这个?
PS:有考虑过client的配置文件里写多个server,随机选择or顺序尝试第一个成功连接的?openvpn是有这个功能的,可以考虑用心跳之类的机制来保持stateless的情况下判断服务器是否连通?
The text was updated successfully, but these errors were encountered: