peerguard/vpn
2024-08-03 11:48:16 +08:00
..
iface vpn: add route add/remove callback 2024-07-15 20:17:23 +08:00
packet.go vpn: add inbound/outbound packet handlers 2024-05-25 09:54:20 +08:00
README.md pgcli/vpn: fix --allowed-ip flag not working 2024-06-01 11:14:13 +08:00
vpn.go disco: drop ErrUseOfClosedConnection 2024-08-03 11:48:16 +08:00

VPN

a Virtual Private Network library

Example

peer1

packetConn, err := net.ListenPacket("udp", "192.168.3.99:22334")
if err != nil {
    panic(err)
}

iface, err := iface.Create("tun1", iface.Config{MTU: 1428, IPv4: "10.10.10.2/24"})
if err != nil {
    panic(err)
}
iface.AddPeer("10.10.10.1", "", &net.UDPAddr{IP: net.ParseIP("192.168.3.98", Port: 22335)})

ctx, cancel := signal.NotifyContext(context.Background(), os.Interrupt, syscall.SIGTERM)
defer cancel()

err := vpn.New(vpn.Config{MTU: 1428}).Run(ctx, iface, packetConn)
if err != nil {
    panic(err)
}

peer2

packetConn, err := net.ListenPacket("udp", "192.168.3.98:22335")
if err != nil {
    panic(err)
}

iface, err := iface.Create("tun1", iface.Config{MTU: 1428, IPv4: "10.10.10.1/24"})
if err != nil {
    panic(err)
}
iface.AddPeer("10.10.10.2", "", &net.UDPAddr{IP: net.ParseIP("192.168.3.99", Port: 22334)})

ctx, cancel := signal.NotifyContext(context.Background(), os.Interrupt, syscall.SIGTERM)
defer cancel()

err := vpn.New(vpn.Config{MTU: 1428}).Run(ctx, iface, packetConn)
if err != nil {
    panic(err)
}