sigcn/pg
GitHub: sigcn/pg
一个 Go 语言编写的 P2P 网络库,致力于通过高成功率的 NAT 穿透和端到端加密实现设备间直接通信。
Stars: 301 | Forks: 15
# PeerGuard
另一个 Go 的 p2p 网络库。致力于实现设备间的直接通信。
[[简体中文]](https://github.com/sigcn/pg/blob/main/README_zh_CN.md)
## 功能
- 极简的架构 (pgcli & pgmap & OpenID Connect)
- 高成功率的 NAT 穿透 (STUN & UPnP & PortScan & BirthdayParadox)
- 全面支持 IPv4/IPv6 双栈
- 易用的库 (net.PacketConn)
- **传输层安全 (curve25519 & chacha20poly1305 实现端到端加密)**
- 用于可靠数据传输的 [RDT](https://github.com/sigcn/pg/tree/main/rdt) 协议
- 跨平台兼容 (linux/windows/macOS/iOS/android)
## 快速开始
```
# node1
pgcli vpn -s wss://openpg.in/pg -4 100.64.0.1/24
```
```
# node2
pgcli vpn -s wss://openpg.in/pg -4 100.64.0.2/24
```
## 进阶
### 自托管 peermap 服务器
#### 1. 运行 pgmap daemon
```
$ pgmap -l 127.0.0.1:9987 --secret-key 5172554832d76672d1959a5ac63c5ab9 \
--stun 111.206.174.2:3478 --stun 106.13.249.54:3478 --stun 106.12.251.52:3478 --stun 106.12.251.31:3478
```
#### 2. 将 pgmap 封装为 https 服务器
```
$ caddy reverse-proxy --from https://openpg.in --to 127.0.0.1:9987
```
### P2P 文件共享
```
# 分享
$ pgcli share -s wss://openpg.in/pg ~/my-show.pptx
ShareURL: pg://DJX2csRurJ3DvKeh63JebVHFDqVhnFjckdVhToAAiPYf/0/my-show.pptx
```
```
# 下载
$ pgcli download -s wss://openpg.in/pg pg://DJX2csRurJ3DvKeh63JebVHFDqVhnFjckdVhToAAiPYf/0/my-show.pptx
```
### 快捷方式 pgvpn
```
ln -sf /usr/sbin/pgcli /usr/sbin/pgvpn
```
你现在可以使用 `pgvpn` 来代替 `pgcli vpn`。
### 使用 IPC 查询已发现的 peers。
```
pgvpn --peers
```
### 无 root 模式 VPN
```
pgvpn -s wss://openpg.in/pg -4 100.64.0.1/24 --proxy-listen 127.0.0.1:4090 --forward tcp://127.0.0.1:80 --forward udp://8.8.8.8:53
```
### 使用预共享密钥文件代替 OIDC 认证
**首先**
```
$ export PG_SECRET_KEY=5172554832d76672d1959a5ac63c5ab9
$ export PG_SERVER=wss://openpg.in/pg
$ pgcli admin secret --network "
" --duration 24h > psns.json
```
**然后**
```
sudo pgcli vpn -s wss://openpg.in/pg -4 100.64.0.1/24 -f psns.json
```
## 许可证
[GNU General Public License v3.0](https://github.com/sigcn/pg/blob/main/LICENSE)
## 贡献
欢迎贡献!有改进建议吗?提交一个 pull request。
## 联系方式
- Telegram 群组: https://t.me/+-S5L6ZCBxlxkMTRl
- QQ 群: 1039776116标签:EVTX分析, Go语言, NAT穿透, P2P网络, VPN, 日志审计, 点对点传输, 程序破解, 端到端加密