openppp2是一款开源VPN,和openVPN,wireguard等走的流量层级大差不差,解决受限网络,组网、端口映射、游戏加速这些需求的。

项目地址

现在开始教程,分两种,周宇航大佬制作的一键脚本(docker版和二进制版本),易安装方便升级,以及手动安装,二进制文件版本。

1>一键脚本搭建 (Linux服务端)

此包含,服务端,客户端功能。

一键脚本无需docker为二进制版本,更适合mjj的一键脚本。

bash <(curl -Ls https://raw.githubusercontent.com/rebecca554owen/openppp2-docker/main/start.sh)

安装之后看这里

下面为docker版本,所以安装时默认安装docker,所以机器配置要稍大256MB。具有自适应arm,amd64,极快速安装等功能,但docker不支援LXC,请谨记,LXC小鸡请绕道上面脚本安装,或者手动安装。当然可以选择升级内核 点此

bash <(curl -Ls https://raw.githubusercontent.com/rebecca554owen/openppp2-docker/main/ppp.sh)

输入命令,可得

image-yjze.png

直接安装选1,若无docker会先安装docker,安装完成后会出现

 Docker 安装完成。

配置路径已存在: /etc/ppp
请选择运行模式:
1) server
2) client

?

因为先是搭建,所以选1,下一步就是填入VPS的IP,端口,后面直接默认就行了,如下所示

请输入VPS IP:

请输入VPS 端口:
请输入内网IP地址(默认为::,服务端保持默认值即可):

出现下图时说明已经成功

/etc/ppp/appsettings.json配置文件生成成功。

重启openppp2…
[+] Pulling 5/5
✔ openppp2 4 layers [⣿⣿⣿⣿] 0B/0B Pulled 5.7s
✔ bccd10f490ab Pull complete 0.8s
✔ 446f053972fd Pull complete 0.6s
✔ ca7804e383f0 Pull complete 0.7s
✔ 4f4fb700ef54 Pull complete 1.1s
[+] Running 1/1
✔ Container openppp2 Started 0.3s
openppp2已重启。

接下来我们去/etc/ppp 目录内,下载appsettings.json 配置文件即可使用。其他拓展功能配置文件参考 #配置文件及说明,默认无需修改。

使用请点击这里

2>手动安装搭建(Linux服务端)

检查内核

首先是检查内核,因为openppp2有一个回环版本要求Linux内核大于等于5.10

当然也有兼容版本,那么此处可以跳过,获得更好性能的回环版本请按步骤

如果想使用内环版本以取得最大性能,要求Linux内核大于等于5.10,要求内存推荐大于等于256MB,而兼容版本则可以在128MB内存下运行,内核无要求

输入uname -adpkg –list | grep linux-image

image.png

image-fgwv.png

(可选)更换内核

若配置符合要求,可以移步

https://jasper1024.com/jasper/20230106032903/

或者

安装内核时最好别选带cloud版本,可能会没有网卡驱动而失联

apt update && apt upgrade -y #更新软件源

apt search linux-image #搜索可安装linux内核
apt install linux-image-5.10.0-0.deb10.28-amd64 #示例安装内核版本,万一可以呢
dpkg –list | grep linux-image #搜索已经安装的linux内核
reboot #最好重启,可选

安装依赖,前置

apt update && apt install sudo -y #更新软件源,安装sudo

sudo apt install curl screen unzip wget -y #安装解压,wget,screen后台运行

(可选)防火墙安装

还有其他端口记得开启,一定一定

sudo apt install ufw -y #安装ufw

sudo ufw allow 22/tcp #放行22 ssh端口

nat机就不要搞了,容易搞混了,不安装也无问题,

其他端口也可以同理如ufw allow后的 22就是开放22的tcp和udp端口,22/udp就是只开放22的udp端口

sudo ufw allow 20000 #openppp2默认端口
sudo ufw enable #开启ufw
sudo ufw status verbose #查看当前开放端口
sudo apt remove ufw #卸载ufw,不需要你,给我滚

而且可以的话请排除其他代理软件,非必要

创建目录

在root目录下创建ppp,没有root登录不要用

