ifconfig 如何查找计算机的外部 IP 地址?

ifconfig 如何查找计算机的外部 IP 地址?

通常,当我想检查给定计算机的外部 IP 地址时,我只需使用curl某个外部网站向我发送响应,告诉我我的 IP 地址在其上显示的是什么。但是,我注意到ifconfig也列出了我的外部 IP 地址。

网络上是否ifconfig有某种“规范”源可以发送请求来确定计算机的 IP 地址,或者是否有其他方法来查找计算机的 IP 地址?

答案1

ifconfig只是一个用于设置/获取网络接口当前组成的工具。当您运行它时,它只是将此信息返回给您。您可以使用它来查询所有设备或单个接口。

例子

单独的设备。

$ ifconfig lo
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:6119 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6119 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:8725156 (8.3 MiB)  TX bytes:8725156 (8.3 MiB)

所有设备。

$ ifconfig -a
eth0      Link encap:Ethernet  HWaddr XX:XX:XX:XX:XX:XX
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
          Interrupt:20 Memory:f2600000-f2620000 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:45792 errors:0 dropped:0 overruns:0 frame:0
          TX packets:45792 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:7548353 (7.1 MiB)  TX bytes:7548353 (7.1 MiB)

wlan0     Link encap:Ethernet  HWaddr XX:XX:XX:XX:XX:XX
          inet addr:192.168.1.20  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1254848 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1408361 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:699671476 (667.2 MiB)  TX bytes:347243164 (331.1 MiB)

/进程/网络

您可以操作的有关每个网络接口的信息都在文件系统ifconfig下的 Linux 内核中公开/proc/net。如果您查阅手册页,ifconfig您会注意到这一部分:

FILES
       /proc/net/socket
       /proc/net/dev
       /proc/net/if_inet6

这些文件包含一些网络信息。下面/proc/net还有其他文件。

ifconfig、ip 的替代品

还有一个名为 的替代工具ip,您也可以使用它来操作网络信息。

$ ip addr show lo
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever

联网信息

IP地址等信息可以是静态设置的,也可以是动态设置的。静态设置时,您通常可以使用该工具ifconfig为特定网络设备设置 IP 地址,例如eth0、 或wlan0

另一种方法是动态设置 IP 信息,使用称为 DHCP 的服务,该服务是计算机可以连接到的网络上的服务器,要求 DHCP 服务器为其分配 IP 地址。

无论哪种情况,网络信息一旦确定,都可以在 下访问/proc/net/*

答案2

配置外部地址是 的工作ifconfig。它只是读取将地址写入其中的内核数据结构。即使您的计算机与网络断开连接,它也能正常工作。 ifconfig可以在计算机与网络隔离的情况下完整配置网络,如果配置正确,则只要连接网线,网络即可运行。

环回地址[127.0.0.1]是在软件设备上配置的,即使计算机中没有安装网卡,该软件设备也存在。这允许使用 TCP 和 UDP 等协议进行本地连接。这简化了软件开发,因为不需要为本地连接提供特殊服务。

编辑:ifconfig通常不知道您是否配置了已在使用的 IP 地址。如果网络接口连接到互联网,则ARP网络可以查看该地址是否正在使用。这不是必需的功能,ifconfig并且多台计算机具有相同 IP 地址的情况并不罕见。如果ifconfig或其他软件确定配置的地址不正确,通常的响应是发出警告消息。

也有可能ifconfig为错误的网络配置设备。用户有责任确保提供的配置ifconfig正确。还有其他工具可以执行相同的功能ifconfig并应用相同的限制。

为专用网络定义了三个 IP 地址范围。分别是 10.0.0.0/8、172.16.0.0/12 和 192.168.0.0/16。在这些地址范围上配置计算机是很常见的。在这种情况下,他们的 IP 地址将不同于 Internet 上的“公共”IP 地址。 “公共”IP 地址将属于连接到 Internet 的设备,该设备执行网络地址转换 (NAT),以允许专用网络上的计算机与 Internet 进行通信。家庭网络上的计算机几乎总是有一个专用网络地址。大多数家庭路由器将为本地(专用)网络上的计算机执行 NAT。

答案3

如果您位于 NAT 之后,ifconfig 无法显示您的“外部”IP 地址。它仅配置 DHCP 服务器向您的网络接口提供的地址。如果您知道您的外部 IP 地址,您应该使用诸如https://ipof.in/txt

相关内容