WireGuard Over Xray(VLESS)

Mr.Bai 2,199 浏览 2

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干扰、阻断、延迟高的问题。

实现

准备两台的机器(以外贸公司或者跨国企业为例,一台国内一台国外)

  1. 机器 A,公网 IP: 100.100.100.100,分配内网 IP: 10.10.0.1
  2. 机器 B,公网 IP: 200.200.200.200,分配内网 IP: 10.10.1.1

VLESS配置

首先在机器 B 上建立 VLESS 入站,在 200.200.200.200 9527 端口 上接收 VLESS TCP 流量。

Source Code
  1. {
  2. "log": {
  3. "loglevel": "error"
  4. },
  5. "dns": {
  6. "servers": [
  7. "1.1.1.1",
  8. "8.8.8.8",
  9. "8.8.4.4"
  10. ]
  11. },
  12. "inbounds": [//入站
  13. {
  14. "listen": "0.0.0.0",
  15. "port": 9527,
  16. "protocol": "vless",
  17. "settings": {
  18. "clients": [
  19. {
  20. "id": "d4a23188-85b0-4b46-b84b-f1d36d66c03e"
  21. }
  22. ],
  23. "decryption": "none"
  24. },
  25. "streamSettings": {
  26. "network": "tcp" //tcp协议
  27. }
  28. }
  29. ],
  30. "outbounds": [//出站
  31. {
  32. "protocol": "freedom",
  33. "settings": {
  34. "domainStrategy": "UseIP"
  35. },
  36. "tag": "free"
  37. }
  38. ],
  39. "routing": {//路由
  40. "rules": []
  41. }
  42. }
复制 文本 高亮

然后在机器 A 上建立 VLESS 出站,入站使用 dokodemo-door 协议,添加一个 UDP 转发,监听 A 上的 10000 端口的 UDP 流量,将该流量通过 VLESS 出站,转发到的 127.0.0.1:10000 上。

Source Code
  1. {
  2. "log": {
  3. "loglevel": "error"
  4. },
  5. "inbounds": [//入站
  6. {
  7. "listen": "127.0.0.1",
  8. "port": 10000,
  9. "protocol": "dokodemo-door",
  10. "settings": {
  11. "address": "127.0.0.1",
  12. "port": 10000,
  13. "network": "udp"
  14. },
  15. "tag": "wg"
  16. }
  17. ],
  18. "outbounds": [//出站
  19. {
  20. "protocol": "vless",
  21. "settings": {
  22. "vnext": [
  23. {
  24. "address": "200.200.200.200",
  25. "port": 9527,
  26. "users": [
  27. {
  28. "id": "d4a23188-85b0-4b46-b84b-f1d36d66c03e",
  29. "encryption": "none"
  30. }
  31. ]
  32. }
  33. ]
  34. },
  35. "streamSettings": {
  36. "network": "tcp"
  37. },
  38. "tag": "vless-tunnel"
  39. }
  40. ],
  41. "routing": {
  42. "rules": [
  43. {
  44. "type": "field",
  45. "inboundTag": [
  46. "wg"
  47. ],
  48. "outboundTag": "vless-tunnel"
  49. }
  50. ]
  51. }
  52. }
复制 文本 高亮

至此,就可以将流向机器 A 127.0.0.1:10000 的 UDP 流量,经由 VLESS 隧道,转发到机器 B 的 127.0.0.1:10000 上。

WireGuard配置

在机器 A 上,添加一个 Interface,设置 Endpoint 为 127.0.0.1:10000,流入 VLESS 的入站。

Source Code
  1. [Interface]
  2. Address = 10.10.0.1/28
  3. DNS = 8.8.8.8
  4. PrivateKey = # 私钥
  5. ListenPort = 9527
  6. MTU = 1420
  7.  
  8. [Peer]
  9. PublicKey = # 机器 B 的公钥
  10. AllowedIPs = 10.10.1.1/28
  11. Endpoint = 127.0.0.1:10000
  12. PersistentKeepalive = 27
复制 文本 高亮

在机器 B 上,也添加 Interface,监听在 10000 端口,接收 VLESS 转发过来的流量。

Source Code
  1. [Interface]
  2. Address = 10.10.1.1/28
  3. ListenPort = 10000
  4. PrivateKey = # 私钥
  5. MTU = 1420
  6.  
  7. [Peer]
  8. PublicKey = # 机器 A 的公钥
  9. AllowedIPs = 10.10.0.1/28
复制 文本 高亮

如此便配置完成了,之后测试是否可以连通即可。
如需修改出站入站 streamSettings 配置可参考以下链接:

发表评论 取消回复
表情 图片 链接 代码

  1. Jason
    Jason Lv 1

    请问,这些代码要怎么使用呢?非常感谢!我希望A的流量,都能转发到B,B通过其外网IP转发出去。具体应该怎么做呢?

    • Mr.Bai
      Mr.Bai 站长

      @Jason在A上设置AllowedIPs为0.0.0.0/0,表示所有流量都转发

分享