AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1016814
Accepted
GreenVine
GreenVine
Asked: 2020-05-13 07:48:45 +0800 CST2020-05-13 07:48:45 +0800 CST 2020-05-13 07:48:45 +0800 CST

根据源地址选择下一跳

  • 772

我正在尝试在客户端和核心路由器之间建立一个基于 Ubuntu 的网关,理想的流量应该是:

ClientGroup 1 (10.0.0.0/24) -> Ubuntu 网关 (10.0.0.2) -> 核心路由器 (10.0.0.1) -> Internet

ClientGroup 2 (10.0.1.0/24) -> Ubuntu 网关 (10.0.1.2) -> 核心路由器 (10.0.1.1) -> 互联网

ClientGroup 3 (10.0.2.0/24) -> Ubuntu 网关 (10.0.2.2) -> 核心路由器 (10.0.2.1) -> 互联网

客户使用 Ubuntu 实例作为他们的网关。

以下netplan配置正确路由内部流量,但是对于 Internet 流量,它默认为eth0.1(10.0.1.1),因为gateway4.

network:
    version: 2
    ethernets:
        eth0:
            addresses: [10.0.0.2/24]
            routes:
                - to: 10.0.0.0/24
                  via: 10.0.0.1
                  table: 101
            routing-policy:
                - from: 10.0.0.0/24
                  table: 101
            dhcp4: false

    vlans:
        eth0.1:
            id: 1
            link: eth0
            addresses: [10.0.1.2/24]
            gateway4: 10.0.1.1
            routes:
                - to: 10.0.1.0/24
                  via: 10.0.1.1
                  table: 102
            routing-policy:
                - from: 10.0.1.0/24
                  table: 102
            dhcp4: false


        eth0.2:
            id: 2
            link: eth0
            addresses: [10.0.2.2/24]
            routes:
                - to: 10.0.2.0/24
                  via: 10.0.2.1
                  table: 103
            routing-policy:
                - from: 10.0.2.0/24
                  table: 103
            dhcp4: false

关于如何将所有流量路由到核心路由器上相应的下一跳的任何想法?也就是说,来自的所有流量 ( 0.0.0.0/0)10.0.0.0/24都应该路由到,10.0.0.1而10.0.2.0/24应该路由到10.0.2.1。

我也很乐意使用简单ip route的规则。

提前致谢!


编辑 13/05/20:

我已经为每个添加了一个默认路由routes,路由按预期工作,但traceroute输出看起来很奇怪:

routes:
  - to: 0.0.0.0/0
    via: 10.0.0.1
    table: 101

第一次测试:

traceroute to 1.1.1.1 (1.1.1.1), 64 hops max, 52 byte packets
 1  10.0.0.2 (10.0.0.2)  0.896 ms * *
 2  10.0.0.1 (10.0.0.1)  1.361 ms  1.126 ms  0.879 ms

第二次测试:

traceroute to 1.1.1.1 (1.1.1.1), 64 hops max, 52 byte packets
 1  * * *
 2  10.0.0.1 (10.0.0.1)  1.353 ms  1.062 ms  0.825 ms
ubuntu routing networking ip-routing netplan
  • 1 1 个回答
  • 734 Views

1 个回答

  • Voted
  1. Best Answer
    Omar Buhidma
    2020-05-13T08:40:02+08:002020-05-13T08:40:02+08:00

    很简单,特别是因为您已经在使用多个路由表:

    (抱歉,没有将我的示例转换为 netplan;但是由于您喜欢使用常规 ip 路由规则,因此应该足够了 - 此示例假设您从头开始)

    因此,您的网络计划已经创建了三个路由表,所以我们将使用您拥有的第一个路由表:

    ip route flush 101
    ip route add table 101 to 10.0.0.0/24 dev eth0
    ip route add table 101 to default via 10.0.0.1
    

    您拥有的第三个路由表:

    ip route flush 103
    ip route add table 103 to 10.0.2.0/24 dev eth0.2
    ip route add table 103 to default via 10.0.2.1
    

    然后创建两条规则,根据流量的源 IP 地址将流量发送到每个表:

    ip rule add from 10.0.0.0/24 table 101 priority 101
    ip rule add from 10.0.2.0/24 table 103 priority 103
    

    这应该这样做。请注意,您可以继续向这两个表添加目标路由,并且只有来自关联源的流量才会到达这些条目 - 这些条目足够多,您可以选择删除每个表上的默认路由。

    • 0

相关问题

  • 无法通过 Ubuntu VPN 访问外部网络

  • ubuntu apt-get upgrade - 如何在 shell 中单击确定?

  • VirtualBox 上 Ubuntu 的访客优化技巧 [关闭]

  • 外部硬盘上的 virtualbox 虚拟硬盘驱动器(Vista 主机上的 ubuntu 客户机)

  • 如何在 Ubuntu 上挂载 LVM 分区?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve