Browse Source

docs: add examples

v1.x.x
dnomd343 2 years ago
parent
commit
cb64f4d40c
  1. 2
      Dockerfile
  2. 36
      README.md
  3. 2
      cmd/xproxy.go
  4. 1
      docs/example_1.md
  5. 1
      docs/example_2.md

2
Dockerfile

@ -45,7 +45,7 @@ COPY --from=xproxy /tmp/xproxy /asset/usr/bin/
COPY --from=proxy /tmp/*ray /asset/usr/bin/ COPY --from=proxy /tmp/*ray /asset/usr/bin/
FROM alpine:3.16 FROM alpine:3.16
RUN apk add --no-cache iptables ip6tables radvd RUN apk add --no-cache iptables ip6tables radvd && mkdir -p /run/radvd/
COPY --from=asset /asset/ / COPY --from=asset /asset/ /
WORKDIR /xproxy WORKDIR /xproxy
ENTRYPOINT ["xproxy"] ENTRYPOINT ["xproxy"]

36
README.md

@ -18,8 +18,14 @@
XProxy部署在内网Linux主机上,通过 `macvlan` 网络创建独立MAC地址的虚拟网关,捕获内网设备的网络流量,对其进行透明代理;宿主机一般以单臂旁路由的方式接入,虚拟网关运行时不会干扰宿主机网络,且宿主机系统的流量也可被网关代理。 XProxy部署在内网Linux主机上,通过 `macvlan` 网络创建独立MAC地址的虚拟网关,捕获内网设备的网络流量,对其进行透明代理;宿主机一般以单臂旁路由的方式接入,虚拟网关运行时不会干扰宿主机网络,且宿主机系统的流量也可被网关代理。
<details>
<summary>Examples</summary>
![network](./docs/img/network-model.png) ![network](./docs/img/network-model.png)
</details>
XProxy运行以后,内网流量将被收集到代理内核上,目前内置了 `xray` ,`v2ray` ,`sagray` 三种内核,支持 `Shadowsocks` ,`ShadowsocksR` ,`VMess` ,`VLESS` ,`Trojan` ,`WireGuard` ,`SSH` ,`PingTunnel` 等多种代理协议,支持 `XTLS` ,`WebSocket` ,`QUIC` ,`gRPC` 等多种传输方式。同时,得益于V2ray的路由设计基础,代理的网络流量可被精确地分流,可以依据内网设备、目标地址、访问端口、连接域名、流量类型等多种方式进行路由。 XProxy运行以后,内网流量将被收集到代理内核上,目前内置了 `xray` ,`v2ray` ,`sagray` 三种内核,支持 `Shadowsocks` ,`ShadowsocksR` ,`VMess` ,`VLESS` ,`Trojan` ,`WireGuard` ,`SSH` ,`PingTunnel` 等多种代理协议,支持 `XTLS` ,`WebSocket` ,`QUIC` ,`gRPC` 等多种传输方式。同时,得益于V2ray的路由设计基础,代理的网络流量可被精确地分流,可以依据内网设备、目标地址、访问端口、连接域名、流量类型等多种方式进行路由。
## 配置格式 ## 配置格式
@ -237,7 +243,7 @@ radvd:
+ `dnssl` :DNS搜寻域名,`suffix` 指定DNS解析的搜寻后缀列表,`option` 即 `DNSSL SPECIFIC OPTIONS` 章节列出的选项 + `dnssl` :DNS搜寻域名,`suffix` 指定DNS解析的搜寻后缀列表,`option` 即 `DNSSL SPECIFIC OPTIONS` 章节列出的选项
+ > `rdnss``dnssl` 在[RFC6106](https://www.rfc-editor.org/rfc/rfc6106)中定义,将DNS配置信息直接放置在RA报文中发送,使用 `SLAAC` 时无需 `DHCPv6` 即可获取DNS服务器,但是旧版本Windows与Android等不支持该功能。 + > `RDNSS``DNSSL` 在[RFC6106](https://www.rfc-editor.org/rfc/rfc6106)中定义,将DNS配置信息直接放置在RA报文中发送,使用 `SLAAC` 时无需 `DHCPv6` 即可获取DNS服务器,但是旧版本Windows与Android等不支持该功能。
## 部署流程 ## 部署流程
@ -403,28 +409,32 @@ shell> /etc/init.d/networking restart
### 5. 局域网设备访问 ### 5. 局域网设备访问
配置完成后,容器IP为虚拟旁路由网关地址,设备网关设置为该地址即可正常上网。 > 对于手动配置了静态IP的设备,需要修改网关地址为容器IP
对于非静态IP地址设备(常见情况)有以下情形: 配置完成后,容器IP即为虚拟旁路由网关地址,内网其他设备的网关设置为该地址即可被透明代理,因此需要修改DHCP配置与RADVD路由广播,让内网设备自动接入虚拟网关。
+ 在IPv4上,修改路由器DHCP设置,将网关指向容器IP即可全局生效 > 您可以监视 `log/access.log` 文件,设备正常接入后会在此显示连接日志
+ 在IPv6上,容器默认会启动IPv6路由组播机制,内网设备将会无状态配置子网地址,网关地址自动指向容器链路本地地址,该配置可全局生效(需关闭路由器IPv6分配,避免冲突) + IPv4下,修改内网DHCP服务器配置(一般位于路由器上),将网关改为容器IP地址,保存后重新接入设备即可生效。
对于静态IP地址设备(非常见情况)有以下情形: + IPv6下,你需要关闭路由或上级网络的RA广播功能,然后开启配置中的RADVD选项,如果需要使用DHCPv6,可调整配置中的M位与O位开启状态,保存后将设备重新接入网络即可。
+ 在IPv4上,修改设备网关为容器IPv4地址 ## 演示实例
+ 在IPv6上,修改设备地址至容器指定子网内,网关地址配置为容器IPv6地址(非链路本地地址) 实例1. [使用XProxy绕过校园网认证登录](./docs/example_1.md)
综上,开启虚拟网关前需关闭路由器IPv6地址分配,而后连入设备将自动适配IPv4与IPv6网络(绝大多数设备均以DHCP与IPv6路由器发现机制联网),对于此前在内网固定IP地址的设备,手动为其配置网关地址即可。 实例2. [家庭网络的IPv4与IPv6透明代理](./docs/example_2.md)
## 演示实例 ## 开发相关
实例1. 利用校园网53端口漏洞,使用XProxy搭建免费网络 + v4/v6路由表号,TProxy默认端口号 ...
实例2. 家庭网络IPv4与IPv6的透明代理 + 修改默认暴露文件夹 ...
## 开发相关 + 修改默认配置文件,开启debug模式 ...
+ 容器自行编译
## 许可证 ## 许可证
MIT ©2022 [@dnomd343](https://github.com/dnomd343)

2
cmd/xproxy.go

@ -12,7 +12,7 @@ import (
) )
var version = "0.9.3" var version = "0.9.3"
var v4RouteTable = 100 var v4RouteTable = 104
var v6RouteTable = 106 var v6RouteTable = 106
var v4TProxyPort = 7288 var v4TProxyPort = 7288
var v6TProxyPort = 7289 var v6TProxyPort = 7289

1
docs/example_1.md

@ -0,0 +1 @@
## 使用XProxy绕过校园网认证登录

1
docs/example_2.md

@ -0,0 +1 @@
## 家庭网络的IPv4与IPv6透明代理
Loading…
Cancel
Save