请选择 进入手机版 | 继续访问电脑版

 找回密码
 立即加入
搜索
查看: 17122|回复: 1

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

[复制链接]

43

主题

47

回帖

847

积分

管理员

积分
847
发表于 2018-11-24 15:10 | 显示全部楼层 |阅读模式 |回复 |
之前用另一个科学软件做过透明网关,前不久又测试了v2ray,一样成功了,所以再把这个教程写出来,让大家多一种科学软件的使用方法。经过测试,树莓派和虚拟机里的debian,都能成功。

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

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

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

二,配置
配置文件在/etc/v2ray/config.json里面,我这里贴一个模板,大家下载好改一下就行了。
如下图,只需要修改下面红线处的就行了,改成和你的服务器参数相同
2018112401.PNG
json配置模板,记得要把//及后面的删掉,不然会报错,修改好配置文件,上传到/etc/v2ray里面,替换之前的
config.rar (599 Bytes, 下载次数: 1450)

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


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


五,配置ipset
由于被屏蔽的网址域名太多,我们就用ipset来管理,只需要维护一个文件即可,遇到新的被xx的,在后面加一行就行了,网上有热心的人做好了一份那啥表,我们直接拿来用即可。
下载xx列表
  1. cd /etc/dnsmasq.d
  2. wget https://cokebar.github.io/gfwlist2dnsmasq/dnsmasq_gfwlist_ipset.conf
复制代码
还需要在ipset里新建一个xx的名字,用于存放被xx网址的ip,创建一个ipset集合
  1. ipset -N gfwlist hash:net maxelem 65536
复制代码
运行dnsmasq
  1. service dnsmasq start
复制代码

启动dnsmasq时,如果提示5353端口被占用,可以使用systemctl disable avahi-daemon将这个进程停掉,这个进程把5353端口给占用了。

六,用iptables转发被xx的流量
  1. sudo iptables -t nat -A PREROUTING -p tcp -m set --match-set gfwlist dst -j REDIRECT --to-port 2000
  2. 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,最后一行添加
  1. net.ipv4.ip_forward=1
复制代码
让更新实时生效
  1. sysctl -p
复制代码

八,测试
找一台电脑,把网关和dns设置为树莓派的ip,然后访问一下,如果ok,则说明已成功。

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


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


回复

使用道具 举报

43

主题

47

回帖

847

积分

管理员

积分
847
 楼主| 发表于 2018-12-24 14:55 | 显示全部楼层 |回复 | 支持 反对
对于开机恢复ipset和iptables这个问题,最新的debian 9在network下面脚本有点问题,可以把这两个恢复命令放在rc.local里面,具体操作如下。

nano /etc/rc.local

在exit 0前面加上自己想要的命令或脚本即可,开机后一样会执行。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

本版积分规则

Archiver|手机版|小黑屋|玉玲珑

GMT+8, 2024-3-29 19:32 , Processed in 0.027233 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表