DarkiT 377a079a60
Some checks failed
Docker CI / build-oci-images (map[arch:linux/amd64,linux/arm/v7,linux/386,linux/s390x file:Dockerfile id:weron-linux-amd64 image:ghcr.io/pojntfx/weron runner:ubuntu-latest src:.]) (push) Has been cancelled
Docker CI / build-oci-images (map[arch:linux/arm64/v8 file:Dockerfile id:weron-linux-arm64-v8 image:ghcr.io/pojntfx/weron runner:ubicloud-standard-4-arm src:.]) (push) Has been cancelled
hydrun CI / build-linux (map[cmd:./Hydrunfile go weron dst:out/* flags:-e '-v /tmp/ccache:/root/.cache/go-build --privileged -v /var/run/docker.sock:/var/run/docker.sock --net host' id:go.weron os:golang:bookworm runner:ubuntu-latest src:.]) (push) Has been cancelled
hydrun CI / build-linux (map[cmd:GOFLAGS="-short" ./Hydrunfile test dst:out/nonexistent flags:-e '-v /tmp/ccache:/root/.cache/go-build --privileged -v /var/run/docker.sock:/var/run/docker.sock --net host' id:test os:golang:bookworm runner:ubuntu-latest src:.]) (push) Has been cancelled
Docker CI / merge-oci-images (map[idprefix:weron-linux- image:ghcr.io/pojntfx/weron]) (push) Has been cancelled
hydrun CI / publish-linux (push) Has been cancelled
chore: 添加平台特定的TUN设备配置支持
- 为不同操作系统(Linux、macOS、Windows、Android、BSD、Solaris)实现了TUN设备的配置函数,确保在各平台上能够正确设置IP地址和设备状态
- 在不支持的平台上提供默认的错误处理,增强代码的健壮性
- 更新日志记录以包含平台特定的配置状态信息,增强调试信息
- 确保适配器在不同操作系统下的兼容性和性能优化
2025-03-29 09:47:23 +08:00
2022-04-27 23:29:38 +02:00
2023-09-13 03:32:56 +02:00
2022-02-28 21:58:52 +01:00
2022-04-19 23:08:37 +02:00

weron

基于WebRTC的覆盖网络。


hydrun CI Docker CI Go Version Go Reference TypeScript docs Matrix

概述

weron提供基于WebRTC的精简、快速且安全的覆盖网络。

它使您能够:

  • 访问NAT后面的节点由于weron使用WebRTC建立节点之间的连接它可以通过STUN轻松穿越企业防火墙和NAT甚至可以使用TURN服务器隧道传输流量。这对于例如无需在路由器上转发任何端口就能SSH进入家庭实验室非常有用。
  • 保护您的家庭网络由于WebRTC在低延迟网络中的相对较低开销weron可用于保护LAN中节点之间的流量而不会显著影响性能。
  • 将本地节点加入云网络如果您运行的例如Kubernetes集群的节点基于云实例但同时也想将您的本地节点加入其中您可以使用weron创建一个可信网络。
  • 绕过审查底层的WebRTC套件即流行的视频会议工具如Zoom、Teams和Meet所基于的技术在网络层面很难被阻止使其成为绕过国家或企业审查的有价值工具。
  • 编写您自己的点对点协议简单的API使编写具有自动重连、多数据通道等功能的分布式应用变得容易。

安装

您可以通过运行以下命令将weron添加到您的Go项目中

$ go get github.com/pojntfx/weron/...@latest

容器化

您可以按照以下方式获取OCI镜像

$ podman pull ghcr.io/pojntfx/weron

本机安装

静态二进制文件可在GitHub发布页获取。

在Linux上您可以按照如下方式安装

$ curl -L -o /tmp/weron "https://github.com/pojntfx/weron/releases/latest/download/weron.linux-$(uname -m)"
$ sudo install /tmp/weron /usr/local/bin
$ sudo setcap cap_net_admin+ep /usr/local/bin/weron # 这允许无需root权限执行

在macOS上您可以使用以下命令

$ curl -L -o /tmp/weron "https://github.com/pojntfx/weron/releases/latest/download/weron.darwin-$(uname -m)"
$ sudo install /tmp/weron /usr/local/bin

在Windows上以下命令应该可行以管理员身份使用PowerShell

PS> Invoke-WebRequest https://github.com/pojntfx/weron/releases/latest/download/weron.windows-x86_64.exe -OutFile \Windows\System32\weron.exe

您可以在GitHub发布页找到更多操作系统和架构的二进制文件。

教程

简而言之:使用 sudo weron vpn ip --community mycommunity --password mypassword --key mykey --ips 2001:db8::1/32,192.0.2.1/24 加入托管信令服务器上的第3层IP覆盖网络使用 sudo weron vpn ethernet --community mycommunity --password mypassword --key mykey 加入第2层以太网覆盖网络

1. 使用 weron signaler 启动信令服务器

信令服务器通过在节点之间交换连接信息来将它们相互连接。它还通过客户端的 --password 标志管理对社区的访问,并且可以在所有节点断开连接后维护持久性社区。

虽然使用托管信令服务器 wss://weron.up.railway.app/ 是可行且相对私密的除了TLS连接信息还使用客户端的 --key 标志进行加密),但自行托管有许多好处,例如更低的延迟和更好的隐私。

信令服务器可以使用具有内存数据库或SQLite/PostgreSQL的进程内代理对于生产使用强烈推荐PostgreSQL因为它允许您轻松水平扩展信令服务器。如果您想水平扩展这一点尤为重要。

展开容器化安装说明
$ sudo podman network create weron

$ sudo podman run -d --restart=always --label "io.containers.autoupdate=image" --name weron-postgres --network weron -e POSTGRES_HOST_AUTH_METHOD=trust -e POSTGRES_DB=weron_communities postgres
$ sudo podman generate systemd --new weron-postgres | sudo tee /lib/systemd/system/weron-postgres.service

$ sudo podman run -d --restart=always --label "io.containers.autoupdate=image" --name weron-signaler --network weron -p 1337:1337 -e DATABASE_URL='postgres://postgres@weron-postgres:5432/weron_communities?sslmode=disable' -e API_PASSWORD='myapipassword' ghcr.io/pojntfx/weron:unstable weron signaler
$ sudo podman generate systemd --new weron-signaler | sudo tee /lib/systemd/system/weron-signaler.service

$ sudo systemctl daemon-reload

$ sudo systemctl enable --now weron-postgres
$ sudo systemctl enable --now weron-signaler

$ sudo firewall-cmd --permanent --add-port=1337/tcp
$ sudo firewall-cmd --reload
展开本机安装说明
sudo podman run -d --restart=always --label "io.containers.autoupdate=image" --name weron-postgres -e POSTGRES_HOST_AUTH_METHOD=trust -e POSTGRES_DB=weron_communities -p 127.0.0.1:5432:5432 postgres
sudo podman generate systemd --new weron-postgres | sudo tee /lib/systemd/system/weron-postgres.service

sudo podman run -d --restart=always --label "io.containers.autoupdate=image" --name weron-signaler -p 127.0.0.1:1337:1337 -e DATABASE_URL='postgres://postgres@localhost:5432/weron_communities?sslmode=disable' -e API_PASSWORD='myapipassword' ghcr.io/pojntfx/weron:unstable weron signaler
sudo podman generate systemd --new weron-signaler | sudo tee /lib/systemd/system/weron-signaler.service

sudo systemctl daemon-reload

sudo systemctl restart weron-postgres
sudo systemctl restart weron-signaler

sudo firewall-cmd --permanent --add-port=1337/tcp
sudo firewall-cmd --reload

现在应该可以在 ws://localhost:1337/ 上访问它了。

要在生产环境中使用请将此信令服务器放在启用TLS的反向代理CaddyTraefik)后面。您可能还希望保持 API_PASSWORD 为空以完全禁用管理API或使用OpenID Connect进行身份验证有关更多信息请参阅信令服务器参考。您还可以使用其Go API将信令服务器嵌入到您自己的应用程序中。

2. 使用 weron manager 管理社区

虽然可以在信令服务器上创建不需要任何授权的临时社区但对于大多数应用程序您可能希望创建一个持久性社区。临时社区会随着客户端的加入或离开而自动创建和删除而持久性社区则永远不会自动删除。您可以使用管理器CLI管理这些社区。

如果您想在自托管的信令服务器上工作,首先设置远程地址:

$ export WERON_RADDR='http://localhost:1337/'

接下来,使用 API_PASSWORD 环境变量设置API密码

$ export API_PASSWORD='myapipassword'

如果您使用OIDC进行身份验证可以使用goit来设置API密码

$ export OIDC_CLIENT_ID='Ab7OLrQibhXUzKHGWYDFieLa2KqZmFzb' OIDC_ISSUER='https://pojntfx.eu.auth0.com/' OIDC_REDIRECT_URL='http://localhost:11337'
$ export API_KEY="$(goit)"

如果我们现在列出社区,我们会看到当前不存在任何社区:

$ weron manager list
id,clients,persistent

我们可以使用 weron create 创建一个持久性社区:

$ weron manager create --community mycommunity --password mypassword
id,clients,persistent
mycommunity,0,true

也可以使用 weron delete 删除社区,这也会断开所有已连接的节点:

$ weron manager delete --community mycommunity

有关更多信息,请参见管理器参考。您还可以使用其Go API将管理器嵌入到您自己的应用程序中。

3. 使用 weron chat 测试系统

如果您想在自托管的信令服务器上工作,首先设置远程地址:

$ export WERON_RADDR='ws://localhost:1337/'

聊天是测试一切是否正常工作的简单方法。要加入聊天室,请运行以下命令:

$ weron chat --community mycommunity --password mypassword --key mykey --names user1,user2,user3 --channels one,two,three

在另一个节点上,运行以下命令(如果您的信令服务器是公开的,您可以在地球上的任何地方运行此命令):

$ weron chat --community mycommunity --password mypassword --key mykey --names user1,user2,user3 --channels one,two,three
.wss://weron.up.railway.app/
user2!
+user1@one
+user1@two
+user1@three
user2>

现在,您可以开始发送和接收消息,或者向聊天室添加新的节点来测试网络。

有关更多信息,请参见聊天参考。您还可以使用其Go API将聊天嵌入到您自己的应用程序中。

4. 使用 weron utility latency 测量延迟

网络的一个重要指标是其延迟您可以使用此实用工具测量它把它看作是WebRTC版的ping。首先,像这样启动延迟测量服务器:

$ weron utility latency --community mycommunity --password mypassword --key mykey --server

在另一个节点上,启动客户端,它应该立即开始测量延迟;按CTRL C停止它并获取总体统计信息:

$ weron utility latency --community mycommunity --password mypassword --key mykey
# ...
128 B written and acknowledged in 110.111µs
128 B written and acknowledged in 386.12µs
128 B written and acknowledged in 310.458µs
128 B written and acknowledged in 335.341µs
128 B written and acknowledged in 264.149µs
^CAverage latency: 281.235µs (5 packets written) Min: 110.111µs Max: 386.12µs

有关更多信息,请参见延迟测量实用工具参考。您还可以使用其Go API将该实用工具嵌入到您自己的应用程序中。

5. 使用 weron utility throughput 测量吞吐量

如果您想传输大量数据网络的吞吐量是一个关键特性。此实用工具允许您测量两个节点之间的这一指标把它看作是WebRTC版的iperf。首先,像这样启动吞吐量测量服务器:

$ weron utility throughput --community mycommunity --password mypassword --key mykey --server

在另一个节点上,启动客户端,它应该立即开始测量吞吐量;按CTRL C停止它并获取总体统计信息:

$ weron utility throughput --community mycommunity --password mypassword --key mykey
# ...
97.907 MB/s (783.253 Mb/s) (50 MB read in 510.690403ms)
64.844 MB/s (518.755 Mb/s) (50 MB read in 771.076908ms)
103.360 MB/s (826.881 Mb/s) (50 MB read in 483.745832ms)
89.335 MB/s (714.678 Mb/s) (50 MB read in 559.692495ms)
85.582 MB/s (684.657 Mb/s) (50 MB read in 584.233931ms)
^CAverage throughput: 74.295 MB/s (594.359 Mb/s) (250 MB written in 3.364971672s) Min: 64.844 MB/s Max: 103.360 MB/s

有关更多信息,请参见吞吐量测量实用工具参考。您还可以使用其Go API将该实用工具嵌入到您自己的应用程序中。

6. 使用 weron vpn ip 创建第3层IP覆盖网络

如果您想将多个节点加入到覆盖网络中IP VPN是最佳选择。它的工作方式类似于例如Tailscale/WireGuard可以从CIDR表示法中动态分配IP地址或为您静态分配一个。在Windows上请确保先安装TAP-Windows。另请注意由于技术限制Windows上一次只支持一个IPv4或IPv6网络和一个VPN实例在macOS上只支持IPv6网络IPv4网络会被忽略。要开始请在第一个节点上启动VPN

$ sudo weron vpn ip --community mycommunity --password mypassword --key mykey --ips 2001:db8::1/64,192.0.2.1/24
{"level":"info","addr":"wss://weron.up.railway.app/","time":"2022-05-06T22:20:51+02:00","message":"Connecting to signaler"}
{"level":"info","id":"[\"2001:db8::6a/64\",\"192.0.2.107/24\"]","time":"2022-05-06T22:20:56+02:00","message":"Connected to signaler"}

在另一个节点上也启动VPN

$ sudo weron vpn ip --community mycommunity --password mypassword --key mykey --ips 2001:db8::1/64,192.0.2.1/24
{"level":"info","addr":"wss://weron.up.railway.app/","time":"2022-05-06T22:22:30+02:00","message":"Connecting to signaler"}
{"level":"info","id":"[\"2001:db8::b9/64\",\"192.0.2.186/24\"]","time":"2022-05-06T22:22:36+02:00","message":"Connected to signaler"}
{"level":"info","id":"[\"2001:db8::6a/64\",\"192.0.2.107/24\"]","time":"2022-05-06T22:22:36+02:00","message":"Connected to peer"}

现在您可以在节点之间通信:

$ ping 2001:db8::b9
PING 2001:db8::b9(2001:db8::b9) 56 data bytes
64 bytes from 2001:db8::b9: icmp_seq=1 ttl=64 time=1.07 ms
64 bytes from 2001:db8::b9: icmp_seq=2 ttl=64 time=1.36 ms
64 bytes from 2001:db8::b9: icmp_seq=3 ttl=64 time=1.20 ms
64 bytes from 2001:db8::b9: icmp_seq=4 ttl=64 time=1.10 ms
^C
--- 2001:db8::b9 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3002ms
rtt min/avg/max/mdev = 1.066/1.180/1.361/0.114 ms

如果您暂时失去网络连接网络拓扑发生变化等它将自动重新连接。有关更多信息和在macOS等专有操作系统上的限制请参见IP VPN参考。您还可以使用其Go API将该实用工具嵌入到您自己的应用程序中。

7. 使用 weron vpn ethernet 创建第2层以太网覆盖网络

如果您想要更大的灵活性或在非IP网络上工作以太网VPN是一个不错的选择。它的工作方式类似于n2n或ZeroTier。由于API限制这种VPN类型在macOS上不可用;请使用Asahi Linux、尊重您自由的计算机或第3层IPVPN作为替代。要开始请在第一个节点上启动VPN

$ sudo weron vpn ethernet --community mycommunity --password mypassword --key mykey
{"level":"info","addr":"wss://weron.up.railway.app/","time":"2022-05-06T22:42:10+02:00","message":"Connecting to signaler"}
{"level":"info","id":"fe:60:a5:8b:81:36","time":"2022-05-06T22:42:11+02:00","message":"Connected to signaler"}

如果您想给TAP接口添加IP地址请使用iproute2或您操作系统的工具:

$ sudo ip addr add 192.0.2.1/24 dev tap0
$ sudo ip addr add 2001:db8::1/32 dev tap0

在另一个节点上也启动VPN

$ sudo weron vpn ethernet --community mycommunity --password mypassword --key mykey
{"level":"info","addr":"wss://weron.up.railway.app/","time":"2022-05-06T22:52:56+02:00","message":"Connecting to signaler"}
{"level":"info","id":"b2:ac:ae:b6:32:8c","time":"2022-05-06T22:52:57+02:00","message":"Connected to signaler"}
{"level":"info","id":"fe:60:a5:8b:81:36","time":"2022-05-06T22:52:57+02:00","message":"Connected to peer"}

并添加IP地址

$ sudo ip addr add 192.0.2.2/24 dev tap0
$ sudo ip addr add 2001:db8::2/32 dev tap0

现在您可以在节点之间通信:

$ ping 2001:db8::2
PING 2001:db8::2(2001:db8::2) 56 data bytes
64 bytes from 2001:db8::2: icmp_seq=1 ttl=64 time=1.20 ms
64 bytes from 2001:db8::2: icmp_seq=2 ttl=64 time=1.14 ms
64 bytes from 2001:db8::2: icmp_seq=3 ttl=64 time=1.24 ms
^C
--- 2001:db8::2 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 1.136/1.193/1.239/0.042 ms

如果您暂时失去网络连接,网络拓扑发生变化等,它将自动重新连接。您还可以使用其Go API将该实用工具嵌入到您自己的应用程序中。

8. 使用 wrtcconn 编写您自己的协议

使用weron构建您自己的分布式应用几乎是微不足道的类似于PeerJS的工作方式。以下是简单回显示例背后的核心逻辑:

// ...
for {
	select {
	case id := <-ids:
		log.Println("Connected to signaler", id)
	case peer := <-adapter.Accept():
		log.Println("Connected to peer", peer.PeerID, "and channel", peer.ChannelID)

		go func() {
			defer func() {
				log.Println("Disconnected from peer", peer.PeerID, "and channel", peer.ChannelID)
			}()

			reader := bufio.NewScanner(peer.Conn)
			for reader.Scan() {
				log.Printf("%s", reader.Bytes())
			}
		}()

		go func() {
			for {
				if _, err := peer.Conn.Write([]byte("Hello!\n")); err != nil {
					return
				}

				time.Sleep(time.Second)
			}
		}()
	}
}

您可以使用最小适配器命名适配器;后者在节点之间协商用户名,而前者不检查重复项。有关更多信息,请查看Go API并查看包中提供的示例、实用工具和服务以获取示例。

🚀 就是这样! 我们希望您喜欢使用weron。

Reference

Library API

  • Go Reference

Command Line Arguments

$ weron --help
基于WebRTC的覆盖网络。

在以下网址查找更多信息:
https://github.com/pojntfx/weron

用法:
  weron [command]

可用命令:
  chat        通过覆盖网络聊天
  completion  为指定的shell生成自动完成脚本
  help        关于任何命令的帮助
  manager     管理信令服务器
  signaler    启动信令服务器
  utility     覆盖网络的实用工具
  vpn         加入建立在覆盖网络上的虚拟专用网络

标志:
  -h, --help          weron的帮助
  -v, --verbose int   详细程度级别0为禁用默认为info7为trace默认为5

使用 "weron [command] --help" 获取有关命令的更多信息。
展开子命令参考

Signaling Server

$ weron signaler --help
启动信令服务器

用法:
  weron signaler [flags]

别名:
  signaler, sgl, s

标志:
      --api-password string     管理API的密码也可以使用API_PASSWORD环境变量设置。如果设置了任何OIDC参数则忽略此项。
      --api-username string     管理API的用户名也可以使用API_USERNAME环境变量设置。如果设置了任何OIDC参数则忽略此项。默认为"admin"
      --cleanup                 (警告:仅在停止所有其他访问数据库的服务器后启用此项!)在启动前从数据库中删除所有临时社区并重置客户端计数
      --ephemeral-communities    启用临时社区的创建默认为true
      --heartbeat duration      等待心跳的时间默认为10s
  -h, --help                    signaler的帮助
      --laddr string            监听地址也可以使用PORT环境变量设置默认为":1337"
      --oidc-client-id string   OIDC客户端ID例如myoidcclientid也可以使用OIDC_CLIENT_ID环境变量设置
      --oidc-issuer string      OIDC颁发者例如https://pojntfx.eu.auth0.com/也可以使用OIDC_ISSUER环境变量设置
      --postgres-url string     要使用的PostgreSQL数据库的URL例如postgres://myuser:mypassword@myhost:myport/mydatabase也可以使用DATABASE_URL环境变量设置。如果为空将使用内存数据库。

全局标志:
  -v, --verbose int   详细程度级别0为禁用默认为info7为trace默认为5

Manager

$ weron manager --help
管理信令服务器

用法:
  weron manager [command]

别名:
  manager, mgr, m

可用命令:
  create      创建持久性社区
  delete      删除持久性或临时社区
  list        列出持久性和临时社区

标志:
  -h, --help   manager的帮助

全局标志:
  -v, --verbose int   详细程度级别0为禁用默认为info7为trace默认为5

使用 "weron manager [command] --help" 获取有关命令的更多信息。

Chat

$ weron chat --help
通过覆盖网络聊天

用法:
  weron chat [flags]

别名:
  chat, cht, c

标志:
      --channels strings    要加入的社区中的频道的逗号分隔列表(默认为[weron/chat/primary]
      --community string    要加入的社区的ID
      --force-relay         强制使用TURN服务器
  -h, --help                chat的帮助
      --ice strings         STUN服务器格式为stun:host:port和TURN服务器格式为username:credential@turn:host:port例如username:credential@turn:global.turn.twilio.com:3478?transport=tcp的逗号分隔列表默认为[stun:stun.l.google.com:19302]
      --id-channel string   用于协商名称的频道(默认为"weron/chat/id"
      --key string          社区的加密密钥
      --kicks duration      等待踢出的时间默认为5s
      --names strings       尝试并从中声明一个名称的逗号分隔列表
      --password string     社区的密码
      --raddr string        远程地址(默认为"wss://weron.up.railway.app/"
      --timeout duration    等待连接的时间默认为10s

全局标志:
  -v, --verbose int   详细程度级别0为禁用默认为info7为trace默认为5

Latency Measurement Utility

$ weron utility latency --help
测量覆盖网络的延迟

用法:
  weron utility latency [flags]

别名:
  latency, ltc, l

标志:
      --community string    要加入的社区的ID
      --force-relay         强制使用TURN服务器
  -h, --help                latency的帮助
      --ice strings         STUN服务器格式为stun:host:port和TURN服务器格式为username:credential@turn:host:port例如username:credential@turn:global.turn.twilio.com:3478?transport=tcp的逗号分隔列表默认为[stun:stun.l.google.com:19302]
      --key string          社区的加密密钥
      --packet-length int   要发送和确认的数据包大小默认为128
      --password string     社区的密码
      --pause duration      发送下一个数据包前等待的时间默认为1s
      --raddr string        远程地址(默认为"wss://weron.up.railway.app/"
      --server              作为服务器
      --timeout duration    等待连接的时间默认为10s

全局标志:
  -v, --verbose int   详细程度级别0为禁用默认为info7为trace默认为5

Throughput Measurement Utility

$ weron utility throughput --help
测量覆盖网络的吞吐量

用法:
  weron utility throughput [flags]

别名:
  throughput, thr, t

标志:
      --community string    要加入的社区的ID
      --force-relay         强制使用TURN服务器
  -h, --help                throughput的帮助
      --ice strings         STUN服务器格式为stun:host:port和TURN服务器格式为username:credential@turn:host:port例如username:credential@turn:global.turn.twilio.com:3478?transport=tcp的逗号分隔列表默认为[stun:stun.l.google.com:19302]
      --key string          社区的加密密钥
      --packet-count int    在等待确认前发送的数据包数量默认为1000
      --packet-length int   要发送的数据包大小默认为50000
      --password string     社区的密码
      --raddr string        远程地址(默认为"wss://weron.up.railway.app/"
      --server              作为服务器
      --timeout duration    等待连接的时间默认为10s

全局标志:
  -v, --verbose int   详细程度级别0为禁用默认为info7为trace默认为5

Layer 3 (IP) Overlay Networks

$ weron vpn ip --help
加入第3层覆盖网络

用法:
  weron vpn ip [flags]

别名:
  ip, i

标志:
      --community string    要加入的社区的ID
      --dev string          给TUN设备的名称例如weron0默认自动生成仅在Linux上支持
      --force-relay         强制使用TURN服务器
  -h, --help                ip的帮助
      --ice strings         STUN服务器格式为stun:host:port和TURN服务器格式为username:credential@turn:host:port例如username:credential@turn:global.turn.twilio.com:3478?transport=tcp的逗号分隔列表默认为[stun:stun.l.google.com:19302]
      --id-channel string   用于协商名称的频道(默认为"weron/ip/id"
      --ips strings         要从中声明IP地址并给TUN设备的IP网络的逗号分隔列表例如2001:db8::1/32,192.0.2.1/24在Windows上只支持一个IP网络IPv4或IPv6在macOS上IPv4网络被忽略
      --key string          社区的加密密钥
      --kicks duration      等待踢出的时间默认为5s
      --max-retries int     尝试声明IP地址的最大次数默认为200
      --parallel int        用于解码帧的线程数量默认为20
      --password string     社区的密码
      --raddr string        远程地址(默认为"wss://weron.up.railway.app/"
      --static              尝试静态地声明--ips标志中指定的确切IP而不是从指定网络中选择随机IP
      --timeout duration    等待连接的时间默认为10s

全局标志:
  -v, --verbose int   详细程度级别0为禁用默认为info7为trace默认为5

Layer 2 (Ethernet) Overlay Networks

$ weron vpn ethernet --help
加入第2层覆盖网络

用法:
  weron vpn ethernet [flags]

别名:
  ethernet, eth, e

标志:
      --community string   要加入的社区的ID
      --dev string         给TAP设备的名称例如weron0默认自动生成仅在Linux和macOS上支持
      --force-relay        强制使用TURN服务器
  -h, --help               ethernet的帮助
      --ice strings        STUN服务器格式为stun:host:port和TURN服务器格式为username:credential@turn:host:port例如username:credential@turn:global.turn.twilio.com:3478?transport=tcp的逗号分隔列表默认为[stun:stun.l.google.com:19302]
      --key string         社区的加密密钥
      --mac string         给TAP设备的MAC地址例如3a:f8:de:7b:ef:52默认自动生成仅在Linux上支持
      --parallel int       用于解码帧的线程数量默认为20
      --password string    社区的密码
      --raddr string       远程地址(默认为"wss://weron.up.railway.app/"
      --timeout duration   等待连接的时间默认为10s

全局标志:
  -v, --verbose int   详细程度级别0为禁用默认为info7为trace默认为5

Environment Variables

上面描述的所有命令行参数也可以使用环境变量设置;例如,要使用环境变量将--max-retries设置为300,使用WERON_MAX_RETRIES=300

Acknowledgements

Contributing

要贡献,请使用GitHub流并遵循我们的行为准则

要在本地构建和启动weron的开发版本请运行以下命令

$ git clone https://github.com/pojntfx/weron.git
$ cd weron
$ make depend
$ make && sudo make install
$ weron signaler # 启动信令服务器
# 在另一个终端
$ weron chat --raddr ws://localhost:1337 --community mycommunity --password mypassword --key mykey --names user1,user2,user3 --channels one,two,three
# 在另一个终端
$ weron chat --raddr ws://localhost:1337 --community mycommunity --password mypassword --key mykey --names user1,user2,user3 --channels one,two,three

有任何问题或需要帮助?在Matrix上与我们聊天!

License

weron (c) 2024 Felicitas Pojtinger and contributors

SPDX-License-Identifier: AGPL-3.0

Description
No description provided
Readme AGPL-3.0 1.3 MiB
Languages
Go 97.2%
Makefile 2.3%
Shell 0.3%
Dockerfile 0.2%