====== v2ray ====== - https://www.v2ray.com/index.html ===== Install ===== wget https://install.direct/go.sh sudo bash go.sh The v2ray command will be located at /usr/bin/v2ray/v2ray /usr/bin/v2ray/v2ray -h Usage of /usr/bin/v2ray/v2ray: -config string Config file for V2Ray. -format string Format of input file. (default "json") -test Test config file only, without launching V2Ray server. -version Show current version of V2Ray. ===== config ===== /etc/v2ray/config.json ===== start/stop ===== sudo systemctl start v2ray sudo systemctl restart v2ray ===== Mac Install ===== - https://github.com/v2ray/homebrew-v2ray brew tap v2ray/v2ray brew install v2ray-core Then you can run v2ray, and config file: /usr/local/etc/v2ray/config.json run v2ray-core without starting at login. brew services run v2ray-core or run v2ray-core and register it to launch at login via: brew services start v2ray-core brew services restart v2ray-core ===== Router Install ===== Download the correct version - https://github.com/v2ray/v2ray-core/releases/ wget -cS https://github.com/v2ray/v2ray-core/releases/download/v4.20.0/v2ray-linux-arm.zip unzip v2ray-linux-arm.zip Then copy all the files to the router scp -r v2ray root@miwifi.com:/userdisk/data/bin/v2ray Add execution permission chmod +x v2ray chmod +x v2ctl Update the config.json, the run v2ray ./v2ray --config=config.json Testing the connection curl -x socks5://127.0.0.1:1088 google.com Reference - https://www.v2ray.com/chapter_02/protocols/dokodemo.html ===== Reference ===== - https://toutyrater.github.io/basic/routing/cndirect.html ===== Config file for server ===== { "inbounds": [{ "port": 2130x, "listen": "127.0.0.1", "protocol": "vmess", "settings": { "clients": [ { "id": "58ceb1c6-b580-4d2c-bf41-21b6a35xxxx", "level": 1, "alterId": 64 } ] }, "streamSettings": { "network": "ws", "wsSettings": { "path": "/xxxxxxx" }, "kcpSettings": { "uplinkCapacity": 50, "downlinkCapacity": 100, "congestion": true, "header": { "type": "none" } } } } ], "outbounds": [{ "protocol": "freedom", "settings": {} },{ "protocol": "blackhole", "settings": {}, "tag": "blocked" }], "routing": { "rules": [ { "type": "field", "ip": ["geoip:private"], "outboundTag": "blocked" } ] }, "log": { "access": "/var/log/v2ray/access.log", "loglevel": "info", "error": "/var/log/v2ray/error.log" } } ==== Config file for client ==== { "dns": { "servers": [ "1.1.1.1" ] }, "inbounds": [ { "port": 10808, "protocol": "socks", "settings": { "auth": "noauth", "udp": true, "userLevel": 8 }, "sniffing": { "destOverride": [ "http", "tls" ], "enabled": true }, "tag": "socks" }, { "port": 10809, "protocol": "http", "settings": { "userLevel": 8 }, "tag": "http" } ], "log": { "loglevel": "warning" }, "outbounds": [ { "mux": { "enabled": false }, "protocol": "vmess", "settings": { "vnext": [ { "address": "pjq.me", "port": 443, "users": [ { "alterId": 64, "id": "58ceb1c6-b580-4d2c-bf41-21bxxxxxxxxxx", "level": 8, "security": "aes-128-gcm" } ] } ] }, "streamSettings": { "network": "ws", "security": "tls", "tlssettings": { "allowInsecure": true, "serverName": "" }, "wssettings": { "connectionReuse": true, "headers": { "Host": "" }, "path": "xxxxx" } }, "tag": "proxy" }, { "protocol": "freedom", "settings": {}, "tag": "direct" }, { "protocol": "blackhole", "settings": { "response": { "type": "http" } }, "tag": "block" } ], "policy": { "levels": { "8": { "connIdle": 300, "downlinkOnly": 1, "handshake": 4, "uplinkOnly": 1 } }, "system": { "statsInboundUplink": true, "statsInboundDownlink": true } }, "routing": { "rules": [ { "type": "field", "inboundTag": ["dokodemo", "http", "socks"], "outboundTag": "proxy" } ] }, "stats": {}, "inboundDetour":[ { "protocol":"dokodemo-door", "port":1099, "tag": "dokodemo", "settings":{ "address":"", "network":"tcp", "timeout":0, "followRedirect":true } } ] } ==== v2ray with nginx ==== - https://tlanyan.me/v2ray-traffic-mask/