youland 发表于 2018-11-24 15:10

在树莓派上安装v2ray实现透明网关

之前用另一个科学软件做过透明网关,前不久又测试了v2ray,一样成功了,所以再把这个教程写出来,让大家多一种科学软件的使用方法。经过测试,树莓派和虚拟机里的debian,都能成功。

准备:
把树莓派刷好debian 9系统,设置好固定IP,切换到root用户,用ssh登录。服务器端也要安装好,并且配置ok。

一,安装v2ray
下载安装脚本
wget https://install.direct/go.sh安装
bash go.sh这样就成功的把v2ray安装到树莓派里了。
还有一种方法,是离线安装,因为上面这种在线安装方法,可能会出错,v2ray的下载地址有时会被干扰。离线安装的方法就是,把安装文件通过其它方式下行下载下来,直接安装,方法如下

先去https://github.com/v2ray/v2ray-core/releases 下载arm版的离线安装包:v2ray-linux-arm.zip,上传到一个目录里
然后
bash go.sh --local /root/v2ray-linux-arm.zip用这个方法同样也可安装

二,配置
配置文件在/etc/v2ray/config.json里面,我这里贴一个模板,大家下载好改一下就行了。
如下图,只需要修改下面红线处的就行了,改成和你的服务器参数相同

json配置模板,记得要把//及后面的删掉,不然会报错,修改好配置文件,上传到/etc/v2ray里面,替换之前的


三,测试v2ray
运行
/usr/bin/v2ray/v2ray -test -config /etc/v2ray/config.json如果出现ok,就说明配置成功了,如果报错,就要找下哪里写的不对,或者找高手帮忙看一下。
启动v2ray
systemctl start v2ray

四,安装dnsmasq
我们要在树莓上安装dnsmasq,用它来进行智能分流,墙内墙外分开
sudo apt-get install -y dnsmasq ipset安装好后,对dnsmasq进行配置,把/etc/dnsmasq.conf里所有的全删掉,
rm -rf /etc/dnsmasq.conf这里用nano,不会的去谷歌一下用法,加入下面几行,墙内的用114解析。最后一行的interface这里写上网卡的名字,如果不知道网卡名可以用ip addr命令查看。
no-resolv
cache-size=5000
server=127.0.0.1
server=114.114.114.114
conf-dir=/etc/dnsmasq.d
interface=eth0


五,配置ipset
由于被屏蔽的网址域名太多,我们就用ipset来管理,只需要维护一个文件即可,遇到新的被xx的,在后面加一行就行了,网上有热心的人做好了一份那啥表,我们直接拿来用即可。
下载xx列表
cd /etc/dnsmasq.d
wget https://cokebar.github.io/gfwlist2dnsmasq/dnsmasq_gfwlist_ipset.conf还需要在ipset里新建一个xx的名字,用于存放被xx网址的ip,创建一个ipset集合
ipset -N gfwlist hash:net maxelem 65536运行dnsmasq
service dnsmasq start
启动dnsmasq时,如果提示5353端口被占用,可以使用systemctl disable avahi-daemon将这个进程停掉,这个进程把5353端口给占用了。

六,用iptables转发被xx的流量
sudo iptables -t nat -A PREROUTING -p tcp -m set --match-set gfwlist dst -j REDIRECT --to-port 2000
sudo iptables -t nat -A OUTPUT -p tcp -m set --match-set gfwlist dst -j REDIRECT --to-port 2000上面两行大意是,所有在xx列表的域名走2000端口,2000端口就是我们上面json里配置的本地的端口

七,打开转发
打开/etc/sysctl.conf,最后一行添加net.ipv4.ip_forward=1让更新实时生效
sysctl -p
八,测试
找一台电脑,把网关和dns设置为树莓派的ip,然后访问一下,如果ok,则说明已成功。

九,保存iptables和ipset
这两个重启后会消失,所以要保存起来,写一个开机运行的脚本。
用下面两条命令保存
iptables-save > /etc/iptables.conf
ipset save > /etc/ipset.conf

编辑 /etc/network/if-pre-up.d/iptables
#!/bin/sh
ipset restore < /etc/ipset.conf
iptables-restore < /etc/iptables.conf给个权限
chmod +x /etc/network/if-pre-up.d/iptables这样开机就会恢复iptables和ipset列表了


youland 发表于 2018-12-24 14:55

对于开机恢复ipset和iptables这个问题,最新的debian 9在network下面脚本有点问题,可以把这两个恢复命令放在rc.local里面,具体操作如下。

nano /etc/rc.local

在exit 0前面加上自己想要的命令或脚本即可,开机后一样会执行。
页: [1]
查看完整版本: 在树莓派上安装v2ray实现透明网关