另一个 Go 实现的 p2p 类库。致力于设备之间直接通信。
NOTE
节点间时间同步非常重要,通常相差不能超过 10 秒
# 节点1
pgcli vpn -s wss://openpg.in/pg -4 100.64.0.1/24
# 节点2
pgcli vpn -s wss://openpg.in/pg -4 100.64.0.2/24
NOTE
使用github认证时要求帐号绑定已验证的邮箱 (https://github.com/settings/emails)
$ 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
NOTE
pgmap支持配置文件(查看所有配置项)。另外,命令行参数会覆盖配置文件参数
$ caddy reverse-proxy --from https://openpg.in --to 127.0.0.1:9987
# 分享
$ 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
ln -sf /usr/sbin/pgcli /usr/sbin/pgvpn
现在,你可以使用pgvpn来代替pgcli vpn了
pgvpn --peers
PeerGuard 支持多种传输协议(UDP/QUIC/KCP/WebRTC),并提供统一接口,方便根据需求进行切换。
// 创建UDP监听器
config := pgnet.ProtocolConfig{
Network: pgnet.ProtocolUDP,
Addr: "127.0.0.1:9000",
}
listener, err := pgnet.NewListener(config)
// 创建带TLS的QUIC监听器
config := pgnet.ProtocolConfig{
Network: pgnet.ProtocolQUIC,
Addr: "127.0.0.1:9001",
TLSConfig: tlsConfig,
}
listener, err := pgnet.NewListener(config)
// 创建带加密的KCP监听器
config := pgnet.ProtocolConfig{
Network: pgnet.ProtocolKCP,
Addr: "127.0.0.1:9002",
KCPKey: "your-secret-key",
KCPCrypt: "aes",
}
listener, err := pgnet.NewListener(config)
// 创建WebRTC监听器
config := pgnet.ProtocolConfig{
Network: pgnet.ProtocolWebRTC,
Addr: "webrtc://localhost:8080",
WebRTCSignaling: signaling, // 需要实现信令接口
WebRTCICEServers: []webrtc.ICEServer{
{URLs: []string{"stun:stun.l.google.com:19302"}},
},
}
listener, err := pgnet.NewListener(config)
查看net/protocols.md了解更多关于协议使用和配置的详细信息。WebRTC协议的详细使用方法请参考net/README_WebRTC.md。
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
首先
$ export PG_SECRET_KEY=5172554832d76672d1959a5ac63c5ab9
$ export PG_SERVER=wss://openpg.in/pg
$ pgcli admin secret --network "<email>" --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
非常欢迎参与项目的开发,如果有任何改善本项目的意图,请立即提交 PR
NOTE
我维护了一个功能更强的专业版本,是闭源的。任何贡献在开源版本的代码都可能被闭源版本采用,如果介意请不要参与贡献。