使用DHCP分配公共IP地址后,whatsmyip显示预期的193.x.x.x但ifconfig显示169.254.x.x链接本地地址


3

有问题的计算机具有Linux SO并连接到具有DHCP服务活动的本地网络。我配置了一个由DHCP提供给该计算机的公共IP地址,我可以使用这个IP地址进入它。现在是奇怪的部分。

ifconfig 返回169.254.x.x地址。我有 当DHCP无法为其提供正确的地址时,会将169.254.x.x提供给计算机。但它确实提供了一个正确的地址,我可以(使用公共IP地址)和网站作为 http://www.whatsmyip.org/ 告诉我计算机有我在DHCP上配置的公共IP地址。

这怎么可能,我应该在这篇文章中包含哪些细节?

当我让我的同事重新启动他的网络时

/etc/init.d/net.eth0 restart

这是他的输出:

 * 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 ...

的输出 ifconfig 如下:

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 显示两个IP,169.x.x.x和193.x.x.x.仍然没有发现为什么169.x.x.x由DHCP服务器给出。


你的意思是说你配置了DHCP提供的公共IP地址?当您运行Linux时,您使用的是网络管理员还是正在使用Linux /etc/network/interfaces 文件来管理您的连接?
Kinnectus

我没有在计算机中配置IP,我是在DHCP服务器上完成的。
rmarques

因为我可以使用193.136.136.136 ssh到该计算机,我想要的地址。
rmarques

什么是输出 ifconfig
Niall

而且:什么呢 ifconfig 在其他计算机上使用时返回?
Arjan

Answers:


3

IP来自范围 169.254.x.x 表示尚未从DHCP获取地址。

维基百科 在...上 169.254.x.x 范围;

在IPv4中,链路本地地址在RFC 6890和RFC 3927中编码。当动态主机配置协议(DHCP)服务不可用并且不希望由网络管理员进行手动配置时,它们的实用程序由网络设备进行自动配置。

块169.254.0.0/16保留用于此目的,但该范围中的第一个和最后一个/ 24个子网除外。如果IEEE 802(以太网)网络上的主机无法通过DHCP获取网络地址,则可以伪随机分配169.254.1.0至169.254.254.255的地址。该标准规定必须优雅地处理地址冲突。

您的IP列出 ifconfig 并且公众(外部可见)正在被识别 http://www.whatsmyip.org/

通常,内部或本地网络与外部网络位于不同(通常是私有)的IP地址范围内。外部IP可能受限,NATing用于将外部流量路由到内部设备/ PC。


评论不适用于扩展讨论;这次谈话已经开始了 转移到聊天
Sathyajith Bhat

@Arjan将其移至聊天有助于保持问题/答案清晰,同时仍保留评论 好地方 稍后交谈或参考;) 也注意到你回来了 - 很高兴再次拥有你
Sathyajith Bhat

3

您正在使用已弃用的 ifconfig 命令。它显示每个接口只有一个IPv4地址,即使一个接口可以分配多个地址。

试试吧 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

您也可以将dhcpcd设置为不设置IPv4LL地址,请参阅 手册页


我不会调用过时的命令,只是说Linux上有更好的选项,因为在freebsd和其他unix命令中继续使用ifconfig
Francisco Tapia

@FranciscoTapia只是Linux不是Unix。 ;)这是一个完全不同的命令在其他操作系统上,所以它不是真正可比的。 ifconfig 在Linux上是过去的遗留问题。当然它很容易使用,但实际上就是这样。
Daniel B

不要把我的评论作为批评,我已经测试了我自己ip命令的所有优点,我只是声称对老歌的尊重;)PD:手册页显示下面的注释:“这个程序已经过时了!对于替换检查ip addr和ip link。统计使用ip -s link。“:o
Francisco Tapia
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.