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 / 问题 / 1163670
Accepted
gcb
gcb
Asked: 2024-08-09 06:28:24 +0800 CST2024-08-09 06:28:24 +0800 CST 2024-08-09 06:28:24 +0800 CST

如何“强制”路线?

  • 772

Linux 内核允许我添加仅可到达网关的路由,因为实际上它们没有问题。但现在我收到“错误:Nexthop 网关无效”,这很符合规范,但使临时测试变得很麻烦。

有什么办法可以绕过这个检查并强制我的路线?

是的,我确实想通过公共接口发送我的私人局域网路由包,原因是有效的、低量且无害的:)

linux
  • 1 1 个回答
  • 110 Views

1 个回答

  • Voted
  1. Best Answer
    u1686_grawity
    2024-08-09T12:02:53+08:002024-08-09T12:02:53+08:00

    要使用位于同一本地网络(例如与您位于同一以太网)上的网关,但该网关仅在您的 IP 地址范围之外,因此操作系统无法意识到它是本地可访问的:

    • 使用最新的内核:onlink为命令指定参数。

      ip route add 192.168.1.0/24 via $GW dev eth0 onlink
      
    • 对于较旧的内核,该选项仅适用于单个 IP 版本(我不记得是哪个版本)。另一种方法是首先为网关添加一个“设备”路由作为 /32 或 /128,这将使操作系统认为它是可访问的:

      ip route add $GW/32 dev eth0
      ip route add 192.168.1.0/24 via $GW
      

      这在功能上与您从自己的 IP 地址自动添加的“本地子网”路由相同。事实上,如果您愿意,您可以通过这种方式将整个地址范围/子网定义为“本地”。

    • 通常,即使以太网使用多个不相交的 IPv4 子网,所有设备也可能位于单个 IPv6 子网中,因此如果您碰巧知道网关的 IPv6 地址(全局或链路本地),则可以通过该地址路由 IPv4:

      ip route add 192.168.1.0/24 via inet6 FE80::ABC:DEF dev eth0
      

      (这并不使用隧道或地址转换——只是解析网关 MAC 地址的另一种方式。)

    • 请注意,ISP 可以通过阻止客户之间的直接 ARP 并执行 ARP 代理来轻松防止所有这些问题,这样所有数据包最终都会通过网关,即使目的地看起来像是本地子网。

      如今,大多数家庭网关还带有预定义的防火墙规则,可以阻止从 WAN 到其内部网络的数据包,专门用于防止此类黑客攻击。

    要使用与您物理上不在同一本地网络(以太网等)上的网关:

    • 无法完成。网关 IP 地址实际上是网关本地网络 MAC 地址的替代品(即它不是 IP 标头字段而是较低层的东西),因此如果网关与您不在同一个本地网络上,那么您就无法将数据包发送到其 MAC 地址,因此您无法通过它进行路由。

      IPv4 曾经在某些时候支持“源路由”标头(类似 IPv6 中的“RH0”),可用于要求网关 A 接下来通过网关 B 进行路由,但它几十年前就被普遍弃用并删除了。


    只需添加调制解调器的公共 IP 地址(只能通过我的 0.0.0.0 网络规则访问)作为 192.168.1.1/24 的网关

    这可以用两种方式来解释,但只有当操作系统实际上忽略“可通过 0.0.0.0 路由访问”部分并将网关视为可通过链接直接访问时(如答案的第一部分)才真正有效。

    按照答案的第二部分,遵循0.0.0.0 路由的操作系统的另一种解释(即将您的路由视为“递归”)将不起作用 - 它只会导致数据包通过您的常规网关,而您无法再控制它。

    (Linux 实际上有一个pervasive路由标志,它似乎曾经用于执行递归网关查找,但它不起作用,并且似乎在 2010 年删除了它的(两行)支持代码。实际上,递归查找通常由路由守护进程完成。)

    • 3

相关问题

  • Linux 主机到主机迁移

  • 如何在 Linux 机器上找到有关硬件的详细信息?

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

  • 在 RHEL4 上修改 CUPS 中的现有打印机设置

  • 为本地网络中的名称解析添加自定义 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