AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1039440
Accepted
TRW
TRW
Asked: 2020-10-21 06:24:20 +0800 CST2020-10-21 06:24:20 +0800 CST 2020-10-21 06:24:20 +0800 CST

从 wg1 到 wg0 的 Wireguard 路由

  • 772

我有两个使用 Wireguard 配置的网络。wg0 用于服务器,wg1 用于 VPN 用户。当 wg1 上的 VPN 用户想要访问 wg0 网络时,数据包应该是经过 wg0 服务器之一(VPN 网关)的路由器。

VPN 网关和所有具有 wg0 接口的服务器上的 wg0.conf

[Interface]
Address = 10.1.0.15
ListenPort = 51820
PrivateKey = privatekey1

# node23
[Peer]
PublicKey = pubkey
AllowedIps = 10.1.0.23
Endpoint = node23.fqdn:51820

# node24
[Peer]
PublicKey = pubkey
AllowedIps = 10.1.0.24
Endpoint = node24:51820

# node25
[Peer]
PublicKey = pubkey
AllowedIps = 10.1.0.25
Endpoint = node25.fqdn:51820
...

VPN 网关上的 wg1.conf

[Interface]
Address = 10.100.0.1/32
ListenPort = 51810
PrivateKey = privatekey2

PostUp   = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

# user1    [Peer]
PublicKey = pubkey
AllowedIps =  10.100.0.2/32
...

这是用户 wg1.conf(实际上是 wg0,因为他们没有 10.1.0.0 地址)

[Interface]
Address = 10.100.0.2/32
ListenPort = 21841
PrivateKey = myprivatekey

[Peer]
PublicKey = pubkey
EndPoint = vpngate.fqdn:51810
AllowedIPs = 0.0.0.0/0

PersistentKeepalive = 25

因此,我可以在 VPN 网关本身上运行curl -v http://10.1.0.23/,并且在 wg0 网络中得到响应。平工作到。我可以访问网络内的所有服务器。wg1-client 和 wg1-server 也是如此。我也可以通过 VPN 网关浏览互联网。但是,当我尝试从我的 wg1-client 调用 wg0-server 时curl -v http://10.1.0.23/,应该是路由(我认为)通过 vpn-gate 并从那里通过 wg1 -> wg0 没有响应。

我想念什么?

wireguard
  • 1 1 个回答
  • 1106 Views

1 个回答

  • Voted
  1. Best Answer
    A.B
    2020-10-21T11:19:11+08:002020-10-21T11:19:11+08:00

    通过阅读 WireGuard 的Cryptokey Routing解释:

    在服务器配置中,每个对等点(客户端)将能够将数据包发送到网络接口,其源 IP 与相应的允许 IP 列表匹配。例如,当服务器从对等体gN65BkIK...接收到一个数据包时,经过解密和认证后,如果它的源IP是10.10.10.230,则允许它进入接口;否则它会被丢弃。

    =>传入地址必须AllowedIPs与 Peers 中定义的加密密钥相关联并允许。

    在服务器配置中,当网络接口想要向对等方(客户端)发送数据包时,它会查看该数据包的目标 IP,并将其与每个对等方的允许 IP 列表进行比较,以查看将其发送到哪个对等方。例如,如果要求网络接口发送目标 IP 为 10.10.10.230 的数据包,它将使用对等方 gN65BkIK... 的公钥对其进行加密,然后将其发送到该对等方最近的 Internet 端点。

    => 同样,传出地址必须在其中,AllowedIPs以便可以选择正确的加密密钥及其对等当前远程端点。

    当客户端运行curl -v http://10.1.0.23/时,传出的数据包会:

    10.100.0.2  ----> ✔ 10.100.0.1 ==> 10.1.0.1  ----> ❌ 10.1.0.23
            wg0       wg1                    wg0       wg0
    client                     gateway                   server
    

    10.100.0.2 不在网关 Peer 条目的服务器 wg0 中,因此数据包被丢弃。AllowedIPs

    同样,如果服务器尝试访问客户端(其路由已正确配置为使用wg0),它将找不到与目标地址匹配的 Peer,因此在发送时会收到错误(错误,作为网络返回的错误系统调用,可能特定于 WireGuard:(ENOKEY必需的密钥不可用))。

    因此,如果客户端都在 10.100.0.0/24 中,则它们必须出现在网关的 Peer 部分的每个服务器的配置中,在AllowedIPs条目中。因此,如果网关的地址是 10.1.0.1(在 OP 中找不到此信息),则服务器都应包含类似于以下内容的内容:

    # gateway
    [Peer]
    PublicKey = pubkey
    AllowedIPs = 10.1.0.1,10.100.0.0/24
    Endpoint = vpngate.fqdn:51820
    

    反向不会有问题,因为客户端配置为将wg0上收到的任何IP关联到网关。

    网关本身不必更改任何配置。

    • 1

相关问题

  • 无法通过 Google Compute Engine VM 上的 systemd-networkd 配置 Wireguard 设备

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve