SkillAgentSearch skills...

PaoPaoGateWay

PaoPao GateWay是一个体积小巧、稳定强大的FakeIP网关

Install / Use

/learn @kkkgo/PaoPaoGateWay
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

PaoPao GateWay

<img src="https://raw.githubusercontent.com/kkkgo/PaoPaoGateWay/main/paopaogateway.png" width="200">

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

你可以从Github Release下载到最新的镜像:https://github.com/kkkgo/PaoPaoGateWay/releases

如果对你有帮助,欢迎点Star,如果需要关注更新,可以点Watch

→详细说明《FakeIP网关的工作原理》

运行要求和配置下发

类型|要求 -|- 虚拟机CPU|x86-64,推荐3核心或更多 内存|最低512MB,推荐1024MB或更多 硬盘|不需要 网卡|1 光驱|1

注意:如果节点数量很多或者连接数很多或者你的配置文件比较复杂的话,建议适当增加内存和CPU核心数

方式一:使用docker内嵌配置

你可以使用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信息。
为了实现配置和虚拟机分离,达到类似docker的效果,PaoPaoGateWay采用了配置下发的方式进行配置,你需要把配置文件放在对应位置,假设系统启动后通过DHCP获取到以下信息:

IP: 10.10.10.3
DNS1: 10.10.10.8
DNS2: 10.10.10.9
网关: 10.10.10.1

系统会依次尝试以下方式获取配置,并记忆最后一次成功的连接,下次循环优先使用:

  • 1 从http://paopao.dns:7889/ppgw.ini下载配置。使用此方式,你需要配合你的DNS服务,把paopao.dns这个域名解析到你的静态文件服务IP,服务端口是7889。如果配合PaoPaoDNS使用,你只需要设置SERVER_IP参数和设置HTTP_FILE=yes,映射7889端口即可,你可以直接把配置文件ppgw.ini放在PaoPaoDNS/data目录。paopao.dns会从网卡DNS解析获取解析结果,如果结果不可用并且之前有ppgw.ini指定的dns会再尝试获取。
  • 2 从http://10.10.10.1:7889/ppgw.ini下载配置。使用此方式,你可以在主路由上映射7889端口到你的静态文件服务。
  • 3 从http://10.10.10.8:7889/ppgw.ini下载配置。如果你直接使用PaoPaoDNS作为你的DNS服务IP,那么你只需要设置PaoPaoDNS的HTTP_FILE=yes,映射7889端口即可。
  • 4 从http://10.10.10.9:7889/ppgw.ini下载配置。同上。

系统会不停尝试直到成功获取到配置文件为止,并在后续定期获取新配置(默认值是30秒),当配置的值发生变化的时候将会重新加载网关。你也可以手动进入虚拟机本地终端输入reload回车强制马上重载所有配置。

ppgw.ini配置说明

ppgw.ini的所有配置项如下:

#paopao-gateway

# mode=socks5|ovpn|yaml|suburl|free
# default: free
mode=free

# Set fakeip's CIDR here
# default: fake_cidr=7.0.0.0/8
fake_cidr=7.0.0.0/8

# Set your trusted DNS here
# default: dns_ip=1.0.0.1
dns_ip=10.10.10.8
# default: dns_port=53
# If used with PaoPaoDNS, you can set the 5304 port
dns_port=5304

# Clash's web dashboard
clash_web_port="80"
clash_web_password="clashpass"

# default:openport=no
# socks+http mixed 1080
openport=no
#openport_auth="username:password"

# default: udp_enable=no
udp_enable=no

# default:30
sleeptime=30

# socks5 mode settting
# default: socks5_ip=gatewayIP
socks5_ip="10.10.10.5"
# default: socks5_port="7890"
socks5_port="7890"
#socks5_username="username"
#socks5_password="password"

# ovpn mode settting
# The ovpn file in the same directory as the ppgw.ini.
# default: ovpnfile=custom.ovpn
ovpnfile="custom.ovpn"
ovpn_username=""
ovpn_password=""

# yaml mode settting
# The yaml file in the same directory as the ppgw.ini.
# default: yamlfile=custom.yaml
yamlfile="custom.yaml"

# suburl mode settting
suburl="https://..."
subtime=1d
#subcron=5

# fast_node=check/yes/no
fast_node=yes
test_node_url="https://www.youtube.com/generate_204"
ext_node="Traffic|Expire| GB|Days|Date"
cpudelay="3000"
fall_direct="no"
# dns burn setting
# depend on fast_node=yes & mode=suburl/yaml
dns_burn=yes
ex_dns="223.5.5.5:53,1.0.0.1:53"

# Network traffic records
net_rec=no
max_rec=5000
#net_cleanday=15

