2

Я вижу странное поведение и надеялся, что кто-нибудь сможет объяснить мне, почему это происходит:

У меня есть окно Linux с двумя физическими интерфейсами:

arnout@arnout-VirtualBox ~ $ ifconfig
eth0      Link encap:Ethernet  HWaddr 08:00:27:46:ee:f0  
          inet addr:10.0.20.58  Bcast:10.0.23.255  Mask:255.255.252.0
          inet6 addr: fe80::a00:27ff:fe46:eef0/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:5942438 errors:0 dropped:1 overruns:0 frame:0
          TX packets:2012142 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:3291019944 (3.2 GB)  TX bytes:343769813 (343.7 MB)
eth1      Link encap:Ethernet  HWaddr 08:00:27:64:eb:76  
          inet addr:1.1.1.1  Bcast:1.1.1.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe64:eb76/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:651 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:169802 (169.8 KB)
lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:1107 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1107 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:92180 (92.1 KB)  TX bytes:92180 (92.1 KB)

arnout@arnout-VirtualBox ~ $ uname -a
Linux arnout-VirtualBox 3.5.0-17-generic #28-Ubuntu SMP Tue Oct 9 19:32:08 UTC 2012 i686 i686 i686 GNU/Linux

Если я пинг 1.1.1.2, не имея этого адреса в кэше ARP (так как он не существует), я могу увидеть обычный пакет ARP:

«У кого есть 1.1.1.2, скажите 1.1.1.1»

Однако, когда я пингуюсь с использованием адреса источника eth0 (ping 1.1.1.1 -I 10.0.20.58), этот IP фактически вставляется в IP-запрос ARP!

"У кого есть 1.1.1.2, скажите 10.0.20.58 "

Для меня это не имеет смысла вообще. Кроме того, хост 1.1.1.2 (если он существует) может узнать, что 10.0.20.58 имеет MAC-адрес 1.1.1.1, что неверно. (вероятно, не так уж много плохого случится)

Если кто-нибудь знает, почему Linux делает это, пожалуйста, поделитесь :)

0