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 / 问题 / 1090640
Accepted
KrNeki
KrNeki
Asked: 2022-01-21 07:33:01 +0800 CST2022-01-21 07:33:01 +0800 CST 2022-01-21 07:33:01 +0800 CST

路由规则的配置从哪里来?

  • 772

我在禁用 NetworkManager 且未安装其他旧脚本的 RHEL7 上。意思是,我仍然使用:

/etc/sysconfig/network-scripts/ifcfg-eth0
/etc/sysconfig/network-scripts/route-eth0
/etc/sysconfig/network-scripts/rule-eth0

我的文件有问题rule-eth0。它加载得很好,每当我修改它并运行$ systemctl restart networking时,新的路由规则就会被拾取并在$ ip rule. 如果我使用ifup-routes.

但是,如果我修改rule-eth0文件,之前的旧规则不会被删除。不过会添加新的。我试过在network-scripts目录中运行脚本,除非我一个接一个地手动删除,否则它们会留在那里。

我求助于使用:

$ ip rule flush

这删除了所有规则,包括mainanddefault表的规则,这意味着任何 SSH 连接都会丢失。

我的困惑

如果我删除所有rule文件并重新启动机器,我会恢复默认路由。通过运行$ ip rules是看到:

0:      from all lookup local
32766   from all lookup main
32767   from all lookup default

问题 如何在不重新启动的情况下获得相同的行为?

如何在运行后恢复这些默认规则$ ip rule flush,而无需重新启动机器或手动指定规则?

networking linux-networking policy-routing rhel7
  • 1 1 个回答
  • 109 Views

1 个回答

  • Voted
  1. Best Answer
    A.B
    2022-01-22T10:38:45+08:002022-01-22T10:38:45+08:00

    这些规则是内核在初始化初始网络堆栈(或新的网络命名空间)时设置的默认规则,无需任何用户空间帮助。

    这是相关的内核源代码摘录:

    static int fib_default_rules_init(struct fib_rules_ops *ops)
    {
      int err;
    
      err = fib_default_rule_add(ops, 0, RT_TABLE_LOCAL, 0);
      if (err < 0)
          return err;
      err = fib_default_rule_add(ops, 0x7FFE, RT_TABLE_MAIN, 0);
      if (err < 0)
          return err;
      err = fib_default_rule_add(ops, 0x7FFF, RT_TABLE_DEFAULT, 0);
      if (err < 0)
          return err;
      return 0;
    }
    

    0x7FFE = 32766
    0x7FFF = 32767

    等等

    要解决最后一个问题:有一个脚本。甚至ip rule save/ip rule restore用处非常有限。您不应该在ip rule flush没有选择器的情况下运行以将其范围限制为预期的规则子集。例如:ip rule flush lookup 1000将删除任何匹配的条目(甚至部分)lookup 1000。

    • 0

相关问题

  • 谁能指出我的 802.11n 范围扩展器?

  • 我怎样才能得到一个网站的IP地址?

  • 在一个 LAN 中使用两台 DHCP 服务器

  • 如何在 Linux 下监控每个进程的网络 I/O 使用情况?

  • 为本地网络中的名称解析添加自定义 dns 条目

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