Depois de atribuir o endereço IP público usando DHCP, o whatsmyip mostra o 193.x.x.x esperado, mas o ifconfig mostra o endereço local vinculado 169.254.x.x

3

O computador em questão tem um SO Linux e está conectado a uma rede local que tem o serviço DHCP ativo. Eu configurei um endereço IP público para ser dado a esse computador pelo DHCP e posso ssh nele usando este endereço IP. Agora vem a parte estranha.

ifconfig retorna um endereço 169.254.x.x. Eu tenho leia que 169.254.x.x é dado a um computador quando o DHCP não consegue dar a ele um endereço apropriado. Mas deu um endereço adequado, eu posso ssh para ele (usando o endereço IP público) e sites como link me diga que o computador tem o endereço IP público que eu configurei no DHCP.

Como isso pode ser possível e quais detalhes devo incluir neste post?

Quando pedi ao meu colega para reiniciar a rede

/etc/init.d/net.eth0 restart

esta foi sua saída:

 * Caching service dependencies  ...                [ ok ]
 * Unmounting network filesystems ...               [ ok ]
 * Bringing down interface eth0
 *   Stopping dhcpcd on eth0 ...                    [ ok ]
 * Bringing up interface eth0
 *   dhcp ...
 *     Running dhcpcd ...
control_open: Connection refused
eth0: adding address fe80::f85f:1ef7:db63:7475
eth0: waiting for carrier
eth0: carrier acquired
DUID 00:01:00:01:1b:ef:52:ea:dc:85:de:20:38:fa
eth0: IAID a9:04:2c:82
eth0: soliciting an IPv6 router
eth0: rebinding lease of 193.136.136.136
eth0: probing for an IPv4LL address
eth0: DHCP lease expired
eth0: soliciting a DHCP lease
eth0: using IPv4LL address 169.254.78.15
eth0: adding route to 169.254.0.0/16
forked to background, child pid 6332                [ ok ]
 *     received address 169.254.78.15/16            [ ok ]
* Mounting network filesystems ...

A saída de ifconfig é a seguinte:

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 169.254.78.15  netmask 255.255.0.0  broadcast 169.254.255.255
        inet6 fe80::f85f:1ef7:db63:7475  prefixlen 64  scopeid 0x20<link>
        ether 48:85:a3:04:2d:81  txqueuelen 1000  (Ethernet)
        RX packets 113090  bytes 80195148 (76.4 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 39425  bytes 7462270 (7.1 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 0  (Local Loopback)
        RX packets 2259  bytes 217008 (211.9 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2259  bytes 217008 (211.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlan0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether df:83:de:11:37:fb  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ip addr mostra os dois IPs, 169.x.x.x e 193.x.x.x. Ainda não descobri por que 169.x.x.x é dado pelo servidor DHCP.

    
por rmarques 11.08.2015 / 11:00

2 respostas

3

IPs do intervalo 169.254.x.x são uma indicação de que um endereço não foi obtido do DHCP.

Em Wikipédia , na faixa 169.254.x.x

In IPv4, link-local addresses are codified in RFC 6890 and RFC 3927. Their utility is in self-autoconfiguration by network devices when Dynamic Host Configuration Protocol (DHCP) services are not available and manual configuration by a network administrator is not desirable.

The block 169.254.0.0/16 is reserved for this purpose, with the exception of the first and the last /24 subnets in the range. If a host on an IEEE 802 (ethernet) network cannot obtain a network address via DHCP, an address from 169.254.1.0 to 169.254.254.255 may be assigned pseudorandomly. The standard prescribes that address collisions must be handled gracefully.

Seus IPs estão listados por ifconfig e o público (visível externamente) está sendo identificado pelo link .

É muito comum que a rede interna ou local esteja em um intervalo de endereços IP diferente (e geralmente privado) para a rede externa. O IP externo pode ser limitado e o NAT é usado para direcionar o tráfego externo para o seu dispositivo interno / PC.

    
por 11.08.2015 / 12:16
3

Você está usando o comando ifconfig reprovado. Ele mostra apenas um endereço IPv4 por interface, embora uma interface possa ter vários endereços atribuídos.

Experimente o comando ip :

user@host ~ $ 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 brd 127.255.255.255 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
    inet x.x.x.x peer x.x.x.x/32 scope global eth0
       valid_lft forever preferred_lft forever
    inet x.x.x.x/32 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 2a01:xxxx:xxxx:xxxx::4/128 scope global
       valid_lft forever preferred_lft forever
    inet6 2a01:xxxx:xxxx:xxxx::3/128 scope global
       valid_lft forever preferred_lft forever
    inet6 2a01:xxxx:xxxx:xxxx::2/128 scope global
       valid_lft forever preferred_lft forever
    inet6 fe80::xxxx:xxxx:xxxx:xxxx/64 scope link
       valid_lft forever preferred_lft forever

Você também pode configurar o dhcpcd para não definir um endereço IPv4LL, consulte a página do manual .

    
por 11.08.2015 / 13:50