如何强制将数据发送到路由器(在L3上)而不是直接发送?(在L2上)


0

我在一台机器上有一个公共IP地址:

a.b.c.156/32

GW是abc133(位于/ 27网络中,其网关为abc129)

我静态添加了一个arp路由:

sudo arp -an
a.b.c.133 at ab:cd:ef:12:34:56 [ether] PERM on eth0

如果我ping a.b.c.156/32

From a.b.c.133: icmp_seq=2 Redirect Host (New nexthop: a.b.c.129)

然后:

sudo arp -an
a.b.c.129 at aa:bb:cc:dd:ee:ff [ether] on eth0 # !<------ why? (it is even not from the same network)
a.b.c.133 at ab:cd:ef:12:34:56 [ether] PERM on eth0

如何防止它在我的路由器(abc133)后面发送arp?这样abc129只能通过IP级别3访问,而不是像子网一样?

更新:

网络结构:

provider's GW (a.b.c.129/27) <--- my host (a.b.c.133/27) <--- my second host (a.b.c.156/32)
                                                      <--- my third host (a.b.c.151/32)
                                                      ...
(a.b.c.x - public IP)

如何防止后面的主机"my host (a.b.c.133)"发送arp "provider's GW (a.b.c.129/27)",但是使用路由呢?那么abc129只能通过IP级别3访问,而不是直接访问?那么如何隔离第二个,第三个...主机发送arp到"provider's GW (a.b.c.129/27)"

更新2:

我有以下内容"route -n"

Dest.     GW.       Mask             Flags Metrics Ref Interface
0.0.0.0   a.b.c.133 0.0.0.0          UG    0       0   eth0
a.b.c.133 0.0.0.0   255.255.255.255  UH    0       0   eth0

更新3:

===============
my host (a.b.c.133/27):
> ip r
a.b.c.151 dev vmbr0  scope link  # third host
a.b.c.156 dev vmbr0  scope link  # second host
192.168.1.0/24 dev vmbr1  proto kernel  scope link  src 192.168.1.1  # local network
default via a.b.c.129 dev vmbr0  # provider's gw

> ip n
a.b.c.129 dev vmbr0 lladdr AA:BB:CC:DD:EE:FF REACHABLE
a.b.c.156 dev vmbr0 lladdr AB:CD:EF:12:34:56 PERMANENT
a.b.c.151 dev vmbr0 lladdr A1:B2:C3:D4:E5:F6 PERMANENT
===============
my second host (a.b.c.156/32):
> ip r
default via a.b.c.133 dev eth0
a.b.c.133 dev eth0 scope link

> ip n # before "ping a.b.c.129" or "ping 8.8.8.8"
a.b.c.133 dev eth0 lladdr F1:E2:D3:C4:B5:A6 PERMANENT

> ip n # after "ping a.b.c.129" or "ping 8.8.8.8"
a.b.c.129 dev eth0 lladdr AA:BB:CC:DD:EE:FF REACHABLE # after some minutes idle => STALE
a.b.c.133 dev eth0 lladdr F1:E2:D3:C4:B5:A6 PERMANENT
===============
other hosts the similar to "my second host"

很难弄清楚你在谈论什么。在什么机器上你静态添加ARP条目,为什么?你在最后一段谈到的“它”是什么?
David Schwartz 2013年

我知道了。更新了这个问题。
静态

有些东西仍然没有意义。ARP是以太网的东西。您的图片显示了与提供商的GW在单独的以太网上的第二台和第三台主机。因此他们无法向他们发送ARP请求。“背后”究竟意味着什么?路由器是“我的主机”吗?如果是这样,它是第二个和第三个主机的默认网关吗?
David Schwartz

我希望“我的主机(abc133)”成为路由器。这是一台普通的电脑。
静态

然后你需要添加路由,而不是ARP条目。并且abc133需要是第二个和第三个主机的默认网关。(并且“我的主机”需要与第二个和第三个主机一起位于子网上,以便他们可以交换流量。)
David Schwartz

Answers:


0
a.b.c.129 at aa:bb:cc:dd:ee:ff [ether] on eth0 # !<------ why? 
                                          (it is even not from the same network)

它在同一个网络上。否则,您将看不到节点的硬件地址。如果您在不同的网络上,则只能看到路由器的MAC地址*。逻辑上分离的子网可以位于同一物理网络上。没有什么能阻止他们使用最短的物理路径。提供商的网关和网关共享示例中的子网。

如果您希望通过网关强制所有流量,我认为您需要在主机上创建防火墙规则。

*你会看到+'的MAC地址。(十字表示NIC)

   [local subnet]---------+' local gw +"
                                      |
                                      |
     [ remote subnet]----+. remote gw +,

您指的是哪种防火墙规则?它不应该是REJECT / DROP规则,否则流量将被拒绝,并且不可能进行通信。我需要一个规则,强制第二个等主机通过路由器发送流量,而不是直接。
静态

1
这个答案概述了通过给定接口强制某些流量的方法。可以对地址进行类似的配置。做你的研究,尝试至少一种方法,然后在需要时问一个关于iptables的新问题。不要忘记陈述您的实际目标(我猜测诸如将主机与提供商的GW隔离)。祝好运。
ЯрославРахматуллин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.