WireGuard 和 Xray 都是现代的VPN技术,可用于加密和保护网络通信。WireGuard是一种轻量级的VPN协议,提供更快的性能和更好的安全性。Xray是一个高级网络代理工具,支持多种协议,包括VMess、Shadowsocks、Socks等。
WireGuard和Xray的关键区别:
- 性能:WireGuard比Xray更快,因为它使用UDP协议而不是TCP协议。这意味着WireGuard可以更快地传输数据包,并且可以在高延迟和低带宽条件下提供更好的性能。
- 安全性: WireGuard通过加密所有通信数据来确保安全性,并使用最新的加密算法(ChaCha20和Poly1305)来保护数据。 Xray同样提供强大的加密,但它没有像WG那样专注于安全性。
- 可靠性: WireGuard是一个相对较新的协议,仍处于发展阶段,尚未广泛采用。 Xray则更成熟并已被广泛使用。
- 支持: WireGuard目前需要安装额外的内核模块才能实现,这可能会限制其在某些系统上的使用。 Xray支持多种协议,包括VLESS、VMess、Shadowsocks、Socks等。
总之,WireGuard和Xray都是很好的VPN技术,并且可以根据应用场景选择适合您的技术。如此将二者结合岂不美哉。
需求
两台国内外机器互联,为解决WireGuard在高峰期udp干扰、阻断、延迟高的问题。
实现
准备两台的机器(以外贸公司或者跨国企业为例,一台国内一台国外)
- 机器 A,公网 IP:
100.100.100.100
,分配内网 IP:10.10.0.1
- 机器 B,公网 IP:
200.200.200.200
,分配内网 IP:10.10.1.1
VLESS配置
首先在机器 B 上建立 VLESS 入站,在 200.200.200.200
的 9527
端口 上接收 VLESS TCP 流量。
{ "log": { "loglevel": "error" }, "dns": { "servers": [ "1.1.1.1", "8.8.8.8", "8.8.4.4" ] }, "inbounds": [//入站 { "listen": "0.0.0.0", "port": 9527, "protocol": "vless", "settings": { "clients": [ { "id": "d4a23188-85b0-4b46-b84b-f1d36d66c03e" } ], "decryption": "none" }, "streamSettings": { "network": "tcp" //tcp协议 } } ], "outbounds": [//出站 { "protocol": "freedom", "settings": { "domainStrategy": "UseIP" }, "tag": "free" } ], "routing": {//路由 "rules": [] } }
然后在机器 A 上建立 VLESS 出站,入站使用 dokodemo-door
协议,添加一个 UDP 转发,监听 A 上的 10000 端口的 UDP 流量,将该流量通过 VLESS 出站,转发到的 127.0.0.1:10000 上。
{ "log": { "loglevel": "error" }, "inbounds": [//入站 { "listen": "127.0.0.1", "port": 10000, "protocol": "dokodemo-door", "settings": { "address": "127.0.0.1", "port": 10000, "network": "udp" }, "tag": "wg" } ], "outbounds": [//出站 { "protocol": "vless", "settings": { "vnext": [ { "address": "200.200.200.200", "port": 9527, "users": [ { "id": "d4a23188-85b0-4b46-b84b-f1d36d66c03e", "encryption": "none" } ] } ] }, "streamSettings": { "network": "tcp" }, "tag": "vless-tunnel" } ], "routing": { "rules": [ { "type": "field", "inboundTag": [ "wg" ], "outboundTag": "vless-tunnel" } ] } }
至此,就可以将流向机器 A 127.0.0.1:10000
的 UDP 流量,经由 VLESS 隧道,转发到机器 B 的 127.0.0.1:10000
上。
WireGuard配置
在机器 A 上,添加一个 Interface,设置 Endpoint 为 127.0.0.1:10000
,流入 VLESS 的入站。
[Interface] Address = 10.10.0.1/28 DNS = 8.8.8.8 PrivateKey = # 私钥 ListenPort = 9527 MTU = 1420 [Peer] PublicKey = # 机器 B 的公钥 AllowedIPs = 10.10.1.1/28 Endpoint = 127.0.0.1:10000 PersistentKeepalive = 27
在机器 B 上,也添加 Interface,监听在 10000 端口,接收 VLESS 转发过来的流量。
[Interface] Address = 10.10.1.1/28 ListenPort = 10000 PrivateKey = # 私钥 MTU = 1420 [Peer] PublicKey = # 机器 A 的公钥 AllowedIPs = 10.10.0.1/28
如此便配置完成了,之后测试是否可以连通即可。
如需修改出站入站 streamSettings
配置可参考以下链接:
本文作者为Mr.Bai,转载请注明。
请问,这些代码要怎么使用呢?非常感谢!我希望A的流量,都能转发到B,B通过其外网IP转发出去。具体应该怎么做呢?
@Jason在A上设置AllowedIPs为0.0.0.0/0,表示所有流量都转发