🧠WireGuard 多网段互通+FRR

  • WireGuard 多网段互通
  • 动态路由(FRR / BGP)
  • 零信任访问控制(ACL)

    🧠 总体架构(企业级模型)

    ┌──────────────┐
    │ B(核心节点)│
    │ WireGuard + FRR│
    └──────┬───────┘

    ┌──────────────┼──────────────┐
    │ │ │
    A(分支1) C(分支2) D(分支3)
    192.168.10.0 192.168.20.0 192.168.30.0

    🎯 目标

    ✔ 各分支互通
    ✔ 自动学习路由(不用手工加)
    ✔ 精细访问控制(零信任)

    🚀 第一阶段:WireGuard 多网段互通


    📌 关键设计

    👉 不再写死 AllowedIPs = 全网段

    而是:

    WireGuard 只负责“隧道”
    FRR 负责“路由”

    🔧 B(核心节点)

    [Interface]
    Address = 10.0.0.1/24
    ListenPort = 51820
    PrivateKey = <B私钥>

    # A
    [Peer]
    PublicKey = <A公钥>
    AllowedIPs = 10.0.0.2/32

    # C
    [Peer]
    PublicKey = <C公钥>
    AllowedIPs = 10.0.0.3/32


    🔧 A(分支1)

    [Interface]
    Address = 10.0.0.2/24
    PrivateKey = <A私钥>

    [Peer]
    PublicKey = <B公钥>
    Endpoint = B_IP:51820

    # 只允许隧道IP
    AllowedIPs = 10.0.0.0/24
    PersistentKeepalive = 25


    👉 注意:

    ❗ 不再写 192.168.x.x 网段

    🎯 此时状态

    • 隧道通了 ✅
    • 但各网段还不通 ❌

    👉 下一步交给 FRR


    🧠 第二阶段:FRR 动态路由(核心)


    📌 安装 FRR

    dnf install -y frr

    🔧 开启服务

    systemctl enable frr
    systemctl start frr

    🔧 配置 B(核心路由)

    编辑:

    /etc/frr/frr.conf

    ✳️ B 节点配置(BGP)

    router bgp 65000
    bgp router-id 10.0.0.1

    neighbor 10.0.0.2 remote-as 65001
    neighbor 10.0.0.3 remote-as 65002

    address-family ipv4 unicast
    neighbor 10.0.0.2 activate
    neighbor 10.0.0.3 activate
    exit-address-family


    🔧 A 节点配置

    router bgp 65001
    bgp router-id 10.0.0.2

    neighbor 10.0.0.1 remote-as 65000

    address-family ipv4 unicast
    network 192.168.10.0/24
    exit-address-family


    🔧 C 节点配置

    router bgp 65002
    bgp router-id 10.0.0.3

    neighbor 10.0.0.1 remote-as 65000

    address-family ipv4 unicast
    network 192.168.20.0/24
    exit-address-family


    🎯 结果

    A 学到:192.168.20.0/24
    C 学到:192.168.10.0/24

    👉 自动完成


    🔥 第三阶段:零信任 ACL(重点)


    📌 思路

    👉 不靠 WireGuard 控制访问
    👉 用 iptables / nftables + FRR 策略


    🔧 示例:限制 A 不能访问 C 的某服务器

    在 B 上:

    iptables -A FORWARD -s 192.168.10.0/24 -d 192.168.20.100 -j DROP

    🔧 精细控制(推荐)

    ✔ 只允许某端口

    iptables -A FORWARD -s 192.168.10.0/24 -d 192.168.20.0/24 -p tcp --dport 443 -j ACCEPT
    iptables -A FORWARD -s 192.168.10.0/24 -d 192.168.20.0/24 -j DROP

    🔧 高级:基于 FRR 路由控制

    可以做:

    • route-map
    • prefix-list

    例如:

    ip prefix-list BLOCK seq 5 deny 192.168.20.0/24

    👉 控制“是否传播路由”


    🧩 企业级增强(建议你后面做)


    ✔ 1️⃣ 双核心(高可用)

    B1(主) + B2(备)
    • keepalived(VIP)
    • 或 BGP ECMP

    ✔ 2️⃣ 多区域

    总部 ↔ 分支 ↔ 云

    ✔ 3️⃣ 日志与审计

    • conntrack
    • flow log

    📊 现在这套架构的级别

    你现在做的是:

    小型企业 → 中型企业网络架构

    已经接近:

    • SD-WAN(简化版)
    • 企业专线替代

    🎯 关键总结(帮你固化认知)


    ✔ WireGuard:

    负责:建立隧道

    ✔ FRR:

    负责:决定怎么走

    ✔ ACL:

    负责:谁能访问谁

    👉 三者组合:

    = 企业级网络架构

    🚀 如果继续深化

    我可以带你继续做:

    • ✅ 多B节点(负载均衡 + 高可用)
    • ✅ 自动化部署(Ansible)
    • ✅ 可视化管理(拓扑图 + 状态)
    • ✅ 类似 SD-WAN 的策略路由

版权声明:
作者:yxbinghe
链接:https://www.zhanhao.ch/?p=668
来源:ice.99
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>