Skip to content

Commit

Permalink
doc and sniff update.
Browse files Browse the repository at this point in the history
  • Loading branch information
kkkgo committed Dec 5, 2023
1 parent 1cbf148 commit 119a029
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 11 deletions.
7 changes: 4 additions & 3 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
FROM alpine:edge AS singbuilder
RUN apk add go
RUN apk add go git
WORKDIR /data
RUN go mod init sing-box && go get -v github.com/sagernet/sing-box/cmd/sing-box@latest
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags "-s -w -extldflags -static" -trimpath -o /data/sing-box github.com/sagernet/sing-box/cmd/sing-box
RUN git clone https://github.com/kkkgo/box.git box
WORKDIR /data/box
RUN go get -u && CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags "-s -w -extldflags -static" -trimpath -tags "" -o /data/sing-box ./cmd/sing-box
FROM alpine:edge
WORKDIR /data
COPY ./remakeiso.sh /
Expand Down
1 change: 1 addition & 0 deletions FILES/usr/bin/ppg.sh
Original file line number Diff line number Diff line change
Expand Up @@ -746,6 +746,7 @@ while true; do
fi
else
log "Try to run Clash again..." warn
get_conf "$suburl" "yaml"
load_clash $fast_node $udp_enable
fi
if [ "$net_rec" = "yes" ]; then
Expand Down
16 changes: 8 additions & 8 deletions ReadMe.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
## PaoPao GateWay
![PaoPaoDNS](https://th.bing.com/th/id/OIG.0FtL40H4krRLeooEGFpu?w=220&h=220&c=6&r=0&o=5&pid=ImgGn)

PaoPao GateWay是一个体积小巧、稳定强大的FakeIP网关,核心由clash驱动,支持`Full Cone NAT` ,支持多种方式下发配置,支持多种出站方式,包括自定义socks5、自定义openvpn、自定义yaml节点、订阅模式和自由出站,支持节点测速自动选择、节点排除等功能,并附带web面板可供查看日志连接信息等。PaoPao GateWay可以和其他DNS服务器一起结合使用,比如配合[PaoPaoDNS](https://github.com/kkkgo/PaoPaoDNS)`CUSTOM_FORWARD`功能就可以完成简单精巧的分流。
PaoPao GateWay是一个体积小巧、稳定强大的FakeIP网关,核心由clash/mihomo驱动,支持`Full Cone NAT` ,支持多种方式下发配置,支持多种出站方式,包括自定义socks5、自定义openvpn、自定义yaml节点、订阅模式和自由出站,支持节点测速自动选择、节点排除等功能,并附带web面板可供查看日志连接信息等。PaoPao GateWay可以和其他DNS服务器一起结合使用,比如配合[PaoPaoDNS](https://github.com/kkkgo/PaoPaoDNS)`CUSTOM_FORWARD`功能就可以完成简单精巧的分流。

你可以从Github Release下载到最新的镜像:[https://github.com/kkkgo/PaoPaoGateWay/releases](https://github.com/kkkgo/PaoPaoGateWay/releases)
##### 如果对你有帮助,欢迎点`Star`,如果需要关注更新,可以点`Watch`
Expand All @@ -19,7 +19,7 @@ PaoPao GateWay是一个体积小巧、稳定强大的FakeIP网关,核心由cla
*注意:如果节点数量很多或者连接数很多或者你的配置文件比较复杂的话,建议适当增加内存和CPU核心数*

#### 方式一:使用docker内嵌配置
你可以使用Docker一键定制ISO镜像,其中包括为ISO**配置静态IP**替换Clash核心、替换Country.mmdb、内嵌ppgw.ini等功能,**详情见使用Docker定制ISO镜像一节**
你可以使用Docker一键定制ISO镜像,其中包括为ISO**配置静态IP**替换Clash/mihomo核心、替换Country.mmdb、内嵌ppgw.ini等功能,**详情见使用Docker定制ISO镜像一节**

#### 方式二:使用DHCP下发配置
PaoPao GateWay是一个iso镜像,为虚拟机运行优化设计,你只需要添加一个网络接口和一个虚拟光驱塞iso即可。虚拟机启动之后,会自动使用DHCP初始化eth0接口,因此你需要在路由器里为这个虚拟机**绑定静态的IP地址**,如果你在路由器里面找不到哪个是PaoPao GateWay的话,他的主机名是PaoPaoGW,虚拟机也会滚动显示获取到的eth0接口的IP地址和MAC信息。
Expand Down Expand Up @@ -114,7 +114,7 @@ max_rec=5000
- 2 `mode`是网关的运行模式,也就是当静态路由的流量到达网关之后,怎么出去。一共有五种模式可以选择(`socks5`,`ovpn`,`yaml`,`suburl`,`free`):
- `socks5`:配置为socks5代理出站,这是最简单也是最通用的配置方式,如果其他模式不能满足你的需求,你可以把能满足你需求的服务程序开一个`socks5`代理给网关使用。
- `ovpn`:配置为openvpn出站,适用于一些专线场景。
- `yaml`:自定义clash的yaml配置文件出站。你可以自己写一个clash格式的yaml配置文件,clash支持多种出站协议,具体写法请看官方wiki。只写`proxies:`字段即可,也可以包含`rules:`字段。如果只有`proxies:`字段,在网关启动后你可以在web端选择节点;如果有`rules:`字段,则会按照你写的规则来执行。注意,网关使用开源的官方clash核心,如果你的`rules:`包含闭源Premium core的规则,则无法加载并报错,导致clash无法启动。使用开源的Clash核心是因为功能已经可以满足需求,网关本身也不适合加载过于复杂的规则,Premium core的功能会降低稳定性、增加崩溃的几率,比如`RULE-SET`功能在启动的时候下载远程url文件失败的话可能会导致clash无法正常启动,而clash无法启动的时候文件可能不能被正常下载,进入了死循环。此外,由于网关也不适用GEOIP规则,请勿写入任何GEOIP规则,因为GEOIP规则依赖GEOIP库更新,而稳定的网关不适合依赖更新运行([参见](https://github.com/Dreamacro/clash/issues/2674#issuecomment-1507868338)),此外碰到GEOIP规则会触发DNS解析,降低了处理效率。如果有更复杂的规则需求,建议单独跑一个docker配置你所需的规则,开放socks5端口,让网关使用`socks5`模式,或者参考**使用docker定制ISO镜像**一节更换定制的clash核心。选择该模式,你需要把配置文件放在和`ppgw.ini`同一目录,系统将会在指定的`sleeptime`内循环检测配置值的变化并重载网关。
- `yaml`:自定义clash的yaml配置文件出站。你可以自己写一个clash格式的yaml配置文件,clash支持多种出站协议,具体写法请看官方wiki。只写`proxies:`字段即可,也可以包含`rules:`字段。如果只有`proxies:`字段,在网关启动后你可以在web端选择节点;如果有`rules:`字段,则会按照你写的规则来执行。注意,网关使用开源的官方clash核心,如果你的`rules:`包含闭源Premium core的规则,则无法加载并报错,导致clash无法启动。使用开源的Clash核心是因为功能已经可以满足需求,网关本身也不适合加载过于复杂的规则,Premium core的功能会降低稳定性、增加崩溃的几率,比如`RULE-SET`功能在启动的时候下载远程url文件失败的话可能会导致clash无法正常启动,而clash无法启动的时候文件可能不能被正常下载,进入了死循环。此外,由于网关也不适用GEOIP规则,请勿写入任何GEOIP规则,因为GEOIP规则依赖GEOIP库更新,而稳定的网关不适合依赖更新运行,此外碰到GEOIP规则会触发DNS解析,降低了处理效率。如果有更复杂的规则需求,建议单独跑一个docker配置你所需的规则,开放socks5端口,让网关使用`socks5`模式,或者参考**使用docker定制ISO镜像**一节更换定制的clash核心。选择该模式,你需要把配置文件放在和`ppgw.ini`同一目录,系统将会在指定的`sleeptime`内循环检测配置值的变化并重载网关。
- `suburl`:自定义远程订阅clash配置,不过是从给定的url下载配置。注意事项与`yaml`模式基本一样,不能使用包含开源clash功能之外的规则的订阅,或者参考**使用docker定制ISO镜像**一节更换定制的clash核心。推荐nodelist类型订阅,或者使用subconverter等程序转换订阅。
- `free`: 自由出站模式,选择此模式的场景是,假定你在IP层面把虚拟机IP出口走了专线,流量直接出站处理。
- 3 `fake_cidr`是指定你的FakeIP地址池范围。比如默认值是`7.0.0.0/8`,你需要在主路由上设置一条静态路由`7.0.0.0/8`到PaoPaoGateWay。你应该使用一些看起来是公网但实际上不是(或者不会被实际使用)的地址段,比如实验用地址段、DoD网络地址段。如果你有其他真实的公网IP段需要被网关处理,直接写对应的静态路由即可(比如某些聊天软件走的是IP直连而不是域名),除了指定的`fake_cidr`段会被建立域名映射,其他公网IP地址段都会被网关按普通流量处理分流。[爱快用户看这里。](https://github.com/kkkgo/PaoPaoGateWay/discussions/26) 除了静态路由,[或者你可以顺便添加DHCP option 121优化](https://github.com/kkkgo/PaoPaoGateWay/discussions/25#discussioncomment-7221895)
Expand Down Expand Up @@ -177,8 +177,8 @@ ppgwurl="http://...."
你可以把节点信息`custom.yaml`放入当前目录,当`mode=yaml`的时候将会强制使用该文件。
注意:你仍然需要在`ppgw.ini`中指定`mode=yaml`才会使用到该文件。

#### 替换clash核心
你可以把你的amd64的clash二进制文件重命名为clash放到当前目录即可。通过替换clash核心,你可以支持更多的协议和规则功能,比如`Premium Core`支持Wireguard出站,Meta核心支持VLESS等等
#### 替换clash/mihomo核心
你可以把你的amd64的clash/mihomo二进制文件重命名为clash放到当前目录即可。通过替换clash核心,你可以支持更多的协议和规则功能,比如替换为[mihomo](https://github.com/MetaCubeX/mihomo/releases)
注意:使用Wireguard出站建议设置`remote-dns-resolve: false`

#### 替换Country.mmdb
Expand Down Expand Up @@ -215,8 +215,6 @@ docker run --rm -v .:/data sliamb/ppgwiso:fullmod
缺点:
- Web面板看不到请求的IP来源
- 需要占用更多内存
- 有可能导致UDP Type降级
- 可能会略微增加延迟

使用该功能,只需要在生成的时候加入环境变量参数`SNIFF=yes`即可:
```shell
Expand Down Expand Up @@ -275,5 +273,7 @@ services:

## 附录
PaoPaoDNS: https://github.com/kkkgo/PaoPaoDNS
Clash WiKi: https://dreamacro.github.io/clash/
mihomo releases: https://github.com/MetaCubeX/mihomo/releases
mihomo config: https://github.com/MetaCubeX/mihomo/blob/Alpha/docs/config.yaml
mihomo wiki: https://wiki.metacubex.one/config/proxies/
Yacd: https://github.com/haishanh/yacd

0 comments on commit 119a029

Please sign in to comment.