下面逐项来解释选项的用法:

  • 1 配置文件第一行必须以#paopao-gateway开头。配置格式为选项="值"
  • 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库更新,而稳定的网关不适合依赖更新运行,此外碰到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地址段都会被网关按普通流量处理分流。【ROS用户看这里】 【爱快用户看这里】 除了静态路由,或者你可以顺便添加DHCP option 121优化。 不建议使用198.18.0.0/15作为fake_cidr段,Chrome会认为这个是局域网段并警告,请参考:
    • https://developer.chrome.google.cn/blog/local-network-access?hl=zh-cn
    • https://wicg.github.io/local-network-access/
  • 4 dns_ipdns_port用于设置可信任的DNS服务器,“可信任”意味着真实无污染的原始解析结果。如果你配合PaoPaoDNS使用,可以把dns_ip设置成PaoPaoDNS的IP,把dns_port设置成映射的5304端口,详情可参见PaoPaoDNS的可映射端口说明。该DNS服务在代理出站的时候实际上不会被用到,流量还是会以域名发送到远端,更多的是用于其他模式的节点解析、规则匹配。
  • 5 clash_web_portclash_web_password是clash web仪表板的设置,分别设置web的端口和访问密码,默认值为80clashpass。网页登录地址为http://网关IP:端口/ui。你可以在web端查看流量和日志,以及选择节点等。不要忘了登录地址是/uiclash_web_password选项兼容除特殊字符外所有字符串(比如可以设置clash_web_password="一去二三里烟村四五家")。
  • 6 openport设置是否向局域网开启一个1080端口的socks5+http代理,默认值为no,需要开启可以设置为yes。如果你想为代理增加额外的用户密码验证,可以设置openport_auth="username:password",格式为"用户名:密码"
  • 7 udp_enable: 是否允许UDP流量通过网关,默认值为no,设置为no则禁止UDP流量进入网关。(此选项只影响路由,不影响openport选项)注意:如果你的节点不支持UDP或者不稳定不建议开启,开启UDP将会导致QUIC失败导致网站有时候上不去的现象。
  • 8 sleeptime是拉取配置检测更新的时间间隔,默认值是30,单位是秒。sleeptime在第一次成功获取到配置后生效,如果配置的值发生变化,将会重载网关配置。如果设置sleeptime低于30会被赋值为30。
  • 9 socks5_ipsocks5_port: socks5运行模式的专用设置,指定socks5的服务器IP和端口。如果socks5有用户验证,可以指定socks5_usernamesocks5_password
  • 10 ovpnfileovpn_usernameovpn_password: ovpn运行模式的专用设置,ovpnfile指定ovpn的文件名,系统将会从ppgw.ini的同一目录下载该文件。如果你的ovpn需要用户名和密码认证,可以指定ovpn_usernameovpn_password
  • 11 yamlfile: yaml运行模式的专用设置,指定yaml的文件名,系统将会从ppgw.ini的同一目录下载该文件,并使用sleeptime的值循环刷新检测配置文件变化,值发生变化则重载网关。
  • 12 suburlsubtimesubcron: suburl运行模式的专用配置,suburl指定订阅的地址(记得加英文半角双引号),而subtime则指定刷新订阅的时间间隔,单位可以是m(分钟),h(小时)或者d(天),默认值为1d。与yaml模式不同,suburl模式使用单独的刷新间隔而不是sleeptime,因为订阅一般都是动态生成,每次刷新都不一样,会导致刷新网关必定重载。需要注意的是subtime仅配置订阅的时间间隔,检测配置变化仍然是由sleeptime进行。注意如果开了fast_node功能,检测不通的时候会主动拉新订阅。subcron参数支持指定每天0-23时刷新订阅,比如subcron=5每天凌晨5点内刷新订阅。该参数启用的时候subtime参数会失效。
  • 13 fast_nodetest_node_urlext_node:测试最快的节点并自动选择该节点的功能。fast_node默认值为no。如果fast_node值为空,并且yaml模式或者suburl的配置文件中不包含rules,则会被设置为yes。test_node_url是用于测速的网址,将会使用clash的api测试延迟,默认值是https://www.youtube.com/generate_204ext_node是排除测速的节点,多个关键字用竖线隔开,默认值是ext_node="Traffic|Expire| GB|Days|Date"fast_node的行为如下:
    • fast_node=yes或者fast_node=check,系统将会在sleeptime间隔检测test_node_url是否可达,若可达,则不进行任何操作;若不可达,则立即停止clash并秒重载网关配置,如果是suburl模式,还会在重载前拉新订阅配置。
    • 仅当fast_node=yes,在网关重载后对所有节点(不包括ext_node)进行测速,并自动选择延迟最低的节点。fast_node=yes会忽略加载rules:规则并开启global模式
    • fast_node=yes仅会在test_node_url不可达的时候主动切换节点,不会影响你在Web手动选择节点使用。因此强烈建议习惯单节点使用的开启该项功能。或者可以使用fast_node=check来实现当test_node_url不可达的时候主动拉新订阅而不主动选择节点。
    • 注意,设置为check不会测速,设置为yes测速失败到阈值会杀死进程并终止应用网关并重载,而check不会杀死进程,仅重载所有配置并关闭所有现有的旧连接。
    • 如果你的所有的节点都延迟过高不稳定,建议设置为no避免增加意外的断流的情况,同时你需要手动切换节点。
    • cpudelay选项是设定如果CPU处理延迟大于指定值则放弃本次测速。该选项是防止低性能设备负载过高导致死机,默认值为3000。设置更小的值可能会放弃更多测速,设置更高的值可能会让低性能设备负载过高。
    • fall_direct选项设置为yesfast_node测试全部节点失败的时候,若互联网路由可达,则尝试切换到DIRECT直连。(仅在开启fast_node=yes的时候生效)
  • 14 dns_burn选项和ex_dns选项:dns_burn功能可以把所有节点的域名解析成所有可能的IP结果,把server字段替换为解析的IP结果,以节点名@IP最后一位的名称作为新节点加入,临时硬编码到配置文件中。上面设置的dns_ipdns_port,和ex_dns选项会被用于dns_burn功能,ex_dns选项用于指定额外的DNS用于解析节点,建议设置为境内DNS以获得不同的结果,如果为空默认值为223.5.5.5:53,如果配合PaoPaoDNS使用,则可以设置为PaoPaoDNSIP:53。你也可以设置多个ex_dns,格式为逗号分隔,比如ex_dns=223.5.5.5:53,1.0.0.1:53。适用于suburl模式和yaml模式,依赖于fast_node=yes。该功能的优点和应用场景如下:
    • 1、节点使用了分区域解析,只有使用了境内DNS才能连接,参见issuedns_burn功能可以额外对节点进行解析。
    • 2、节点DNS解析存在多个解析入口,dns_burn功能会把所有可能的入口都作为新节点加入到配置文件中,在测速的时候就可以选择到速度最好的入口,而不是随机选择。
    • 3、节点的所有可能的解析结果都会被临时硬编码到配置文件中,除非所有节点都测速失败或者订阅更新,该配置文件不会变化,可以减少节点的DNS查询,使用IP直连,并有效避免节点临时出现可能的DNS污染或者DNS故障的情况,比如节点域名忘记续费导致解析失败。
  • 15 net_rec选项:网络流量记录功能,可以记录网关连接了哪些域名、上传下载消耗了多少流量、客户端IP,并默认按照消耗流量的大小排序,该功能可以根据实际情况方便地调整分析自己的域名规则列表。设置为yes开启该功能后可以在web界面点击[记录],选择下载表格或者在线加载。其中max_rec选项指定最大记录数,默认为5000,当记录的内容超过max_rec的2倍后,仅保留前max_rec项记录。注意事项:
    • 1、重启或者修改ppgw的密码、Web端口、max_rec选项、调整任何和net_rec相关选项会导致数据清空。
    • 2、如果流量太小连接持续时间过短,有可能在记录之前连接已经关闭,流量有可能会显示为0B。
    • 3、理论上会略微增加资源占用,取决于你的并发连接数量以及max_rec,可适当增加运行资源。 net_cleanday=1-31选项,指定每个月某一天清空网络流量数据记录,比如net_cleanday=15每月15日清空网络流量数据记录。如果指定值大于当月有效天数,比如2月份指定31,将会取该月最大值执行,该值为空的时候只有达到了max_rec限制才会清理。

