From ca1a14af1adec621e4b7a29e45175d71cbb25824 Mon Sep 17 00:00:00 2001 From: dnomd343 Date: Tue, 23 Aug 2022 17:58:13 +0800 Subject: [PATCH] docs: add example_2 --- cmd/xproxy.go | 3 ++ docs/example_1.md | 10 ++--- docs/example_2.md | 84 ++++++++++++++++++++++++++++++++++++++++- docs/img/example_2.png | Bin 0 -> 47088 bytes 4 files changed, 89 insertions(+), 8 deletions(-) create mode 100644 docs/img/example_2.png diff --git a/cmd/xproxy.go b/cmd/xproxy.go index b83be84..9844c67 100644 --- a/cmd/xproxy.go +++ b/cmd/xproxy.go @@ -86,13 +86,16 @@ func main() { var settings config.Config log.Infof("XProxy %s start (%s)", version, goVersion) + // TODO: load dhcp configure config.Load(configFile, &settings) loadNetwork(&settings) loadProxy(&settings) + // TODO: update assets via proxy loadAsset(&settings) loadRadvd(&settings) runScript(&settings) + // TODO: run dhcp service runRadvd(&settings) runProxy(&settings) blockWait() diff --git a/docs/example_1.md b/docs/example_1.md index e6278cd..1bbc811 100644 --- a/docs/example_1.md +++ b/docs/example_1.md @@ -58,11 +58,13 @@ shell> docker run --restart always \ 由于校园网无 IPv6 支持,这里 IPv6 上游网关可以不填写;虚拟网关对内网发布 RA 通告,让内网设备使用 SLAAC 配置网络地址,同时将其作为 IPv6 网关;此外,如果路由器开启了 DHCP 服务,需要将默认网关改为 `192.168.2.2` ,也可以启用 XProxy 自带的 DHCPv4 服务。 +最后,由于我们代理全部流量,无需根据域名或者 IP 进行任何分流,因此路由资源自动更新部分可以省略。 + 修改 `xproxy.yml` ,写入以下配置: ```yaml proxy: - log: debug + log: warning core: xray socks: nodeA: 1081 @@ -100,12 +102,6 @@ custom: - "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" - -update: - cron: "0 0 4 * * *" - 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" ``` 在开始代理前,我们使用 `custom` 注入了一段脚本配置:由于这里我们只代理 TCP 与 UDP 流量,ICMP 数据包不走代理,内网设备 ping 外网时会一直无响应,加入这段脚本可以创建一个 NAT,假冒远程主机返回成功回复,但实际上 ICMP 数据包并未实际到达,效果上表现为 ping 成功且延迟为内网访问时间。 diff --git a/docs/example_2.md b/docs/example_2.md index b6fa935..547414c 100644 --- a/docs/example_2.md +++ b/docs/example_2.md @@ -1,3 +1,85 @@ ## 家庭网络的IPv4与IPv6透明代理 -WIP... +家庭网络光纤入网,支持 IPv4 与 IPv6 网络,需要在内网搭建透明代理,让设备的国内流量直连,出境流量转发到代理服务器上,避开 GFW 的流量审查。 + +以下为典型网络拓扑: + +![Network](./img/example_2.png) + +> 此处网络拓扑仅为讲解使用,实际使用时可以让光猫桥接减少性能浪费,不过目前大部分新版光猫性能不存在瓶颈,千兆级别下基本没有压力。 + +正常情况下,大部分家庭宽带为:光猫对接上游网络,使用宽带拨号获取运营商分配的 IPv4 地址与 IPv6 前缀,在 LAN 侧提供网络服务,其中 IPv4 为 NAT 方式,IPv6 发布 RA 广播,同时运行 DHCPv6 服务;路由器在 IPv4 上 NAT ,在 IPv6 上桥接,内网设备统一接入路由器。 + +大多数地区的运营商不会提供 IPv4 公网地址,IPv6 分配一般为 64 位长度的公网网段;虚拟网关在这里需要收集内网的所有 IPv4 与 IPv6 流量,将国内流量直接送出,国外流量发往代理服务器;为了增加难度,我们假设有两台境外代理服务器,一台支持IPv6,一台只支持IPv4,我们需要将IPv6代理流量发送给前者,其余代理流量送往后者。 + +### 分流规则 + +代理内核需要区分出哪些流量可以直连,哪些流量需要送往代理服务器,为了更准确地分流,这里需要开启嗅探功能,获取访问的域名信息,同时允许流量重定向(目标地址修改为域名,送至代理服务器解析,避开 DNS 污染); + +目前路由资源中包含了一份国内常见域名列表,如果嗅探后的域名在其中,那可以直接判定为直连流量,但是对于其他流量,即使它不在列表内,但仍可能是国内服务,我们不能直接将它送往代理服务器;因此下一步我们需要引出分流的核心规则,它取决于 DNS 污染的一个特性:受污染的域名返回解析必然为境外 IP ,基于这个原则,我们将嗅探到的域名使用国内 DNS 进行一次解析,如果结果是国内 IP 地址,那就直连该流量,否则发往代理,IPv4 与 IPv6 均使用该逻辑分流。 + +如果有可能的话,您可以在内网搭建一个无污染的解析服务,比如[ClearDNS](https://github.com/dnomd343/ClearDNS),它的作用在于消除 DNS 污染,准确地给出国内外的解析地址,这样子可以在分流时就不用多做一次 DNS 解析,减少这一步导致的延迟(DNS 流量通过代理送出,远程解析以后再返回,其耗时较长且不稳定),无污染 DNS 可以更快更准确地进行分流。 + +### 网络配置 + +网络地址方面,内网 IPv4 段由我们自己决定,这一部分取决于路由器设置的 LAN 侧 IP 段,我们假设为 `192.168.2.0/24` ,其中路由器地址为 `192.168.2.1` ,虚拟网关分配为 `192.168.2.2` ,由于 IPv4 部分由路由器隔离,这里不需要修改光猫配置;虚拟网关上游配置为路由器地址,修改内网 DHCP 服务,让网关指向 `192.168.2.2` 。 + +IPv6部分,由于路由器桥接,地址分配等操作均为光猫负责,它拥有一个链路本地地址,在 LAN 侧向内网发送 RA 广播,一些光猫还会开启 DHCPv6 服务,为内网分配 DNS 等选项;RA 通告发布的 IPv6 前缀一般为运营商分配的 64 位长度地址,内网所有设备将获取到一个独立的 IPv6 地址(部分地区也有做 NAT6 的,具体取决于运营商),我们要做的就是将这部分工作转移给虚拟网关来完成。 + +在开始之前,我们需要先拿到光猫分配的 IPv6 前缀与网关(即光猫的链路地址),由于光猫默认会发布 RA 广播,你可以直接从当前接入设备上获取这些信息,也可以登录光猫管理页面查看(登录账号与密码一般会印在光猫背面);这里假设运营商分配的 IPv6 网段为 `2409:8a55:e2a7:3a0::/64` ,光猫地址为 `fe80::1`(绝大多数光猫都使用这个链路地址),虚拟网关的上游应该配置为光猫链路地址,而自身地址可以在分配的 IPv6 网段中任意选择,方便起见,我们这里配置为 `2409:8a55:e2a7:3a0::` 。 + +虚拟网关需要对内网发布 RA 通告,广播 `2409:8a55:e2a7:3a0::/64` 这段地址,接收到这段信息的设备会将虚拟网关作为公网 IPv6 的下一跳地址(即网关地址);但是这种情况下,不应该存在多个 RA 广播源同时运行,所以需要关闭光猫的 RA 广播功能,如果不需要DHCPv6,也可以一并关闭;这一步在部分光猫上需要超级管理员权限,一般情况下,你可以在网络上搜索到不同型号光猫的默认超级管理员账号密码,如果无法成功,可以联系宽带师傅帮忙登入。 + +这也是IPv6在代理方面的缺点,它将发送 RA 广播的链路地址直接视为路由网关,且该地址无法通过其他协议更改,我们没法像 DHCPv4 一样直接配置网关地址,这在透明代理时远没有 IPv4 方便,只能将 RA 广播源放在网关上。 + +### 配置XProxy + +在设计上,应该配置四个出口,分别为 IPv4直连、IPv4代理、IPv6直连、IPv6代理,这里创建 4 个对应的 socks5 入口 `direct` 、`proxy` 、`direct6` 、`proxy6` ,用于检测对应出口是否正常工作。 + +此外,我们需要判断 IP 与域名的地理信息,而该数据库一直变动,需要持续更新;由于该项目的 Github Action 配置为 UTC 22:00 触发,即 UTC8+ 的 06:00 ,所以这里配置为每天早上 06 点 05 分更新,延迟 5 分钟拉取当日的新版本路由资源。 + +```yaml +proxy: + log: info + core: xray + socks: + proxy: 1094 + direct: 1084 + proxy6: 1096 + direct6: 1086 + sniff: + enable: true + redirect: true + +network: + dns: + - 192.168.2.1 + ipv4: + gateway: 192.168.2.1 + address: 192.168.2.2/24 + ipv6: + gateway: fe80::1 + address: 2409:8a55:e2a7:3a0::/64 + bypass: + - 169.254.0.0/16 + - 224.0.0.0/3 + - fc00::/7 + - fe80::/10 + - ff00::/8 + +radvd: + log: 3 + enable: true + option: + AdvSendAdvert: on + AdvManagedFlag: off + AdvOtherConfigFlag: off + prefix: + cidr: 2409:8a55:e2a7:3a0::/64 + +update: + cron: "0 5 6 * * *" + 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" +``` diff --git a/docs/img/example_2.png b/docs/img/example_2.png new file mode 100644 index 0000000000000000000000000000000000000000..ff9b20cd42b40c4a70959cb1d519505a3523ac6f GIT binary patch literal 47088 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