2019
12-22

openwrt怎么编译v2ray?openwrt安装v2ray教程,v2ray配置文件client-config.json设置

官方QQ群号码:922069959

openwrt安装v2ray教程,v2ray配置文件client-config.json设置

然而第一步就掉了链子,openwrt中默认的wget命令是由busybox提供的,不支持https,所以需要重新安装一个。

> opkg update
> opkg install wget

然后就可以高高兴兴去下二进制安装包了,不料这mipsle的安装包竟然有17MB,一个主程序和辅助工具再加上IP数据集,我的小Y只有16MB的Flash,真是天要亡我。还是不死心,go在编译时去掉符号表能省不少空间,还能再挤挤,果然在谷歌第一页就翻到了大牛留下的笔记:

https://gobomb.github.io/post/cross-complie-v2ray/

多亏大牛我才想起在openwrt官网下载的系统升级固件默认是没开FPU支持的,运行go程序会报Illegal instruction,就是说我要从固件开始自己编译,抬头望天。

挣扎

翻出了还在15.05-cc版的本地仓库,用30KB的平均速度pull到了最新的代码,长征第一步。

我沿用了之前搭建的环境,如果有需要从零开始搭建的同学可以参考官方指引,或者使用docker上的build-root镜像(张口就来,其实我没实际用过)。

代码更新完后更新一下软件包:

>./scripts/feeds update -a
>./scripts/feeds install -a

开始编译

那么可以开始编译固件了

首先把最重要的FPU支持打开,先进入内核选项菜单:

> make kernel_menuconfig

按下列路径进去把FPU支持开启

Kernel type ---> MIPS FPU Emulator

然后再去把需要预装的包都勾上

> make menuconfig

我的小Y是MT7620的板,开启5G-wifi需要安装kmod-mt76,如下:

kernel modules ---> wireless drivers ---> kmod-mt76

再去把usb自动挂载配置好(未雨绸缪):

添加USB相关支持

• Kernel modules —> USB Support —> <> kmod-usb-core. #默认已经选了
• Kernel modules —> USB Support —> <> kmod-usb-ohci. #默认已选 old usb1.0
• Kernel modules —> USB Support —> <> kmod-usb-uhci. # usb1.1
• Kernel modules —> USB Support —> <> kmod-usb-storage.
• Kernel modules —> USB Support —> <> kmod-usb-storage-extras.
• Kernel modules —> USB Support —> <> kmod-usb2. #默认已经选了 usb2.0
• 再加个usb3

添加USB挂载
• Base system —> <*>block-mount

添加自动挂载工具
• Utilities —> Filesystem —> <*> badblocks

添加文件系统支持
• Kernel modules —> Filesystems —> <> kmod-fs-ext4 (移动硬盘EXT4格式选择)
• Kernel modules —> Filesystems —> <> kmod-fs-vfat(FAT16 / FAT32 格式 选择)

添加UTF8编码,CP437编码,ISO8859-1编码(否则即使/dev/中出现设备也无法挂载)
• Kernel modules —> Native Language Support —> <> kmod-nls-utf8
• Utilities —> disc —> <> fdisk……………………………… manipulate disk partition table
• Utilities —> <*> usbutils…………………………….. USB devices listing utilities

又因为后面需要设置iptables转发,所以需要在menuconfig中安装如下包,因为是自编译固件,所以有些不能通过官方feed安装,提前放在这里:

ip-tiny / ip-full
ipset
iptables
iptables-mod-tproxy
kmod-ipt-ipset
kmod-ipt-tproxy
libipset

首先先把之前的toolchain等清理掉,因为占用的磁盘真的大。

> make dirclean

建议第一遍编译先用verbose模式输出日志,一遍成功是不存在的:

> make -j1 V=s

报错

编译过程中出现了这样的complain:

WARNING: Image file /openwrt/cc/build_dir/target-mipsel_24kc_musl/linux-ramips_mt7620/tmp/openwrt-ramips-mt7620-ex2700-squashfs-sysupgrade.bin is too big

这因为胡乱塞了很多东西,导致没办法兼容Flash只有4M的设备。

> vim ./target/linux/ramips/image/Makefile

修改220行的ralink_default_fw_size_4M=3866624值为更大的就好了。
而我的做法是:重进menuconfig,把忘记选上的profile选好,这样就只编译我需要的Y1固件了,XD

漫无止境的编译和网络I/O…

十年后

新鲜出炉的固件在/bin目录下,又回到最初的起点。

