ifconfig 如何找到機器的外部 IP 地址?
通常,當我想檢查給定機器的外部 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/*
。