mkdir /root/ppp && cd /root/ppp  #要求root登录:创建并进入/root/ppp目录

或者

你也可以在其他目录创建,此处/opt/ppp 可以替换其他目录,如/etc/ppp 非root用户也可以

mkdir /opt/ppp/ && cd /opt/ppp/ #在opt下创建ppp,成功后进入ppp
或者mkdir /etc/ppp/ && cd /etc/ppp/ #在opt下创建ppp,成功后进入ppp

下载ppp2

&&为执行成功后执行下一条,所以依次是下载ppp最新版,解压,删除ppp压缩包

回环版本,内核要求≥5.10,内存稍大256MB

wget https://github.com/liulilittle/openppp2/releases/latest/download/openppp2-linux-amd64-io-uring.zip && unzip -o openppp2.zip 'ppp' && unzip -n openppp2.zip -x 'ppp' && find . -type f -name 'openppp2.zip*' -exec rm {} +

兼容版本

wget https://github.com/liulilittle/openppp2/releases/latest/download/openppp2-linux-amd64.zip && unzip -o openppp2.zip 'ppp' && unzip -n openppp2.zip -x 'ppp' && find . -type f -name 'openppp2.zip*' -exec rm {} +

arm CPU 回环版本

wget https://github.com/liulilittle/openppp2/releases/latest/download/openppp2-linux-aarch64-io-uring.zip && unzip -o openppp2.zip 'ppp' && unzip -n openppp2.zip -x 'ppp' && find . -type f -name 'openppp2.zip*' -exec rm {} +

arm 兼容版本 要求与amd64版本同

wget https://github.com/liulilittle/openppp2/releases/latest/download/openppp2-linux-aarch64.zip && unzip -o openppp2.zip 'ppp' && unzip -n openppp2.zip -x 'ppp' && find . -type f -name 'openppp2.zip*' -exec rm {} +

当然你也可以自己去ppp项目地址自己下载上传

配置文件修改及说明

后面就是比较重要的配置文件了,因为原配置文件参数比较多,所以我对其精简了一下,并直接拉取替换原来的配置文件

默认关闭CDN,端口映射功能

wget -O appsettings.json https://raw.githubusercontent.com/zouazhi/zouazhi/main/appsettings.json

其中配置文件中存在 你的IP 的地方应该填上你的IP,20000是默认端口

IP需要改个地方,这样可以一套配置文件吃遍客户端服务端,而端口需要更的话,有个地方需要变动

如下图,端口为20000为默认,需要可以更改

image-nzml.png

当然你也可以选择vi,vim,nano等工具修改,如

nano appsettings.json