编译V2ray

根据v2ray的官方指引准备好编译环境。

分别编译v2ray和v2ctl:

> cd $GOPATH/src/v2ray/core/main
> GOARCH=mipsle GOMIPS=softfloat go build -ldflags '-w -s' -o v2ray
> cd $GOPATH/src/v2ray.com/ext/tools/control/main
> GOARCH=mipsle GOMIPS=softfloat go build -ldflags '-w -s' -o v2ctl

题外话,我发现v2ray自带的构建工具vbuild并没有考虑GOPATH变量中存在两个路径的情况:我的GOPATH中第一个路径设定为第三方lib的目录,接着的是个人项目的目录,这样在go get时会自动把依赖库都放在第一个目录中,这就把它们和个人项目分开来了。

配置透明代理

因为挂载了U盘,磁盘空间有余裕了,我打算先把透明代理配置好,先不用upx压缩。

我的iptables设置:

   MY_VPS=xx.xx.xx.xx
MY_PROXY_PORT=1060
SKIP_IP='0.0.0.0/8 10.0.0.0/8 127.0.0.0/8 169.254.0.0/16
       172.16.0.0/12 192.168.0.0/16 224.0.0.0/4 240.0.0.0/4'

# new chain
iptables -t nat -N V2RAY
iptables -t mangle -N V2RAY_MARK

# tcp rule
iptables -t nat -A V2RAY -d $MY_VPS -j RETURN   # direct connect
iptables -t nat -A V2RAY -p tcp -j RETURN -m mark --mark 0xff # avoid loop
for IP in $SKIP_IP;do
   iptables -t nat -A V2RAY -d $IP -j RETURN
done

iptables -t nat -A V2RAY -p tcp -j REDIRECT --to-ports $MY_PROXY_PORT

# udp rule
ip rule del fwmark 1
ip rule add fwmark 1 table 100
ip route add local 0.0.0.0/0 dev lo table 100
ip route flush cache

for IP in $SKIP_IP;do
   iptables -t mangle -A V2RAY_MARK -d $IP -j RETURN
done

iptables -t mangle -A V2RAY_MARK -p udp -j TPROXY --on-port $MY_PROXY_PORT --tproxy-mark 0x01/0x01

# apply chain
iptables -t nat -A PREROUTING -p tcp -j V2RAY # 对局域网其他设备进行透明代理
iptables -t nat -A OUTPUT -p tcp -j V2RAY # 对本机进行透明代理

iptables -t mangle -A PREROUTING -p udp -j V2RAY_MARK

我的v2ray设置,部分省略:

   {
 "inbound": { ... },
 "inboundDetour": [
   {
     "protocol": "dokodemo-door",
     "listen": "0.0.0.0",
     "port": 1060, // 转发到这里
     "sniffing": {
       "enabled": true,
       "destOverride": [
         "http",
         "tls"
       ]
     },
     "settings": {
       "network": "tcp,udp",
       "followRedirect": true,
       "timeout": 0
     }
   }
 ],
 "outbound": { ... },
 "outboundDetour": [
   {
     "protocol": "freedom",
     "settings": {},
     "streamSettings": {
       "sockopt": {
         "mark": 255 // MARK
       }
     },
     "tag": "direct"
   },
   {
     "protocol": "blackhole",
     "settings": {},
     "tag": "block"
   }
 ],
 "routing": {
   "strategy": "rules",
   "settings": {
     "domainStrategy": "AsIs",
     "rules": [
       {
         "type": "field",
         "outboundTag": "direct",
         "protocol": [
           "bittorrent"
         ]
       },
       {
         "type": "field",
         "domain": [
           "geosite:cn",
           "geosite:speedtest"
         ],
         "outboundTag": "direct"
       },
       {
         "type": "field",
         "ip": [
           "geoip:cn"
         ],
         "outboundTag": "direct"
       }
     ]
   }
 }
}

openwrt安装v2ray及配置openwrt安装v2ray设置教程openwrt配置v2ray教程

官方QQ群号码:922069959
点击链接加入群聊【路由器交流】:https://jq.qq.com/?_wv=1027&k=5AKdmZP

您可能感兴趣的文章

免费支持本站

支付宝打赏支付宝打赏 微信打赏微信打赏

本站》评论功能已永久关闭

官方QQ群号码:922069959
点击链接加入群聊【路由器交流】:
https://jq.qq.com/?_wv=1027&k=5AKdmZP
官方QQ群号码:922069959