Wireguard 客户端并将 VPN 流量重定向到 ETH

Wireguard 客户端并将 VPN 流量重定向到 ETH

我有一个项目,使用 wireguard 和两个 Raspberry Pi 4 创建站点到站点 VPN

站点 A- UniFi UDM PRO - Raspberry Pi WG 服务器 ------ 站点 B UDM PRO Raspberry Pi WG 客户端。

Pi 只有一个 NIC,但我认为这对于服务器来说不是问题,对于客户端,我购买了一个额外的 NIC(通过 Pi 的 HAT)。

我可以重定向 VPN 连接(完整隧道)吗,这样如果客户端连接 Raspberry Pi 的第二个以太网端口,则仅接收 WG VPN 连接(和来自站点 A 的 IP)?

答案1

当连接到 Linux 机器上的 Wireguard 服务器时,将启动一个新的网络接口,所有流量都会通过它转发。

通常,要将两个接口连接在一起,您只需轻松设置一个桥并将两个接口连接到它即可。

但是,网桥在 OSI 第 2 层工作(转发指向目标 MAC 地址的帧),而 Wireguard 是第 3 层协议(转发带有目标 IP 地址的 IP 数据包)(更多信息)。

因此,您无法将运行在 L3 上的接口与网桥连接起来。因此,您有以下几种选择:

  1. 使用第 2 层 VPN 隧道(如 L2TP+IPSec),但会带来配置麻烦。
  2. 将 Raspberry Pi 设置为 Socks 代理,将流量隧道传输到 Wireguard,并将完整的互联网连接桥接到连接的设备。这意味着流量不会默认通过 VPN,这很可能不是您想要的。
  3. 将 Raspberry Pi 设置为网关路由器并将 IP 数据包转发到 VPN:

为了实现这一点,您需要以下内容:

  • 在客户端 Pi 上启用数据包转发(设置net.ipv4.ip_forward=1/etc/sysctl.conf使用sysctl -p
  • 在客户端 Pi 的两个接口之间设置 NAT。这会将数据包从您的 WG 子网转发10.0.0.0/24到您的 Raspberry Pi 将负责的新子网,并在 DHCP 服务器中设置(即10.10.0.0/24)。有多种方法可以配置这一点,但在 2022 年使用 Ubuntu 时,您应该网络计划尝试一下,它允许您使用 YAML 文件直观地配置所有这些网络。有一个例子Netplan 的网站上正是实现了这一点。
  • 将树莓派设置为 DHCP 服务器(这样 IP 配置是自动的,没有手动配置的设备也会转发流量):设置option routers yourRaspberryPisWireguardIP;/etc/dhcp/dhcpd.conf选择一个新的子网来为客户端分配 IP 地址。指导。你应该准备isc-dhcp-server好和 玩得开心Netplan。这askubuntu 答案就是这样的。
  • 请记住,使用 Netplan 可能会覆盖您的 Wg-Quick 网络设置,但那没问题。只需添加你的 WG 客户端配置在该部分中的同一个 Netplan 文件上tunnels:
  • 您可能需要在 Raspberry Pi 上设置一个指向 WG 服务器 DNS 的 DNS 服务器,以避免泄漏。

您可能已经猜到了,使用最后一种方法,由于 NAT,连接到您的 Raspberry 的所有客户端似乎都来自同一个客户端 IP(您的 Raspberry)。您可能能够更改这一点(Wireguard 的服务器配置AllowedIPs可以设置为一个范围,但我不确定如何具体实现这一点。


总结: 使用 Netplan 配置 wg 客户端隧道。 设置使用 Netplan 进行 NAT在 WG 客户端接口和您计划让客户端使用的辅助以太网 iface 之间。设置DHCP 服务器在您的 pi 上为您的客户端设置一个单独的子网。本质上,构建你自己的路由器

相关内容