Я беру устаревшую систему (кластер 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
все еще работает, вы можете увидеть, что происходит.