通过Wireguard让子节点使用主节点的IPv4/IPv6出站NAT

本文将简单阐述 WireGuard 子节点通过主节点出站 NAT 的配置方法。

背景介绍

在 WJQserver Studio 所拥有的VPS中, IPv4/IPv6单栈的VPS均有分布, 这使得有些情况下需要为这些VPS进行特殊配备, 这过于复杂, 因此, 我们需要一种简单的方法来实现子节点通过主节点的出站 NAT。 而在此之前, 我们已经在这些VPS之间使用 WireGuard 进行了加密组网, 最初是为了提升通讯与回源安全性, 而WireGuard经过一些配置后, 就可以实现子节点通过主节点的网络环境进行出站。

在使用 WireGuard 进行网络配置时,主节点和子节点之间的网络连接至关重要。特别是在需要通过主节点进行 NAT(网络地址转换)出站时,正确配置防火墙规则是确保网络流量正常转发的关键。本文将详细介绍如何使用 PostUpPostDown 指令来实现 WireGuard 子节点通过主节点出站 NAT 的配置。

前言

为了使您更好地理解本文所述内容,您最好已阅读或了解以下内容:

进行配置

WireGuard 入门 中,我们已经介绍了 WireGuard 的基本配置方法。下面,我们将详细介绍如何配置 WireGuard 子节点通过主节点的出站 NAT。

我们需要在主节点的 WireGuard 配置文件中添加 PostUpPostDown 指令, 以实现对防火墙的自动化修改。

主节点配置

PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE; ip6tables -A FORWARD -i %i -j ACCEPT; ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE; ip6tables -D FORWARD -i %i -j ACCEPT; ip6tables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
  • PostUp 指令在对应网卡启动时执行,用于配置防火墙规则。
  • %i wg网卡占位符, WireGuard 会自动补齐为当前配置对应的网卡。
  • iptables -A FORWARD -i %i -j ACCEPT 允许来自 wg 网卡的流量被转发。
  • iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE 对通过 eth0 网卡发送的流量进行地址伪装。
  • ip6tables -A FORWARD -i %i -j ACCEPT 允许来自 wg 网卡的 IPv6 流量被转发。
  • ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE 对通过 eth0 网卡发送的 IPv6 流量进行地址伪装。

子节点配置

若子节点需要获取IPv6出站地址, 在配置内的AllowedIPs中添加::/0即可。一般情况下, Wireguard会自动添加IPV6地址与路由。