【问题标题】:Why can I ping the Ip of a different Network Interface of my server?为什么我可以 ping 我的服务器的不同网络接口的 Ip?
【发布时间】:2017-10-20 18:18:20
【问题描述】:

我的本​​地机器 (10.0.0.2/16) 直接连接到服务器的 eth4 网络接口。 连接按预期工作,我可以跟踪eth4 的 ip,即10.0.0.1。 但是,我也可以跟踪路由 另一个接口 (eth5) 的 ip 10.1.0.23,即使它位于错误的子网上!

在下面你会看到我的本地机器和我的服务器的设置。

在我的本地机器上(Arch Linux)

ip addr的输出:

....
2: enp0s25: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 3c:97:0e:8a:a1:5a brd ff:ff:ff:ff:ff:ff
inet 10.0.0.2/16 brd 10.0.255.255 scope global enp0s25
   valid_lft forever preferred_lft forever
inet6 fe80::7a0b:adb3:2eef:a3a8/64 scope link 
   valid_lft forever preferred_lft forever
....

跟踪路线

% sudo traceroute -I 10.0.0.1
traceroute to 10.0.0.1 (10.0.0.1), 30 hops max, 60 byte packets
 1  10.0.0.1 (10.0.0.1)  0.184 ms  0.170 ms  0.163 ms

% sudo traceroute -I 10.1.0.23
traceroute to 10.1.0.23 (10.1.0.23), 30 hops max, 60 byte packets
 1  10.1.0.23 (10.1.0.23)  0.240 ms  0.169 ms  0.166 ms

在服务器上 (Debian)

我的/etc/network/interfaces

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
#iface eth5 inet dhcp
auto eth5
allow-hotplug eth5
iface eth5 inet static
    address 10.1.0.23 
    netmask 255.255.0.0  
    gateway 10.1.0.1


## Automatically load eth4 interface at boot 
auto eth4  
allow-hotplug eth4
# Configure network interface at eth4 
iface eth4 inet static
    address 10.0.0.1 
    netmask 255.255.0.0  
    gateway 10.0.0.1

ip addr 的输出:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
...
6: eth4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:08:a2:0a:e8:86 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.1/16 brd 10.0.255.255 scope global eth4
       valid_lft forever preferred_lft forever
    inet6 fe80::208:a2ff:fe0a:e886/64 scope link 
       valid_lft forever preferred_lft forever
7: eth5: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
    link/ether 00:08:a2:0a:e8:87 brd ff:ff:ff:ff:ff:ff
    inet 10.1.0.23/16 brd 10.1.255.255 scope global eth5
       valid_lft forever preferred_lft forever

ip route的输出:

default via 10.1.0.1 dev eth5 
10.0.0.0/16 dev eth4  proto kernel  scope link  src 10.0.0.1 
10.1.0.0/16 dev eth5  proto kernel  scope link  src 10.1.0.23 

【问题讨论】:

  • 你本地arch机器上的路由表比你服务器上的路由表更重要,你应该看看它,也给我们看看。
  • 我努力决定是否将其标记为离题。将来,请更清楚为什么这样的问题是关于编程而不是系统管理的。根据我的经验,虽然我确实发现我对一些问题感到困惑,例如我的网络编程帽子比我的系统管理员帽子在本地收到的更多,所以我提出了一个答案。
  • @SamHartman:对不起,我的错。我对 stackoverflow 很陌生,不知道它是唯一用于明确编程相关问题的。那么Server Fault 是否适合提出此类问题,或者更确切地说是Unix & Linux

标签: networking debian ip ping network-interface


【解决方案1】:

你为什么不期待这种行为。正如您从 Debian 服务器的路由表中看到的那样,它知道如何将数据包路由到您的 arch linux 机器,因此它可以根据需要做出响应。 我可以看到您可能遇到的两个问题:

  • 它为什么选择响应?

您没有向我们提供您的防火墙规则,也没有告诉我们您的服务器是否启用了 ip_forwarding。即使没有启用 IP 转发,Linux 也会将其任何本地地址的本地接收数据包视为 INPUT 数据包(根据 iptables 和访问控制决策),而不是转发数据包。所以即使转发被禁用它也会响应。 如果您不希望这种行为,您可以将 iptables 规则添加到 INPUT 链以丢弃服务器上接收到的数据包。

  • 为什么traceroute中只有一跳

您可能期望为了响应数据包需要遍历(被转发),因此您将在跟踪路由中获得两个跃点,一个用于 eth4,一个用于 eth5。但是,如上所述,如果任何本地接收到的 ppacket 与本地 IP 之一匹配,它将被视为输入。您的 arch linux 机器可能使用 Debian 服务器作为其默认路由。因此,它发送一个带有 Debian 服务器 MAC 地址的数据包,希望 Debian 服务器转发它。这使它成为 Debian serevr 上以太网级别的本地接收数据包。然后服务器检查 IP 地址,发现它是本地的,不关心它是否用于另一个以太网,并在 IP 层本地接收它。 如果您不希望这种行为,请修复防火墙规则。

【讨论】:

  • 感谢您的回复(尽管正如您在上面提到的那样,这是题外话)。
  • 我真的很惊讶,正如您所说的“Linux 会将其任何本地地址的本地接收数据包视为 INPUT 数据包”。我本来希望每个传入的包只被处理iff它适合接收它的网络接口的子网,或者为它设置路由。
  • @Hermilton 如果我的回答回答了您的问题,请接受。看,一条到系统每个本地接口的隐式路由。路线不是从源头到目的地;它们只是到一个目的地,并且系统有一条到其所有本地地址的隐式路由。
猜你喜欢
  • 1970-01-01
  • 2016-03-07
  • 1970-01-01
  • 2012-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-24
  • 1970-01-01
相关资源
最近更新 更多