2023-04-24 21:15:43 +08:00
2023-04-24 21:15:43 +08:00
2023-04-14 02:09:55 +08:00
2023-04-23 00:12:18 +08:00
2023-04-14 02:09:55 +08:00
2023-04-24 14:44:44 +08:00
2023-04-14 13:11:57 +08:00
2023-04-23 00:15:38 +08:00
2023-04-13 12:29:56 +08:00
2023-04-24 16:42:32 +08:00

wgortc (Wireguard Over Webrtc)

How to Use

replace conn.Bind with this. more details see example/main.go

	// the signaler server is only for test
	signaler := lens2.NewSignaler("client", "https://test:test@signaler.slive.fun")
	bind := wgortc.NewBind(signaler)
	dev = device.NewDevice(tun, bind, device.NewLogger(loglevel, "client"))

Custom Signaler Server

implement the signaler.Channel interface

package signaler

import "github.com/pion/webrtc/v3"

type SDP = webrtc.SessionDescription

type Channel interface {
	Handshake(endpoint string, offer SDP) (answer *SDP, err error)
	Accept() (offerCh <-chan Session, err error)

	Close() error
}

type Session interface {
	Description() (offer SDP)
	Resolve(answer *SDP) (err error)
	Reject(err error)
}

如何建立连接

sequenceDiagram
    participant client
    participant server
    par first message packet
        client->>server: webrtc session description
    and
        client->>server: wireguard initiator message
    end
    Note over server,client: server wireguard check initiator
    critical check failed
        server--)client: close connection
    option check ok
        server->>client: webrtc session description
        server->>client: wiregaurd response initiator
    		server->>client: webrtc pair connect
    end
    Note over server,client: webrtc connected
    loop webrtc datachannel open
        server->client: wireguard exchange data
    end
Description
基于 Webrtc 的 Wireguard
Readme GPL-3.0 3.9 MiB
Languages
Go 100%