网关必须在子网上吗?


14

我一直在寻找在/ etc / network / interfaces(在debian中)这样的接口,并且网关在子网之外

iface eth0 inet static
address 10.100.10.99
netmask 255.255.255.0
gateway 10.100.0.1

但是“ ifup --verbose eth0”仅给我以下错误消息:

ifconfig eth0 10.100.10.99 netmask 255.255.255.0
 route add default gw 10.100.0.1  eth0
SIOCADDRT: No such process
Failed to bring up eth0

当然,将网络掩码更改为255.255.0.0也可以。

这是否有可能,或者还有其他问题吗?有没有办法从ifup中获取更多信息?我在互联网上看到一则帖子暗示它应该起作用。

Answers:


10

解决此问题的另一种方法是:如果您无法访问本地网络上的默认网关路由器,如何通过它发送数据包?您必须通过另一个路由器发送它们。

对于某些背景,请记住,IP数据包通常包含源地址和目标地址:它来自何处以及它想去哪里。通常由路由器决定如何到达那里。

因此,当您通过网外默认网关路由器发送IP数据包时,将需要发生以下两种情况之一。

  1. 本地路由器知道如何到达默认网关路由器,并且同意您的想法,即应该通过默认网关路由器发送数据包以到达其目的地。在这种情况下,为什么不只使用局域网路由器作为默认网关呢?

  2. 本地路由器认为(默认情况下)您的数据包应该通过其他路由器发送以到达其目的地。在这种情况下,您必须有其他方法可以告诉它。该功能存在,被称为“源路由” ...但是它被认为是安全风险,大多数路由器都配置为忽略它。

最后,以我的经验,ip如果无法通过本地网络接口直接访问网关,Linux iproute()工具将不允许您添加路由。

几个源路由参考:


4

默认网关必须与设备的IP地址位于同一子网中。通常是您要连接的网络的路由器IP地址。从Wikipedia页面上的Default Route

在计算机网络中,网关是TCP / IP网络上的节点(路由器),用作另一个网络的访问点。当IP地址与路由表中的任何其他路由都不匹配时,默认网关是网络软件在计算机网络上使用的节点。它实际上是您的PC网络连接到的路由器的IP地址。

在家庭计算配置中,ISP通常提供物理设备,该设备既将本地硬件连接到Internet,又充当网关。此类设备包括DSL路由器和电缆路由器。

在组织系统中,网关是将流量从工作站路由到另一个网段的节点。默认网关通常连接内部网络和外部网络(Internet)。在这种情况下,网关节点还可以充当代理服务器和防火墙。网关还与使用报头和转发表来确定将数据包发送到何处的路由器以及与交换机相关联的交换机(交换机提供了数据包进出网关的实际路径)有关。

换句话说,默认网关在网络中提供入口点和出口点。


但是,如果存在到地址的静态路由,即使它不在子网中,也不能将其作为默认网关吗?(我们正在这里讨论技术,而不是采用良好实践)。
kurtm

静态路由可以是路由,而不能是默认网关(据我所知)。
slm

2
默认路由必须位于同一子网中。默认路由是如何将所有流量从子网转移到另一个子网。因此,如果您试图将流量从10.100.10.99迁移到10.100.0.1,则需要一个“网关”才能从10.100.10.0/24迁移到10.100.0.0/24网络。10.100.0.1不能作为您的默认网关,因为默认情况下您无法访问它。但是,它可以是“一个”网关。它甚至可以是您将所有流量发送到的“网关”(一旦您告诉它如何到达另一个网络)。
coteyr

1
@coteyr:但是我有这个工作。如果存在到其他子网的静态路由,并且默认网关位于该子网上,则我都可以添加默认路由,并且可以无问题地ping /建立连接。它可能效率较低,但是可以工作。
siride

我会说:一条路由是您如何将所有流量从子网转移到另一个子网的方法。指定路由时,可以指定IP网段(或超网-网段的组合)和用于访问该网段/超网的网关,也可以指定“对于路由表中未提及的所有其他内容,请使用网关”。后者是默认路由,其中​​使用的网关称为默认网关。当只有一个NIC时,几乎总是只需要默认路由。但是使用多个NIC时,您可能还需要其他路由。
telcoM

2

我在Verizon ADSL服务的多个位置遇到相同的问题。“默认网关”在另一个子网中。在我们的例子中,我们需要公共IP地址才能使用ipsec站点到站点vpn。为此,我们需要将DSL网关设置为桥接模式,以便公共IP地址位于我们的路由器上而不是DSL网关上。

大多数提供商都可以相当容易地做到这一点,但是Verizon似乎有困难。Verizon技术人员使用D-Link 2750B DSL网关,将其置于桥接模式,告诉我在单独的子网中使用默认网关。我使用Windows 7笔记本电脑对其进行了测试,尽管Windows给出了一条错误消息,其内容是:“您是个白痴,这是一个坏主意-您仍要保存此配置吗?是/否,”它确实可以运行。

但是,经过更严格的健全性检查的软件似乎可以保护您免受自己的伤害。

尽管如此,我还是忍不住想出一种伪造它的方法...


1

可以,但是如链接文章中所述,您的计算机必须已经知道如何获取网关地址。这意味着您将需要使用post-up手动添加路线,而不是gateway

iface eth0 inet static
  address 10.100.10.99
  netmask 255.255.255.0
  post-up ip route 10.100.0.0/24 via 10.100.10.x # router that can route you to the 10.100.0.0/24 network
  post-up ip route 0.0.0.0 via 10.100.0.1

2
ip route如果您尝试这些命令,这些命令将失败...即使您添加缺少的add命令。
詹德(Jander)2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.