Назад | Перейти на главную страницу

Почему я могу прослушивать IP-адрес, не указанный в ifconfig?

Я беру устаревшую систему (кластер Xen) и пытаюсь понять ее архитектуру. Похоже, что есть службы, прослушивающие IP (скажем, 1.2.3.4), которые не отображаются в ifconfig вывод:

# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:16:3e:98:46:4b  
          inet addr:3.3.3.3  Bcast:3.3.3.255  Mask:255.255.255.0
          inet6 addr: fe80::216:3eff:fe98:464b/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2701271309 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2580523122 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:2013971483375 (1.8 TiB)  TX bytes:1994970579127 (1.8 TiB)

eth0:0    Link encap:Ethernet  HWaddr 00:16:3e:98:46:4b  
          inet addr:10.0.5.4  Bcast:10.0.5.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

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:12776938 errors:0 dropped:0 overruns:0 frame:0
          TX packets:12776938 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:2103144670 (1.9 GiB)  TX bytes:2103144670 (1.9 GiB)

Если бы у меня был nc прослушивать IP 1.2.3.4, он доступен извне:

nc -s 1.2.3.4 -p 8081 -l

(т.е. я могу telnet или nc на 1.2.3.4:8081 и отправить данные).

Это приводит меня к выводу, что NAT нет. Однако почему не ifconfig перечислить IP?

Я видел случаи, когда ifconfig не показывает все адреса, назначенные интерфейсу, но их можно увидеть с помощью ip addr (где ip из iproute2 пакет).

     -s hostname/ip-address
             Specifies the IP of the interface which is used to send the pack-
             ets.  On some platforms, this can be used for UDP spoofing by
             using ifconfig(8) to bring up a dummy interface with the desired
             source IP address.
$ nc -s 1.2.3.4 -p 8081 -l &
Can't grab 1.2.3.4:8081 with bind : Cannot assign requested address

Возможно, если ты убежишь ifconfig из другого терминального сеанса пока nc все еще работает, вы можете увидеть, что происходит.