|
树莓派做一个网关,安装好shadowsocks后,可以让局域网内所有的设备不需要做任何设置访问被屏蔽的网站,包括手机,安卓盒子,台式电脑,只要能连上路由器就可以实现这种功能。
树莓派安装Debian系统,实现所有电脑不用任何设置自由访问被屏蔽的网站。简单的介绍下原理,一台树莓或一台虚拟机安装ss-redir(shadowsocks自带),然后进行iptables各种转发过滤。需要翻墙的电脑的网关设置为树莓的ip地址。加上cn的ip过滤,可以进行墙内外智能线路。如果路由器自动分配ip的,可将路由器里的hdcp的网关设置为服务器的ip,服务器的网关设置为路由器的ip。这种自动获取ip的手机的网关就是树莓派的了,就可以通过树莓的流量转发过滤。
一,安装包及编译工具
- apt-get update
- apt-get install --no-install-recommends build-essential autoconf libtool libssl-dev gawk debhelper dh-systemd init-system-helpers pkg-config asciidoc xmlto apg libpcre3-dev
复制代码
二,下载,编译源码
1,用git下载源码,用源在线安装似乎行不通,因为ss的ip已被屏蔽了,所以只能用源码编译安装了。
- git clone https://github.com/shadowsocks/shadowsocks-libev.git
复制代码
2,编译生成deb安装包,进行安装
- cd shadowsocks-libev
- dpkg-buildpackage -b -us -uc -i
- cd ..
- dpkg -i shadowsocks-libev*.deb
复制代码
3,在/usr/bin目录下面生成三个文件,分别是ss-server、ss-local、ss-redir。
三,按照示例进行shadowsocks-libev设置
修改/etc/shadowsocks-libev/config.json,格式如下
- {
- "server":"server-ip",
- "server_port":8388,
- "local_address":"192.168.0.3",
- "local_port":1080,
- "password":"passwd",
- "method":"aes-256-cfb",
- "timeout":600
- }
复制代码
四,配置iptables进行转发和过滤
1,配置下面的iptables,简单的解释下这些iptables的含义。
第1行:在nat表中创建一个SHADOWSOCKS链
第2行:遇到vps的ip时直接放行,这里改成你自已的vps的ip
第3-10行:放行局域网等一些ip地址
第11行:放行中国的ip,就是中国的ip不走代理,后面会有7000多条中国的ip加到这里,如果不加,所有的流量都要走ss,那访问国内的网站会很慢的。
第12行:除了上面2-9行的地址外,其它的ip都转发到1080端口,就是ss的本地端口上
第13行:使用SHADOWSOCKS链,其他设备走PREROUTING链第
14行:使用SHADOWSOCKS链,树莓派自己走OUTPUT链
下面的iptables请按顺序来输入,不可打乱顺序
- iptables -t nat -N SHADOWSOCKS
- iptables -t nat -A SHADOWSOCKS -d server-ip地址 -j RETURN
- iptables -t nat -A SHADOWSOCKS -d 0.0.0.0/8 -j RETURN
- iptables -t nat -A SHADOWSOCKS -d 10.0.0.0/8 -j RETURN
- iptables -t nat -A SHADOWSOCKS -d 127.0.0.0/8 -j RETURN
- iptables -t nat -A SHADOWSOCKS -d 169.254.0.0/16 -j RETURN
- iptables -t nat -A SHADOWSOCKS -d 172.16.0.0/12 -j RETURN
- iptables -t nat -A SHADOWSOCKS -d 192.168.0.0/16 -j RETURN
- iptables -t nat -A SHADOWSOCKS -d 224.0.0.0/4 -j RETURN
- iptables -t nat -A SHADOWSOCKS -d 240.0.0.0/4 -j RETURN
- #中国ip
- iptables -t nat -A SHADOWSOCKS -p tcp -j REDIRECT --to-ports 1080
- iptables -t nat -A PREROUTING -p tcp -j SHADOWSOCKS
- iptables -t nat -A OUTPUT -p tcp -j SHADOWSOCKS
复制代码
2,保存iptable
- iptables-save > /etc/iptables.conf
复制代码
3,配置iptables,让其能在重启时自动动行并生效
编辑 /etc/network/if-pre-up.d/iptables,加入下面两行
- #!/bin/sh
- iptables-restore < /etc/iptables.conf
复制代码
执行
- chmod +x /etc/network/if-pre-up.d/iptables
- bash /etc/network/if-pre-up.d/iptables
复制代码 用命令测试一下iptables保存生效了没
4,打开转发
打开/etc/sysctl.conf,最后一行添加
让更新实时生效
五,启动ss-redie
- ss-redir -u -c /etc/shadowsocks-libev/config.json -f /var/run/ss-redir.pid -b 0.0.0.0
复制代码
可以用supervisor来守护这个进程,已测试可用。
测试,电脑的网关改为此树莓派的IP,就可以把树莓当做一个网关了。
六,过滤绕过国内的ip
- curl http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest | grep 'apnic|CN|ipv4' | awk -F\| '{ printf("-A SHADOWSOCKS -d %s/%d -j RETURN\n", $4, 32-log($5)/log(2)) }' > cn_rules.conf
复制代码
执行上面这一行,把生成的配置替换上面iptables里的
这样就能绕过国内的网络。
到此,树莓派做为网关就算成功了,把电脑的网站设置为树莓的ip,关掉所有的ss,用任何浏览器打开谷歌,测试一下能不能访问。
七,设置路由器
我们的目的是局域网内所有的设置都要不用任何设置的访问特殊网站,所以还要在路由器上进行设置。
将路由器的HDCP网关设置为树莓派的IP(当手机连到路由器时,是自动分配的IP,这个时候默认的网关就是树莓派,而不是路由器了),把树莓派的网关设置为路由器的IP。电脑的网关设置为树莓派的IP,这样电脑的所有流量从树莓派这个网关进行转发或过滤,然后从路由器出去。
更多详情及讨论,请访问:yuln.com
|
|