此为说明详细示例(下面这两个是拓展阅读,可跳过

{

"concurrent": 5,  
"key": {
    "kf": 154543927,
    "kx": 128,
    "kl": 10,
    "kh": 12,
    "protocol": "aes-128-cfb",
    "protocol-key": "N6HMzdUs7IUnYHwq",
    "transport": "aes-256-cfb",
    "transport-key": "HWFweXu2g5RVMEpy",
    "masked": false,
    "plaintext": false,
    "delta-encode": false,
    "shuffle-data": false
},
"ip": {
    "public": "::",
    "interface": "::" 
},
"vmem": {
    "size": 0, 
    "path": "./{}"
},
"tcp": {
    "inactive": {
        "timeout": 300
    },
    "connect": {
        "timeout": 5
    },
    "listen": {
        "port": 20000 tcp端口这里改
    },
    "turbo": true,
    "backlog": 511,
    "fast-open": true
},
"udp": {
    "inactive": {
        "timeout": 72
    },
    "dns": {
        "timeout": 4,
        "redirect": "0.0.0.0"
    },
    "listen": {
        "port": 20000 udp端口这里改
    },
    "static": {
        "keep-alived": [1, 5], 
        "dns": true,
        "quic": true,
        "icmp": true,
        "server": "你的ip:20000"  IP端口这里改
    }
},
"server": {
    "log": "./ppp.log",
    "node": 1,
    "subnet": true,
    "mapping": false,
    "backend": "", 
    "backend-key": "HaEkTB55VcHovKtUPHmU9zn0NjFmC6tff"
},
"client": {
    "guid": "{F4569208-BB45-4DEB-B115-0FEA1D91B85B}",
    "server": "ppp://你的ip:20000/",  IP端口这里改
    "bandwidth": 0,
    "reconnections": {
        "timeout": 5
    },
    "paper-airplane": {
        "tcp": true
    },
    "http-proxy": {
        "bind": "::", 
        "port": 8080
    },
    "mappings": [
        {
            "local-ip": "192.168.0.24",
            "local-port": 80,
            "protocol": "tcp",
            "remote-ip": "::",
            "remote-port": 10001
        },
        {
            "local-ip": "192.168.0.24",
            "local-port": 7000,
            "protocol": "udp",
            "remote-ip": "::",
            "remote-port": 10002
        }
    ]
}

}

下面由Copilot+GPT生成

“concurrent”: 5:设置并发连接数为 5,即同时处理的连接数。
“key” 部分:设置加密和传输的密钥。
“kf”: 154543927:设置密钥 kf。
“kx”: 128:设置密钥 kx。
“kl”: 10:设置密钥 kl。
“kh”: 12:设置密钥 kh。
“protocol”: “aes-128-cfb”:设置协议为 AES-128-CFB。
“protocol-key”: “N6HMzdUs7IUnYHwq”:设置协议密钥。
“transport”: “aes-256-cfb”:设置传输为 AES-256-CFB。
“transport-key”: “HWFweXu2g5RVMEpy”:设置传输密钥。
“masked”: false:禁用掩码。
“plaintext”: false:禁用明文传输。
“delta-encode”: false:禁用增量编码。
“shuffle-data”: false:禁用数据混淆。

“public”: "::":设置服务器的公共 IP 地址为 ::。在 IPv6 地址中,:: 表示未指定的地址,类似于 IPv4 中的 0.0.0.0。
“interface”: "::":设置服务器的接口 IP 地址为 ::。这通常用于监听所有可用的网络接口。

“vmem” 部分用于设置虚拟内存的参数。让我为您解释一下其中的一些参数:
“size”: 0:设置虚拟内存的大小为 0,这意味着不使用虚拟内存。
“path”: “./{}“:设置虚拟内存文件的路径,{} 将被替换为实际的文件名

“tcp” 部分用于设置 TCP 相关的参数。让我为您解释一下其中的一些参数:
“inactive”: {“timeout”: 300}:设置连接的非活动超时时间为 300 秒。如果连接在这段时间内没有活动,它将被关闭。
“connect”: {“timeout”: 5}:设置连接超时时间为 5 秒。如果连接在这段时间内没有建立成功,它将被终止。
“listen”: {“port”: 20000}:设置服务器监听的端口号为 20000。
“turbo”: true:启用 Turbo 模式,用于提高性能。
“backlog”: 511:设置连接请求队列的最大长度。
“fast-open”: true:启用 TCP 快速打开,用于减少连接建立的延迟。

“udp” 部分用于设置 UDP 相关的参数。让我为您解释一下其中的一些参数:
“inactive”: {“timeout”: 72}:设置连接的非活动超时时间为 72 秒。如果连接在这段时间内没有活动,它将被关闭。
“dns”: {“timeout”: 4, “redirect”: “0.0.0.0”}:设置 DNS 查询的超时时间为 4 秒,并将 DNS 查询重定向到 0.0.0.0。
“listen”: {“port”: 20000}:设置服务器监听的 UDP 端口号为 20000。
“static” 部分:设置静态映射规则。
“keep-alived”: [1, 5]:设置保持存活的时间范围为 1 到 5 秒。
“dns”: true:启用 DNS 映射。
“quic”: true:启用 QUIC 协议。
“icmp”: true:启用 ICMP 协议。
“server”: “你的ip:20000”:设置服务器的地址和端口。

“server” 部分用于设置服务器的参数。让我为您解释一下其中的一些参数:
“log”: “./ppp.log”:指定日志文件的路径,服务器将把日志写入到这个文件中。
“node”: 1:设置节点编号为 1,用于标识不同的服务器节点。
“subnet”: true:启用子网模式,这意味着服务器将分配 IP 地址给客户端。
“mapping”: true:启用地址映射,用于将客户端的 IP 地址映射到服务器的 IP 地址。
“backend-key”: “HaEkTB55VcHovKtUPHmU9zn0NjFmC6tff”:设置后端密钥。

“client” 部分用于设置客户端的参数。让我为您解释一下其中的一些参数:
“guid”: “{F4569208-BB45-4DEB-B115-0FEA1D91B85B}“:设置客户端的唯一标识。
“server”: “ppp://你的ip:20000/“:设置服务器的地址和端口。
“bandwidth”: 0:设置带宽为 0,即不限制带宽。
“reconnections”: {“timeout”: 5}:设置重新连接的超时时间为 5 秒

“bind” 表示绑定的地址,而 “port” 表示端口号。

第一个映射
“local-ip”: 本地 IP 地址为 “192.168.0.24”,这是指本地计算机的 IP 地址。
“local-port”: 本地端口为 80,这是指本地计算机上用于通信的端口号。
“protocol”: 协议为 TCP,这表示这个映射是基于 TCP 协议的。
“remote-ip”: 远程 IP 地址为 “::“,表示任意远程 IP 地址
“remote-port”: 远程端口为 10001,这表示远程计算机上用于通信的端口号。
第二个映射:
“local-ip”: 本地 IP 地址同样为 “192.168.0.24”。
“local-port”: 本地端口为 7000。
“protocol”: 协议为 UDP,这表示这个映射是基于 UDP 协议的。
“remote-ip”: 远程 IP 地址同样为 “::“,表示任意远程 IP 地址。
“remote-port”: 远程端口为 10002。

启动

确保在下载了ppp二进制文件目录下启动,如果是顺着上面来的就已经是在目录下

screen -S ppp #新建screen ppp,其他后台运行软件也可以

chmod +x ppp && ./ppp -m -s #PPP~启动!

如图为成功启动,并且包含了端口信息,可以通过ctrl + c终止ppp,该窗口可以直接关闭。

image-zihw.png

后续维护

screen是后台运行而不退出的,所以可以关闭窗口或者ctrl + a d切换出去

通过screen -r ppp 切换到ppp窗口

因为无论是screen,还是ppp都是重启失效的,这时候需要手动启动,如启动的时候一样

screen -S ppp         #新建screen ppp,其他后台运行软件也可以

chmod +x ppp && ./ppp -m -s #PPP~启动!

当然也可以写入系统服务,实现开机启动请查看下方链接,但是未足够完善,无法查看ppp当前跑的流量

https://github.com/zouazhi/zouazhi/blob/main/second.sh

更新

当ppp运行时,先screen -r ppp 切换到ppp窗口,ctrl+c关闭ppp

image-zxdd.png

然后输入

安装时所用的命令,此命令和安装命令为同一条,存在ppp只替换ppp文件,其他存在文件不更改

&&为执行成功后执行下一条,所以依次是下载ppp最新版,解压,删除ppp压缩包

回环版本,内核要求≥5.10,内存稍大256MB

wget https://github.com/liulilittle/openppp2/releases/latest/download/openppp2-linux-amd64-io-uring.zip && unzip -o openppp2.zip 'ppp' && unzip -n openppp2.zip -x 'ppp' && find . -type f -name 'openppp2.zip*' -exec rm {} +

兼容版本

wget https://github.com/liulilittle/openppp2/releases/latest/download/openppp2-linux-amd64.zip && unzip -o openppp2.zip 'ppp' && unzip -n openppp2.zip -x 'ppp' && find . -type f -name 'openppp2.zip*' -exec rm {} +

arm CPU 回环版本

wget https://github.com/liulilittle/openppp2/releases/latest/download/openppp2-linux-aarch64-io-uring.zip && unzip -o openppp2.zip 'ppp' && unzip -n openppp2.zip -x 'ppp' && find . -type f -name 'openppp2.zip*' -exec rm {} +

arm 兼容版本

wget https://github.com/liulilittle/openppp2/releases/latest/download/openppp2-linux-aarch64.zip && unzip -o openppp2.zip 'ppp' && unzip -n openppp2.zip -x 'ppp' && find . -type f -name 'openppp2.zip*' -exec rm {} +

然后重新启动就行了

chmod +x ppp && ./ppp -m -s

Windows客户端使用

安卓客户端暂时没完善,熟悉安卓开发的可以去github项目完善一下

全客户端GitHub下载页面

Windows客户端一键下载

解压文件如图

image-wkdj.png

然后是配置Windows,Windows端以start.bat启动,配置文件是appsettings.json

编辑start.bat ,原配置如下图

image-nqui.png

默认没有开启优化,加入–tun-static=yes 为开启,异常时可以将yes改为no

服务器下载的appsettings.json 文件放在同级目录,之后就可以点击start.bat 启动,愉快得玩耍了。

注意当期不要有开启v2rayN,nekoray类代理软件后台,否则会疯狂dns查询卡死电脑

第一次可能要求安装驱动请同意

image_2024-04-09_20-44-13.png

上图下方出现数据交换即为成功连接,可以通过Ctrl+C关闭软件

ping 10.0.0.1 -t 查看到服务器的连接

图示为阿里云香港轻量

image-uqth.png

分流(国内外分流)

分流文件可以在作者github页面查看下载,下图中几个txt文件即是分流文件

https://github.com/liulilittle/openppp2

image-ihpc.png

放入和ppp.exe同级目录,并编辑start.bat 文件加入,与其他参数同格式

–bypass-iplist=./ip.txt –dns-rules=./dns-rules.txt –firewall-rules=./firewall-rules.txt

那最终就是

start ppp.exe –mode=client –tun-ip=10.0.0.2 –tun-gw=10.0.0.0 –tun-mask=24 –tun-host=yes –tun-vnet=yes –tun-static=no –block-quic=yes –set-http-proxy=no –bypass-iplist=./ip.txt –dns-rules=./dns-rules.txt –firewall-rules=./firewall-rules.txt

其中 –tun-ip=10.0.0.2 是可以为10.0.0.1/24 里面除了网关IP10.0.0.1 外的任意IP,就是10.0.0.2-10.0.0.255,这个与–tun-mask=24有关,若为10.0.0.1/16 则为10.0.0.2-10.0.255.255 具体在后面组网篇有更多解释

(可选)dns查询也可以自定义,参照下方帮助栏,编辑start.bat 加入–dns=8.8.8.8,8.8.4.4 类似可以改为1.1.1.1

帮助(拓展阅读)

帮助接口为,当前目录下打开终端或cmd,输入 ./ppp.exe –help 打开命令查询

下图为–help接口,可知,Usagestart.bat 中可添加的内容,Commands是终端中输入的命令

image-qarq.png

–mode=[client|server]:指定运行模式,可以是客户端或服务器。

–config=./appsettings.json:指定配置文件的路径。
–tun=[ppp]:指定隧道名称,这里是 PPP。
–tun-ip=10.0.0.2:设置隧道 IP 地址为 10.0.0.2。
–tun-gw=10.0.0.0:设置隧道网关 IP 地址为 10.0.0.0。
–tun-mask=30:设置子网掩码为 30,对应于一个 CIDR 表示法的地址块,例10.0.0.0/30。
–dns=8.8.8.8,8.8.4.4:设置 DNS 服务器的 IP 地址。
–set-http-proxy=[yes|no]:设置是否启用 HTTP 代理。如果设置为 yes,则启用 HTTP 代理;如果设置为 no,则禁用。
–block-quic=[yes|no]:设置是否阻止 QUIC 协议。如果设置为 yes,则阻止 QUIC 协议;如果设置为 no,则不阻止。
–bypass-iplist=[./ip.txt]:指定一个 IP 地址列表文件,用于绕过特定 IP 地址。
–dns-rules=[./dns-rules.txt]:指定一个 DNS 规则文件,用于配置 DNS 解析规则。
–firewall-rules=[./firewall-rules.txt]:指定一个防火墙规则文件,用于配置防火墙规则。
–help:显示帮助信息。
–pull-iplist [[ip.txt]/[CN]]:从 IP 地址列表文件或中国 IP 地址列表中获取 IP 地址。
–system-network-reset:重置系统网络设置。
–system-network-preferred-ipv4:设置系统首选的 IPv4 网络。
–system-network-preferred-ipv6:设置系统首选的 IPv6 网络。
–system-network-optimization:优化系统网络设置。
–no-lsp “C:\Windows\System32\wsl.exe”:禁用指定路径下的 LSP(Layered Service Provider)。

游戏加速(拓展)

有些游戏会检测防外挂,会检测到ppp的一个附件而无法启动

我这里介绍两种方法./ppp.exe –no-lsp “C:\Windows\System32\wsl.exe”:禁用指定路径下的 LSP(Layered Service Provider),即在目录终端下输入检测外挂程序的路径。不推荐

推荐appsettings.json 内的paper-airplane 改为false ,默认为true

        “paper-airplane”: {

        "tcp": false</code></pre><p style="text-align: start; ">然后目录下打开终端或cmd,输入</p><pre><code>./ppp.exe --system-network-reset</code></pre><p style="text-align: start; ">再<mark data-color="#1e3a8a" style="background-color: #1e3a8a; color: inherit; box-sizing: border-box; border-width: 0px; border-style: solid; border-color: rgb(229, 231, 235); --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; background-color: rgb(30, 58, 138); color: inherit; display: inline-block;"><span fontsize="" color="rgb(243, 244, 246)" style="color: rgb(243, 244, 246)">重启</span></mark>电脑就🆗</p><h3 style="text-align: start; " id="%E7%BB%84%E7%BD%91%E5%92%8C%E5%A4%9A%E8%AE%BE%E5%A4%87%EF%BC%88%E6%8B%93%E5%B1%95%EF%BC%89"><strong>组网和多设备(拓展)</strong></h3><p style="text-align: start; ">强调一点很重要的是,每一个ppp服务端所分发网络的客户端对应只能一个guid,所以拿到别人分享的配置,也要改guid</p><blockquote><p style=""><strong><em>GUID: Globally Unique Identifier,由 128 bit 组成,相当于 16 个字节,也就是 32 个字符。</em></strong></p><p style=""><strong><em>有效的 GUID 格式是 {XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX},X 是 16 进制数 (0123456789ABCDEF)。<br>比如:408e72f2-2387-465c-a64d-9a25c05b4733</em></strong></p><p style="text-align: start; "><strong><em>UUID:Universally Unique Identifier,即通用唯一识别码。是一个由 4 个连字号 (-) 将 32 个字节长的字符串分隔后生成的字符串,总共 36 个字节长。比如:f65e182f-b9ed-4d0f-9e5c-fba0a0a7203d</em></strong></p></blockquote><p style="text-align: start; ">所以无论是组网还是只是多设备用<strong>都需要更改</strong><code>appsettings.json</code> 内的<code>guid</code></p><pre><code> "client": {
    "guid": "{F4569208-BB45-4DEB-B115-0FEA1D91B85B}",</code></pre><p style="text-align: start; ">随便改几个数字和字母但是要从16 进制数 (0123456789ABCDEF)中选就行了,或者用网站生成</p><blockquote><p style=""><a href="https://www.toolhelper.cn/Random/GUID" target="_blank"><strong><em><u>GUID 生成器 - 在线工具 (toolhelper.cn)</u></em></strong></a></p></blockquote><p style="text-align: start; ">接下来是与其他设备组网,<code>start.bat</code> 内的<code>--tun-ip=10.0.0.2</code> ip更改,默认是<code>10.0.0.2</code>,可以更改最后面一位,但不能冲突特别是和网关IP<code>10.0.0.1</code>,这个与<code>--tun-mask=24:设置子网掩码为 24,对应于一个 CIDR 表示法的地址块,例10.0.0.0/24。</code>有关,当然子网掩码也可以更改,其相应的IP个数也会不同,当然不同设备的guid也要保持不同。</p><p style="text-align: start; ">子网相关查询</p><blockquote><p style=""><a href="https://tools.wujingquan.com/subnetmask/" target="_blank"><strong><em><u>https://tools.wujingquan.com/subnetmask/</u></em></strong></a></p></blockquote><p style="text-align: start; ">默认网关是<code>10.0.0.1</code>,我电脑是<code>10.0.0.2</code>,远程维护家里的其他设备,将其他设备10.0.0.2改为10.0.0.5,双方启动就组网成功,但是这种依赖其他服务器作为网关的模式,延迟是double的,如果有公网直接作为服务端(网关)组网更快,考虑大多数情况下都不是公网,所以比较适合一些维护的场景</p><p style="text-align: start; ">另外这种延迟double的组网方式<mark data-color="#fde047" style="background-color: #fde047; color: inherit; box-sizing: border-box; border-width: 0px; border-style: solid; border-color: rgb(229, 231, 235); --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; background-color: rgb(253, 224, 71); color: inherit; display: inline-block;"><span fontsize="" color="rgb(59, 130, 246)" style="color: rgb(59, 130, 246)">不适合联机局域网游戏,除非你有公网IP</span></mark></p><p style="text-align: start; ">可以通过<code>ping</code>对方的IP查看网络连接情况,示例为<code>ping 10.0.0.1 -t</code> ,IP应为对方pppVPN IP</p><p style="text-align: start; ">下图为虚拟机和Windows,以以甲骨文迪拜为网关组网的测试</p><p style="text-align: start; "><img src="/upload/photo_2024-04-07_10-23-09.jpg" alt="photo_2024-04-07_10-23-09.jpg" width="100%" height="100%" style="display: inline-block"></p><h2 style="text-align: start; " id="windows%E6%90%AD%E5%BB%BA%EF%BC%88%E6%9C%8D%E5%8A%A1%E7%AB%AF%EF%BC%89"><strong>Windows搭建(服务端)</strong></h2><p style="text-align: start; ">简略说明,要求公网ip</p><p style="text-align: start; ">将<code>start.bat</code>里面<code>--mode=client</code> 改为<code>--mode=server</code> 为启用服务端功能,如下图</p><p style="text-align: start; "><img src="/upload/image-atpv.png" alt="image-atpv.png" width="100%" height="100%" style="display: inline-block"></p><p style="text-align: start; ">修改<code>appsettings.json</code> 里面的IP和端口,参考<a href="https://halo.nicetive.site/archives/pppda-jian-ji-shi-yong-jiao-cheng#%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E4%BF%AE%E6%94%B9%E5%8F%8A%E8%AF%B4%E6%98%8E" target="_self"><strong><u>这里</u></strong></a></p><p style="text-align: start; ">然后点击<code>start.bat</code> 启动</p><h2 style="text-align: start; " id="linux%E5%AE%A2%E6%88%B7%E7%AB%AF"><strong>Linux客户端</strong></h2><pre><code>apt update &amp;&amp; apt install sudo -y #更新软件源,安装sudo

sudo apt install screen unzip wget -y #安装解压,wget,screen后台运行

然后在合适的地方下载ppp

#回环版本,内核要求≥5.10,内存稍大256MB

wget https://github.com/liulilittle/openppp2/releases/latest/download/openppp2-linux-amd64-io-uring.zip && unzip -o openppp2.zip 'ppp' && unzip -n openppp2.zip -x 'ppp' && find . -type f -name 'openppp2.zip*' -exec rm {} +

兼容版本

wget https://github.com/liulilittle/openppp2/releases/latest/download/openppp2-linux-amd64.zip && unzip -o openppp2.zip 'ppp' && unzip -n openppp2.zip -x 'ppp' && find . -type f -name 'openppp2.zip*' -exec rm {} +

arm CPU 回环版本

wget https://github.com/liulilittle/openppp2/releases/latest/download/openppp2-linux-aarch64-io-uring.zip && unzip -o openppp2.zip 'ppp' && unzip -n openppp2.zip -x 'ppp' && find . -type f -name 'openppp2.zip*' -exec rm {} +

arm 兼容版本 要求与amd64版本同

wget https://github.com/liulilittle/openppp2/releases/latest/download/openppp2-linux-aarch64.zip && unzip -o openppp2.zip 'ppp' && unzip -n openppp2.zip -x 'ppp' && find . -type f -name 'openppp2.zip*' -exec rm {} +

进入目录将,导入appsettings.json 在进入ppp目录下

screen -S ppp

chmod +x start.sh && ./start

出现数据交换就🆗了

END