2018-02-19

利用SS+ipset加速全球ipv4的访问速度

环境

树莓派 3B
系统:RASPBIAN STRETCH LITE 基于 Debian

原理阐述

利用自己或者是购买的 Shadowsocks 服务,搭配ipset的分流加速IPv4的网络访问。

比如在中国某地,访问 A 网站是绕美国到欧洲,而自己有直连的欧洲服务器,那么就可以 通过这个服务器去加速A 网站的访问,但是如果要访问美洲的网站,绕路欧洲则明显拖慢了速度,就可以利用 另外一个位于美洲的服务器加速,正常情况下这样切换显得十分不方便,那可以搭建一台根据IP自动分流的加速服务器。

软件

shadowsocks-libev
ipset
这两个软件 一行 命令便能安装,不再过多阐述。

配置

约定:

  • ss服务器 :
    • 1.example.com 192.168.1.1 位于欧洲 ss-redir地址:0.0.0.0:10001
    • 2.example.com 192.168.1.2 位于非洲 ss-redir地址:0.0.0.0:10002
    • 3.example.com 192.168.1.3 位于亚洲 ss-redir地址:0.0.0.0:10003
    • 4.example.com 192.168.1.4 位于美洲 ss-redir地址:0.0.0.0:10004

例如 ss-redir -s 1.example.com -p 8388 -k password -m rc4-md5 -c 0.0.0.0 -l 10001

分流规则:
* 非洲走非洲
* 欧洲走欧洲
* 亚洲 大洋洲走亚洲
* 南美 北美走美洲

当然这些规则都可以自己定义, 根据需求 建立一个网关(包括DNS DHCP 服务器,并将网关设置为 本机

建立对应的 ipset hash 表

ipset 中 hash ip表的最大容量为 2^32-1,由于IP会有很多,所以我们需要一个尽量大的表

ipset create EU hash:ip hashsize 4096 maxelem 4294967295
ipset create AF hash:ip hashsize 4096 maxelem 4294967295
ipset create AS hash:ip hashsize 4096 maxelem 4294967295
ipset create LA hash:ip hashsize 4096 maxelem 4294967295

用这个命令建立初始容量为4096 条,最大容量 4294967295 的表。

iptables 设置

#在 nat 表中 新建一个链,称之为 fastnet 
iptables -t nat -N fastnet
# 将 nat的 output 所有非icmp的流量重定向到fastnet中
iptables -t nat -A OUTPUT ! -p icmp -j fastnet
# 将 远程 ss服务器 地址设置为 RETURN
iptables -t nat -A fastnet -d 1.example.com -j RETURN
iptables -t nat -A fastnet -d 2.example.com -j RETURN
iptables -t nat -A fastnet -d 3.example.com -j RETURN
iptables -t nat -A fastnet -d 4.example.com -j RETURN
# 将符合 各hash表 规则的流量重定向到 对应的端口
iptables -t nat -A fastnet ! -p icmp -m set --match-set EU dst -j REDIRECT --to-port 10001
iptables -t nat -A fastnet ! -p icmp -m set --match-set AF dst -j REDIRECT --to-port 10002
iptables -t nat -A fastnet ! -p icmp -m set --match-set AS dst -j REDIRECT --to-port 10003
iptables -t nat -A fastnet ! -p icmp -m set --match-set LA dst -j REDIRECT --to-port 10004

这样子设定之后网关本身 访问互联网的时候并不会走优化。

导入IP

可以用 我自己的 IPsection 项目, 从NIC 上获取对应洲的ip段,并使用 ipset add

-- EOF --

comments

如果无法加载 请将 disqus.com | disquscdn.com 加入代理