Ip

ifconfig 如何找到機器的外部 IP 地址?

  • January 11, 2015

通常,當我想檢查給定機器的外部 IP 地址時,我只是curl一些外部網站向我發送響應,告訴我我的 IP 地址顯示給它。但是,我注意到也ifconfig列出了我的外部 IP 地址。

網路上是否ifconfig有某種“規範”來源,它會發送請求以確定機器的 IP 地址,或者它是否有其他查找機器 IP 地址的方法?

配置外部地址是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。

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)

/proc/net

您可以使用的有關每個網路介面的資訊在文件系統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/*

引用自:https://unix.stackexchange.com/questions/101996