Browse Source

docs: add describe of network dev option

v1.x.x
dnomd343 2 years ago
parent
commit
88789b30f6
  1. 35
      README.md
  2. 25
      docs/example_1.md
  3. 5
      docs/example_2.md

35
README.md

@ -106,6 +106,7 @@ proxy:
```yaml
# 以下配置仅为示范
network:
dev: eth0
dns:
- 223.6.6.6
- 119.29.29.29
@ -126,6 +127,8 @@ network:
- 192.168.2.240/28
```
+ `dev` :指定运行的网卡,一般与物理网卡同名,默认为空
+ `dns` :指定系统默认 DNS 服务器,留空时保持原配置不变,默认为空
+ `ipv4``ipv6` :指定 IPv4 与 IPv6 的网络信息,其中 `gateway` 为上游网关地址,`address` 为虚拟网关地址(CIDR格式,包含子网长度),不填写时保持不变,默认为空
@ -152,6 +155,7 @@ network:
# 以下配置仅为示范
update:
cron: "0 0 4 * * *" # 每天凌晨4点更新
proxy: "socks5://192.168.2.4:1080" # 通过 socks5 代理更新资源
url:
geoip.dat: "https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geoip.dat"
geosite.dat: "https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geosite.dat"
@ -159,6 +163,8 @@ update:
+ `cron` :触发更新的 Cron 表达式,留空时关闭自动升级,默认为空
+ `proxy` :通过指定的代理服务更新资源文件,留空时直连更新,默认为空
+ `url` :更新的文件名及下载地址,文件保存至 `assets` 中,默认为空
### 自定义脚本
@ -168,17 +174,25 @@ update:
# fc00::4 tcp/53 & udp/53 <---> fc00::3 tcp/5353 & udp/5353
# 192.168.2.4 tcp/53 & udp/53 <---> 192.168.2.3 tcp/53 & udp/5353
custom:
- "iptables -t nat -A PREROUTING -d 192.168.2.4 -p udp --dport 53 -j DNAT --to-destination 192.168.2.3:5353"
- "iptables -t nat -A POSTROUTING -d 192.168.2.3 -p udp --dport 5353 -j SNAT --to 192.168.2.4"
- "iptables -t nat -A PREROUTING -d 192.168.2.4 -p tcp --dport 53 -j DNAT --to-destination 192.168.2.3:5353"
- "iptables -t nat -A POSTROUTING -d 192.168.2.3 -p tcp --dport 5353 -j SNAT --to 192.168.2.4"
- "ip6tables -t nat -A PREROUTING -d fc00::4 -p udp --dport 53 -j DNAT --to-destination [fc00::3]:5353"
- "ip6tables -t nat -A POSTROUTING -d fc00::3 -p udp --dport 5353 -j SNAT --to fc00::4"
- "ip6tables -t nat -A PREROUTING -d fc00::4 -p tcp --dport 53 -j DNAT --to-destination [fc00::3]:5353"
- "ip6tables -t nat -A POSTROUTING -d fc00::3 -p tcp --dport 5353 -j SNAT --to fc00::4"
pre:
- "iptables -t nat -A PREROUTING -d 192.168.2.4 -p udp --dport 53 -j DNAT --to-destination 192.168.2.3:5353"
- "iptables -t nat -A POSTROUTING -d 192.168.2.3 -p udp --dport 5353 -j SNAT --to 192.168.2.4"
- "iptables -t nat -A PREROUTING -d 192.168.2.4 -p tcp --dport 53 -j DNAT --to-destination 192.168.2.3:5353"
- "iptables -t nat -A POSTROUTING -d 192.168.2.3 -p tcp --dport 5353 -j SNAT --to 192.168.2.4"
- "ip6tables -t nat -A PREROUTING -d fc00::4 -p udp --dport 53 -j DNAT --to-destination [fc00::3]:5353"
- "ip6tables -t nat -A POSTROUTING -d fc00::3 -p udp --dport 5353 -j SNAT --to fc00::4"
- "ip6tables -t nat -A PREROUTING -d fc00::4 -p tcp --dport 53 -j DNAT --to-destination [fc00::3]:5353"
- "ip6tables -t nat -A POSTROUTING -d fc00::3 -p tcp --dport 5353 -j SNAT --to fc00::4"
post:
- "echo Here is post process"
- "echo Goodbye"
```
自定义脚本命令,在启动代理前将依次执行,用于注入额外功能,默认为空
> 本功能用于注入自定义功能,基于 Alpine 自带的 ash 执行,可能不支持部分 bash 语法
+ `pre` :自定义脚本命令,在代理启动前执行,默认为空
+ `post` :自定义脚本命令,在服务关闭前执行,默认为空
### IPv6路由广播
@ -188,6 +202,7 @@ custom:
# 以下配置仅为示范
radvd:
log: 3
dev: eth0
enable: true
option:
AdvSendAdvert: on
@ -220,6 +235,8 @@ radvd:
+ `log` :RADVD 日志级别,可选 `0-5`,数值越大越详细,默认为 `0`
+ `dev` :RADVD 运行的网卡,`enable` 为 `true` 时必选,一般与 `network` 中配置的网卡相同,默认为空
+ `enable` :是否启动 RADVD,默认为 `false`
+ `option` :RADVD 主选项,完整参数列表查看[这里](https://code.tools/man/5/radvd.conf/#lbAD):

25
docs/example_1.md

@ -8,17 +8,17 @@
为了方便讲解,我们假设以下典型情况:
+ 校园网交换机无IPv6支持,同时存在QoS
+ 校园网交换机无 IPv6 支持,同时存在 QoS
+ 无认证时允许53端口通行,ICMP流量无法通过
+ 无认证时允许 53 端口通行,ICMP 流量无法通过
+ 使用三台公网服务器负载均衡,其53端口上运行有代理服务
+ 使用三台公网服务器负载均衡,其 53 端口上运行有代理服务
+ 三台服务器只有一台支持 IPv4 与 IPv6 双栈,其余只支持 IPv4
### 代理协议
首先,从速度上考虑,我们应该选用socks层面的代理,它在代理服务器上的部署更方便,且CPU负载较低,缺点则是ICMP流量无法被代理,不过绝大多数情况下并不会用到公网ICMP流量(例如PING命令);其次,由于存在高峰期QoS,应使用基于TCP的代理协议,此外,为了避开校园网的流量审查,我们应该将流量加密传输;最后,由于软路由性能一般较差,而代理服务器无需考虑协议兼容性问题,我们可以考虑基于 XTLS 的传输方式,它可以显著降低代理 https 流量时的性能开销。
首先,从速度上考虑,我们应该选用 socks 层面的代理,它在代理服务器上的部署更方便,且 CPU 负载较低,缺点则是 ICMP 流量无法被代理,不过绝大多数情况下并不会用到公网 ICMP 流量(例如 PING 命令);其次,由于存在高峰期 QoS,应使用基于 TCP 的代理协议,此外,为了避开校园网的流量审查,我们应该将流量加密传输;最后,由于软路由性能一般较差,而代理服务器无需考虑协议兼容性问题,我们可以考虑基于 XTLS 的传输方式,它可以显著降低代理 https 流量时的性能开销。
综上,选择 VLESS + XTLS 或者 Trojan + XTLS 代理是当前网络环境下的最优解。
@ -26,7 +26,7 @@
> 分配 `192.168.2.0/24``fc00::/64` 给内网使用
路由器 WAN 口接入学校交换机,构建一个 NAT 转换,代理流量在路由器转发后送到公网服务器的53端口上;假设内网中路由器地址为 `192.168.2.1` ,配置虚拟网关 IPv4 地址为 `192.168.2.2` ,IPv6 地址为 `fc00::2` ;在网关中,无论 IPv4 还是 IPv6 流量都会被透明代理,由于校园网无 IPv6 支持,数据被封装后只通过 IPv4 网络发送,代理服务器接收以后再将其解开,对于 IPv6 流量,这里相当于一个 6to4 隧道。
路由器 WAN 口接入学校交换机,构建一个 NAT 转换,代理流量在路由器转发后送到公网服务器的 53 端口上;假设内网中路由器地址为 `192.168.2.1` ,配置虚拟网关 IPv4 地址为 `192.168.2.2` ,IPv6 地址为 `fc00::2` ;在网关中,无论 IPv4 还是 IPv6 流量都会被透明代理,由于校园网无 IPv6 支持,数据被封装后只通过 IPv4 网络发送,代理服务器接收以后再将其解开,对于 IPv6 流量,这里相当于一个 6to4 隧道。
```
# 宿主机网卡假定为 eth0
@ -72,6 +72,7 @@ proxy:
nodeC: 1083
network:
dev: eth0
dns:
- 192.168.2.1
ipv4:
@ -89,6 +90,7 @@ network:
radvd:
log: 5
dev: eth0
enable: true
option:
AdvSendAdvert: on
@ -96,12 +98,13 @@ radvd:
cidr: fc00::/64
custom:
- "iptables -t nat -N FAKE_PING"
- "iptables -t nat -A FAKE_PING -j DNAT --to-destination 192.168.2.2"
- "iptables -t nat -A PREROUTING -i eth0 -p icmp -j FAKE_PING"
- "ip6tables -t nat -N FAKE_PING"
- "ip6tables -t nat -A FAKE_PING -j DNAT --to-destination fc00::2"
- "ip6tables -t nat -A PREROUTING -i eth0 -p icmp -j FAKE_PING"
pre:
- "iptables -t nat -N FAKE_PING"
- "iptables -t nat -A FAKE_PING -j DNAT --to-destination 192.168.2.2"
- "iptables -t nat -A PREROUTING -i eth0 -p icmp -j FAKE_PING"
- "ip6tables -t nat -N FAKE_PING"
- "ip6tables -t nat -A FAKE_PING -j DNAT --to-destination fc00::2"
- "ip6tables -t nat -A PREROUTING -i eth0 -p icmp -j FAKE_PING"
```
在开始代理前,我们使用 `custom` 注入了一段脚本配置:由于这里我们只代理 TCP 与 UDP 流量,ICMP 数据包不走代理,内网设备 ping 外网时会一直无响应,加入这段脚本可以创建一个 NAT,假冒远程主机返回成功回复,但实际上 ICMP 数据包并未实际到达,效果上表现为 ping 成功且延迟为内网访问时间。

5
docs/example_2.md

@ -18,7 +18,7 @@
目前路由资源中包含了一份国内常见域名列表,如果嗅探后的域名在其中,那可以直接判定为直连流量,但是对于其他流量,即使它不在列表内,但仍可能是国内服务,我们不能直接将它送往代理服务器;因此下一步我们需要引出分流的核心规则,它取决于 DNS 污染的一个特性:受污染的域名返回解析必然为境外 IP ,基于这个原则,我们将嗅探到的域名使用国内 DNS 进行一次解析,如果结果是国内 IP 地址,那就直连该流量,否则发往代理,IPv4 与 IPv6 均使用该逻辑分流。
如果有可能的话,您可以在内网搭建一个无污染的解析服务,比如[ClearDNS](https://github.com/dnomd343/ClearDNS),它的作用在于消除 DNS 污染,准确地给出国内外的解析地址,这样子可以在分流时就不用多做一次 DNS 解析,减少这一步导致的延迟(DNS 流量通过代理送出,远程解析以后再返回,其耗时较长且不稳定),无污染 DNS 可以更快更准确地进行分流。
如果有可能的话,您可以在内网搭建一个无污染的解析服务,比如 [ClearDNS](https://github.com/dnomd343/ClearDNS),它的作用在于消除 DNS 污染,准确地给出国内外的解析地址,这样子可以在分流时就不用多做一次 DNS 解析,减少这一步导致的延迟(DNS 流量通过代理送出,远程解析以后再返回,其耗时较长且不稳定),无污染 DNS 可以更快更准确地进行分流。
### 网络配置
@ -78,6 +78,7 @@ proxy:
redirect: true
network:
dev: eth0
dns:
- 192.168.2.1
ipv4:
@ -95,6 +96,7 @@ network:
radvd:
log: 3
dev: eth0
enable: true
option:
AdvSendAdvert: on
@ -105,6 +107,7 @@ radvd:
update:
cron: "0 5 6 * * *"
proxy: "socks5://192.168.2.2:1094" # 通过代理下载 Github 文件
url:
geoip.dat: "https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geoip.dat"
geosite.dat: "https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geosite.dat"

Loading…
Cancel
Save