add reverse proxy examples

fix address
add reverse proxy examples
This commit is contained in:
Sakaizd 2022-06-30 16:25:03 +08:00 committed by yuhan6665
parent 2c15ebd323
commit 7d3abd2153
7 changed files with 367 additions and 0 deletions

21
ReverseProxy/README.md Normal file
View file

@ -0,0 +1,21 @@
# 反向代理
# 原理
Xray Client <--- VMESS/SS ---> Xray Protal(需要公网 IP) <--- VMESS/SS ---> Xray Bridge
# 说明
配置中,内网设备使用的配置为 `bridge.json`,有公网 ip 的设备使用 `protal.json`,通过`protal`连接到内网的设备使用`client.json`。
实际应用中,可以使用`VMESS-TCP、Shadowsocks-2022`等作为Xray Client 到 Xray Protal、Xray Bridge 到 Xray Protal 的传输协议。
## psk
Shadowsocks 2022 使用与 WireGuard 类似的预共享密钥作为密码。
使用 `openssl rand -base64 <长度>` 以生成与 shadowsocks-rust 兼容的密钥,长度取决于所使用的加密方法。
| 加密方法 | 密钥长度 |
|-------------------------------|-----:|
| 2022-blake3-aes-128-gcm | 16 |
| 2022-blake3-aes-256-gcm | 32 |
| 2022-blake3-chacha20-poly1305 | 32 |
在 Go 实现中32 位密钥始终工作。

View file

@ -0,0 +1,58 @@
{
"log": {
"loglevel": "warning"
},
"reverse": {
"bridges": [
{
"tag": "bridge",
"domain": "reverse.proxy"
}
]
},
"outbounds": [
{
"tag": "interconn",
"protocol": "shadowsocks",
"settings": {
"servers": [
{
"address": "{{ protal.address }}",
"port": 65510,
"method": "2022-blake3-aes-256-gcm",
"password": "{{ psk interconn }}"
}
]
},
"streamSettings": {
"network": "tcp"
}
},
{
"protocol": "freedom",
"settings": {},
"tag": "out"
}
],
"routing": {
"rules": [
{
"type": "field",
"inboundTag": [
"bridge"
],
"domain": [
"full:reverse.proxy"
],
"outboundTag": "interconn"
},
{
"type": "field",
"inboundTag": [
"bridge"
],
"outboundTag": "out"
}
]
}
}

View file

@ -0,0 +1,49 @@
{
"log": {
"loglevel": "warning"
},
"routing": {
"domainStrategy": "IPIfNonMatch",
"domainMatcher": "mph",
"rules": [
{
"type": "field",
"port": "0-65535",
"outboundTag": "proxy",
"enabled": true
}
]
},
"inbounds": [
{
"listen": "127.0.0.1",
"port": "2080",
"protocol": "socks",
"settings": {
"auth": "noauth",
"udp": true,
"ip": "127.0.0.1"
}
},
{
"listen": "127.0.0.1",
"port": "2081",
"protocol": "http"
}
],
"outbounds": [
{
"protocol": "shadowsocks",
"settings": {
"servers": [
{
"address": "{{ protal.address }}",
"port": 65511,
"method": "2022-blake3-aes-256-gcm",
"password": "{{ psk external }}"
}
]
}
}
]
}

View file

@ -0,0 +1,54 @@
{
"log": {
"loglevel": "warning"
},
"reverse": {
"portals": [
{
"tag": "portal",
"domain": "reverse.proxy"
}
]
},
"inbounds": [
{
"tag": "external",
"port": 65511,
"protocol": "shadowsocks",
"settings": {
"method": "2022-blake3-aes-256-gcm",
"password": "{{ psk external }}",
"network": "tcp,udp"
}
},
{
"tag": "interconn",
"port": 65510,
"protocol": "shadowsocks",
"settings": {
"method": "2022-blake3-aes-256-gcm",
"password": "{{ psk interconn }}",
"network": "tcp,udp"
}
}
],
"routing": {
"rules": [
{
"type": "field",
"inboundTag": [
"external"
],
"outboundTag": "portal"
},
{
"type": "field",
"inboundTag": [
"interconn"
],
"domain": [],
"outboundTag": "portal"
}
]
}
}

View file

@ -0,0 +1,61 @@
{
"log": {
"loglevel": "warning"
},
"reverse": {
"bridges": [
{
"tag": "bridge",
"domain": "reverse.proxy"
}
]
},
"outbounds": [
{
"tag": "interconn",
"protocol": "vmess",
"settings": {
"vnext": [
{
"address": "{{ protal.address }}",
"port": 65510,
"users": [
{
"id": "{{ uuid }}"
}
]
}
]
},
"streamSettings": {
"network": "tcp"
}
},
{
"protocol": "freedom",
"settings": {},
"tag": "out"
}
],
"routing": {
"rules": [
{
"type": "field",
"inboundTag": [
"bridge"
],
"domain": [
"full:reverse.proxy"
],
"outboundTag": "interconn"
},
{
"type": "field",
"inboundTag": [
"bridge"
],
"outboundTag": "out"
}
]
}
}

View file

@ -0,0 +1,60 @@
{
"log": {
"loglevel": "warning"
},
"routing": {
"domainStrategy": "IPIfNonMatch",
"domainMatcher": "mph",
"rules": [
{
"type": "field",
"port": "0-65535",
"outboundTag": "proxy",
"enabled": true
}
]
},
"inbounds": [
{
"listen": "127.0.0.1",
"port": "2080",
"protocol": "socks",
"settings": {
"auth": "noauth",
"udp": true,
"ip": "127.0.0.1"
}
},
{
"listen": "127.0.0.1",
"port": "2081",
"protocol": "http"
}
],
"outbounds": [
{
"protocol": "vmess",
"settings": {
"vnext": [
{
"address": "{{ protal.address }}",
"port": 65511,
"users": [
{
"id": "{{ uuid }}"
}
]
}
]
},
"streamSettings": {
"network": "tcp"
},
"tag": "proxy"
},
{
"protocol": "freedom",
"tag": "direct"
}
]
}

View file

@ -0,0 +1,64 @@
{
"log": {
"loglevel": "warning"
},
"reverse": {
"portals": [
{
"tag": "portal",
"domain": "reverse.proxy"
}
]
},
"inbounds": [
{
"tag": "external",
"port": 65511,
"protocol": "vmess",
"settings": {
"clients": [
{
"id": "{{ uuid }}"
}
]
},
"streamSettings": {
"network": "tcp"
}
},
{
"tag": "interconn",
"port": 65510,
"protocol": "vmess",
"settings": {
"clients": [
{
"id": "{{ uuid }}"
}
]
},
"streamSettings": {
"network": "tcp"
}
}
],
"routing": {
"rules": [
{
"type": "field",
"inboundTag": [
"external"
],
"outboundTag": "portal"
},
{
"type": "field",
"inboundTag": [
"interconn"
],
"domain": [],
"outboundTag": "portal"
}
]
}
}