PPSUB 组合订阅使用指南

基本使用流程

  1. 从左侧菜单 PPsub 编辑器开始,编辑你的订阅提供商、节点组、规则组后,导出 json 文件。也可以下载离线编辑器:https://github.com/kkkgo/PaoPaoGateWay/blob/main/ppsub_offline.html
  2. 导出了 json 配置后,设置 ppgw.inimode=suburl, 设置 suburl="ppsub@http://.../ppsub.json"(suburl 前面加 ppsub@

全局健康监测

开启全局健康监测,可以在指定url监测失败的时候,重新处理和拉取所有PaoPaoGateway配置。

订阅提供商

提供订阅的 url,相当于 suburl。假设你有多个订阅,你可以添加多个订阅提供商。

  • 勾选强制依赖的属性会要求必须下载到该订阅,否则当处理失败,全部重来
  • 当没有订阅提供商被勾选强制依赖,则至少需要一个订阅提供商被下载成功
  • 如果节点组依赖的订阅提供商没有下载成功,则跳过生成节点组。

注意:请不要把这个区域和第三方的 proxy-providers 功能混淆,PPsub 不使用这个功能,PPSub有

Related Skills

View on GitHub
GitHub Stars508
CategoryDevelopment
Updated1d ago
Forks48

Languages

HTML

Security Score

100/100

Audited on Apr 2, 2026

No findings