通过Wireguard让子节点使用主节点的IPv4/IPv6出站NAT
本文将简单阐述 WireGuard 子节点通过主节点出站 NAT 的配置方法。
背景介绍
在 WJQserver Studio 所拥有的VPS中, IPv4/IPv6单栈的VPS均有分布, 这使得有些情况下需要为这些VPS进行特殊配备, 这过于复杂, 因此, 我们需要一种简单的方法来实现子节点通过主节点的出站 NAT。 而在此之前, 我们已经在这些VPS之间使用 WireGuard 进行了加密组网, 最初是为了提升通讯与回源安全性, 而WireGuard经过一些配置后, 就可以实现子节点通过主节点的网络环境进行出站。
在使用 WireGuard 进行网络配置时,主节点和子节点之间的网络连接至关重要。特别是在需要通过主节点进行 NAT(网络地址转换)出站时,正确配置防火墙规则是确保网络流量正常转发的关键。本文将详细介绍如何使用 PostUp
和 PostDown
指令来实现 WireGuard 子节点通过主节点出站 NAT 的配置。
前言
为了使您更好地理解本文所述内容,您最好已阅读或了解以下内容:
- WireGuard 基本结构
- WireGuard 入门
- Linux 基础操作
进行配置
在 WireGuard 入门 中,我们已经介绍了 WireGuard 的基本配置方法。下面,我们将详细介绍如何配置 WireGuard 子节点通过主节点的出站 NAT。
我们需要在主节点的 WireGuard 配置文件中添加 PostUp
和 PostDown
指令, 以实现对防火墙的自动化修改。
主节点配置
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地址与路由。