From 453d0d29aa9f69aaa29069981c128acbd3f39584 Mon Sep 17 00:00:00 2001 From: dnomd343 Date: Sun, 21 Aug 2022 22:38:53 +0800 Subject: [PATCH] docs: update README.md --- README.md | 44 +++++++++++++++++++++++++++---------- docs/img/network-model.png | Bin 0 -> 29161 bytes 2 files changed, 33 insertions(+), 11 deletions(-) create mode 100644 docs/img/network-model.png diff --git a/README.md b/README.md index 789186a..5a09981 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,14 @@ + (待支持)DHCP与DHCPv6地址自动分配 +## 拓扑模型 + +XProxy部署在内网Linux主机上,通过 `macvlan` 网络创建独立MAC地址的虚拟网关,捕获内网设备的网络流量,对其进行透明代理;宿主机一般以单臂旁路由的方式接入,虚拟网关运行时不会干扰宿主机网络,且宿主机系统的流量也可被网关代理。 + +![network](./docs/img/network-model.png) + +XProxy运行以后,内网流量将被收集到代理内核上,目前内置了 `xray` ,`v2ray` ,`sagray` 三种内核,支持 `Shadowsocks` ,`ShadowsocksR` ,`VMess` ,`VLESS` ,`Trojan` ,`WireGuard` ,`SSH` ,`PingTunnel` 等多种代理协议,支持 `XTLS` ,`WebSocket` ,`QUIC` ,`gRPC` 等多种传输方式。同时,得益于V2ray的路由设计基础,代理的网络流量可被精确地分流,可以依据内网设备、目标地址、访问端口、连接域名、流量类型等多种方式进行路由。 + ## 配置格式 XProxy支持YAML与JSON格式的配置文件,包含以下部分: @@ -233,7 +241,7 @@ radvd: ## 部署流程 -1. 初始配置 +### 1. 初始配置 ``` # 开启网卡混杂模式 @@ -252,10 +260,10 @@ shell> docker network create -d macvlan \ --gateway=192.168.2.1 \ --subnet=fc00::/64 \ --gateway=fc00::1 \ - --ipv6 -o parent=eth0 macvlan + --ipv6 -o parent=eth0 macvlan # 此处指定eth0网卡,需按实际调整 ``` -2. 开始部署 +### 2. 开始部署 > 本项目基于Docker构建,在 [Docker Hub](https://hub.docker.com/repository/docker/dnomd343/xproxy) 或 [Github Package](https://github.com/dnomd343/XProxy/pkgs/container/xproxy) 可以查看已构建的各版本镜像。 @@ -318,7 +326,7 @@ shell> docker run --restart always \ + 若启用RADVD功能,其日志将保存到 `radvd.log` 中; -3. 调整配置文件 +### 3. 调整配置文件 容器首次初始化时将生成默认配置文件 `xproxy.yml` ,其内容如下: @@ -355,11 +363,16 @@ shell> docker restart xproxy shell> docker logs -f xproxy ``` -4. 宿主机访问虚拟网关 +### 4. 宿主机访问虚拟网关 + +> 这一步旨在让宿主机能够使用虚拟网关,若无此需求可以跳过 + +由于macvlan方式的限制,宿主机上开启macvlan的网卡无法直接与虚拟网关通讯,需要另外配置网桥才可连接, -受限于macvlan机制,宿主机无法直接与macvlan容器通讯,需要配置网桥才能让宿主机访问虚拟网关。 +> 以下为配置基于Debian发行版,RH系或Arch系等的配置略有不同 ``` +# 编辑网卡配置文件 shell> vim /etc/network/interfaces ``` @@ -377,19 +390,18 @@ iface macvlan inet static gateway 192.168.2.2 # 虚拟网关IP地址 dns-nameservers 192.168.2.3 # DNS主服务器 dns-nameservers 192.168.2.1 # DNS备用服务器 - pre-up ip link add macvlan link eth0 type macvlan mode bridge - post-down ip link del macvlan link eth0 type macvlan mode bridge - # 搭建网桥macvlan,用于与虚拟网关通讯 + pre-up ip link add macvlan link eth0 type macvlan mode bridge # 宿主机网卡上创建网桥 + post-down ip link del macvlan link eth0 type macvlan mode bridge # 退出时删除网桥 ``` -重启宿主机网络生效(或直接重启宿主机) +重启宿主机网络生效,或直接重启宿主机系统: ``` shell> /etc/init.d/networking restart [ ok ] Restarting networking (via systemctl): networking.service. ``` -5. 局域网设备访问 +### 5. 局域网设备访问 配置完成后,容器IP为虚拟旁路由网关地址,设备网关设置为该地址即可正常上网。 @@ -406,3 +418,13 @@ shell> /etc/init.d/networking restart + 在IPv6上,修改设备地址至容器指定子网内,网关地址配置为容器IPv6地址(非链路本地地址) 综上,开启虚拟网关前需关闭路由器IPv6地址分配,而后连入设备将自动适配IPv4与IPv6网络(绝大多数设备均以DHCP与IPv6路由器发现机制联网),对于此前在内网固定IP地址的设备,手动为其配置网关地址即可。 + +## 演示实例 + +实例1. 利用校园网53端口漏洞,使用XProxy搭建免费网络 + +实例2. 家庭网络IPv4与IPv6的透明代理 + +## 开发相关 + +## 许可证 diff --git a/docs/img/network-model.png b/docs/img/network-model.png new file mode 100644 index 0000000000000000000000000000000000000000..3119f86beae1daf373016f838ab017d659bad4f5 GIT binary patch literal 29161 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 literal 0 HcmV?d00001