如何以簡單的方式在網路中發現設備的 IP?
在我工作的初創公司,我們正在設置一個用於圖像擷取和分析的設備。這是一個帶有攝像頭的盒子,嵌入了 Ubuntu Linux,假設我們不想將監視器連接到此設備進行配置。
有些人提供了一個解決方案,即通過網路電纜直接將設備連接到筆記型電腦時,通過訪問眾所周知的 IP,就像您使用路由器或調製解調器一樣。
這聽起來像是一個解決方案,但事實是該設備不是路由器,而且在我看來,這是一個完全不同的上下文,該設備不會將地址委託給筆記型電腦(使其成為路由器網路的一部分,它可以有一個眾所周知的地址),因為它不是路由器。
所以我現在正在尋找一種類似於配置路由器體驗的解決方案,但那不是路由器,它是用於我應該能夠從眾所周知的地址訪問的設備。為此,我對 zeroconf/APIPA 進行了一些研究,但從 zeroconf RFC 3927 開始,IP 地址必須是“使用在 169.254.1.0 到 169.254.254.255 範圍內均勻分佈的偽隨機數生成器”生成的。 .
我認為隨機 IP 解決方案可能仍然有效,即使它不是眾所周知的地址,以防萬一有任何方法可以發現該設備擁有的 IP。
除此之外,這個設備應該使用 NetworkManager 來通過它設置的許多介面來處理連接。
所以,總結一下問題情況:
- 必須通過本地網路配置設備。
- 此設備已打開並使用網路管理器通過許多介面處理連接,假設一個介面連接斷開,它將選擇另一個介面。
- 我們正在考慮使用 eth0 別名來讓 eth0 既由網路管理器處理(在與其他介面的上下文中),又通過非託管(由網路管理器)別名進行固定 IP 訪問。不確定這是否可能。
- 都是關於設備發現的,我也建議使用 nmap 來訪問設備,但是它有兩個缺點:在大型網路上掃描速度很慢並且不是簡單的網頁訪問,必須建構使用 nmap 的客戶端並使用它來執行發現。
- 如果無法在眾所周知的 IP 中進行簡單訪問,那麼使用隨機 IP 也是一種解決方案,因為可以像網路中的列印機或類似的東西一樣發現該設備。
- 可以假設解決方案可以是配置通過網線直接連接到筆記型電腦的設備並在設備的配置網頁中獲取對其的訪問權限,以及將筆記型電腦連接到設備所在的本地網路的一種解決方案也已連接,並且能夠訪問在網路中發現它的設備,或通過替代的、外來的和固定的地址訪問它。請注意,訪問本地網路路由器或使用 nmap/arp 掃描不是一個選項。
應該研究什麼問題來解決這個問題?人們為此使用一種通用方法嗎?
根據我的經驗,我記得配置了我的設備,但沒有一個適合這個問題:
- 路由器:在眾所周知的地址提供易於訪問的配置網頁,但它是路由器,它是網關,它將委派我自己的地址。
- Cubox-i:我有這些設備之一,我必須在我的網路中使用 nmap 發現它並訪問它的 ssh。
- 列印機:我從來沒有擁有過,所以我不知道它的設備發現/配置是如何工作的,但以前在網路上使用過它們,它們通常列在 Windows 機器上的設備設置中。我仍然需要看看“Avahi”、“UPnP”、“Zeroconf”和我從未使用過的領域中的其他名稱。也許這就是適合這種情況的例子。
如果有一個簡單的工具可以在我的 Arch Linux 上執行,並且它的 IP 可以被我的 Android 或我的 Windows 筆記本等其他設備發現,我想知道。我也考慮過廣播,但我不確定這在所有區域網路中都可以,因為廣播可能會被阻止或不可靠(對此不確定)。
最好的方法是使用
avahi
which implements multicast-dns(這就是 Apple 所說的 Bonjour)。我會禁用網路管理器並在
/etc/network/interfaces
. 該interfaces
文件支持ipv4ll
使用 avahi-autoipd 配置具有 IPv4 鏈路層地址(169.254.0.0/16 系列)的介面的方法。接下來,在 avahi 中設置一個服務,以確保主機通過 bonjour 發布自己並將 mDNS 名稱解析添加到
/etc/nsswitch.conf
.如果您的系統的其餘部分配置為解析 mDNS 名稱,那麼它應該都像魔術一樣工作。