使用动态 WAN 地址(/128 和 /56)到 LAN 的 IPv6 NPTv6 ip6tables 路由工作示例

使用动态 WAN 地址(/128 和 /56)到 LAN 的 IPv6 NPTv6 ip6tables 路由工作示例

我目前正在为家庭实验室路由器使用 iptables,并想添加 IPv6。我有 2 个 ISP。

我的第一个 ISP 为接口分配了 /128,并具有请求 /56 的能力。ISP1 连接到 eno1。

我的第二个 ISP 为接口分配了 /128,并具有请求 /64 的能力。ISP2 连接到 eno2。

我的局域网是 enp2s0f0。

如何让 LAN 上的客户端使用 ULA IP 范围,该范围“映射”到动态分配给 eno1 和 eno2 的 IPv6 范围?我想我可以在边缘使用某种形式的策略路由来通过每个 ISP 路由流量

答案1

我没有完整的示例,因为“netmap”是最近才添加到 ntftables 中的。内核部分,“netfilter:nft_nat:添加 netmap 支持”,位于Linux 5.8。用户工具同样是去年推出的新产品, src:添加 netmap 支持。根据提交消息,我认为 snat 现在支持带有 CIDR 前缀的 saddr 映射。

这可能更简单,而且无需转换,速度会稍微快一点。考虑不要使用 NPT。通告两个前缀,主机都有来自每个前缀的地址。可选地,为内部静态寻址生成一个 ULA 前缀,但不要将其映射到公共前缀。

这是一个实验室,也许可以尝试使用或不使用 NPT。

答案2

我能够让它与 iptables 一起工作。

cat /etc/radvd.conf 接口 enp2s0f0 {

    AdvSendAdvert on;
    AdvManagedFlag on;

    prefix fd8a:9ae9:9as8:b8d::1/64 {
    };

    RDNSS fd8a:9ae9:9as8:b8d::1
    {
    };

    DNSSL home.example.com
    {
    };

};

在我的 dhcpcd.conf 文件中

interface enp2s0f0
        static ip_address=10.1.0.1/16
        static routers=10.1.0.1
        static domain_name_servers=8.8.8.8 8.8.4.4
    noipv6rs
 
interface eno1
    metric 10
    ipv6rs
    ia_na 1
    ia_pd 1/::/64 enp2s0f0/0/64

在我的 iptables 脚本中:

$IP6TABLES -t nat -A POSTROUTING -s fd8a:9ae9:9as8:b8d::1/64 -o eno1 -j NETMAP --to 2604:2000:3201:d991::1/64
$IP6TABLES -t nat -A PREROUTING -d 2604:2000:3201:d991::1/64 -i eno1 -j NETMAP --to fd8a:9ae9:9as8:b8d::1/64

我认为我做得对——一切似乎都正常。

相关内容