Python 腳本、文件說明或實驗環境設定所用的隨機 IPv4 號址,必須避免實際的公開目標,同時在受控環境中保持有效性與可路由性。隨機 IP 號址產生器透過從 RFC 5737 保留的三個 TEST-NET 區段建立最多 100 個唯一號址來解決這個問題:192.0.2.0/24、198.51.100.0/24 和 203.0.113.0/24。這些範圍在全球範圍內均不可路由,因此適合用於教學文件、測試 fixture、螢幕擷圖和設定範例,無須擔心意外接觸到運作中的系統。對於區域網路,本工具也會從 RFC 1918 區段(10.0.0.0/8、172.16.0.0/12、192.168.0.0/16)產生私有的 IPv4 號址,這些號址並非全球唯一,但適用於離線開發與實驗規劃。

當您在 Python 中需要範例號址時,從公開範圍(例如 8.8.8.8 或 1.1.1.1)手動挑選值,可能會不小心指向真實系統或違反隱私政策。同樣地,產生任意八位元組(例如 random.randint(0, 255))可能會產生無效或保留的號址,例如 0.0.0.0 或 255.255.255.255。隨機 IP 號址產生器透過將輸出限制在 RFC 定義的範圍內、排除主機八位元組 0 和 255,並在每次結果中強制唯一性,來避免這些陷阱。這可確保號址在語法上有效、適合用於公開範例,且在測試環境中不會發生意外衝突。

generate random ipv4 address python
generate random ipv4 address python

為何 RFC 範圍對安全的 IPv4 範例很重要

IPv4 號址分為公開與私有範圍,但並非所有公開範圍都同樣適合用於範例。Internet Assigned Numbers Authority (IANA) 指定特定區塊供文件說明與測試使用,以防止在營運網路中意外使用。下表比較了隨機 IP 號址產生器所支援的主要 RFC 範圍:

範圍類型 RFC 參考 號址區塊 使用情境
IPv4 文件說明 RFC 5737 192.0.2.0/24198.51.100.0/24203.0.113.0/24 教學文件、螢幕擷圖以及必須避免實際目標的公開範例。
私有 IPv4 RFC 1918 10.0.0.0/8172.16.0.0/12192.168.0.0/16 區域網路、實驗環境設定以及不要求全球唯一性的離線開發。
IPv6 文件說明 RFC 3849 2001:db8::/32 文件說明、教學訓練和設定範例中的 IPv6 範例。

使用這些範圍可確保您的範例符合業界標準,並避免與實際環境發生衝突。例如,IPv4 文件說明區塊在 IANA IPv4 Special-Purpose Registry 中被明確列為「保留供文件說明使用」,表示它們不應出現在實際的路由表中。同樣地,私有 IPv4 號址只在單一網路內有意義,且在部署前必須檢查本機衝突。

如何在 Python 中產生隨機 IPv4 號址

雖然 Python 的 random 模組可以產生任意八位元組,但它不會將輸出限制在安全範圍內。若要在 Python 中產生符合 RFC 的 IPv4 號址,您可以使用以下方法:

  1. 匯入 random 模組並定義 RFC 5737 TEST-NET 區塊: import random TEST_NET_BLOCKS = [ "192.0.2.", "198.51.100.", "203.0.113." ]
  2. 隨機選擇一個區塊,並產生介於 1 到 254 之間的主機八位元組(排除 0 和 255): block = random.choice(TEST_NET_BLOCKS) host = random.randint(1, 254) ipv4_address = f"{block}{host}"
  3. 若要產生多個唯一號址,請使用迴圈搭配集合來強制唯一性: addresses = set() while len(addresses) < 10: # 產生 10 個唯一號址 block = random.choice(TEST_NET_BLOCKS) host = random.randint(1, 254) addresses.add(f"{block}{host}") print(addresses)

此方法可確保產生的號址適合用於文件說明與測試。然而,若要更快速的解決方案,隨機 IP 號址產生器會自動處理所有這些限制,包括去除重複與符合 RFC。

使用隨機 IP 號址產生器產生 IPv4 號址

隨機 IP 號址產生器透過提供基於瀏覽器的介面,簡化了產生最多 100 個唯一 IPv4 文件說明或私有號址的過程。使用方式如下:

  1. 前往隨機 IP 號址產生器工具。
  2. 選擇號址類型:
    • IPv4 文件說明:使用 RFC 5737 TEST-NET 區塊作為公開範例。
    • 私有 IPv4:使用 RFC 1918 區塊作為區域網路(使用前請檢查衝突)。
    • IPv6 文件說明:使用 RFC 3849 字首(2001:db8::/32)作為 IPv6 範例。
  3. 輸入您需要的號址數量(1 到 100)。
  4. 按一下Generate addresses。此工具使用基於瀏覽器的加密隨機性來選擇區塊與主機值。
  5. 複製產生的清單,並將其貼到您的 Python 腳本、文件說明或實驗計畫中。

此工具的實作可確保每次結果中的唯一性,並排除無效的主機八位元組(0 和 255)。由於產生作業完全在本機瀏覽器中進行,因此不會上傳、保留或探測任何號址,非常適合離線使用。

何時應使用私有與文件說明 IPv4 號址

在私有與文件說明 IPv4 號址之間做選擇,取決於您的使用情境。下表概述了適合使用各類型的情境:

情境 建議的號址類型 範例使用情境
公開教學文件或螢幕擷圖 IPv4 文件說明(RFC 5737) 部落格文章、訓練教材或 API 文件,其中必須避免實際目標。
區域網路或實驗環境設定 私有 IPv4(RFC 1918) 設定路由器、VM 或不需要全球唯一性的測試環境。
離線開發或測試 私有 IPv4(RFC 1918) 撰寫可在無網際網路連線情況下模擬網路流量的 Python 腳本或測試 fixture。
IPv6 範例或文件說明 IPv6 文件說明(RFC 3849) 在教學文件或範例程式碼中展示 IPv6 設定。

對於私有 IPv4 號址,請務必檢查產生的清單是否與您網路中現有的主機、子網路或 VPN 發生衝突。雖然此工具可確保目前結果中的唯一性,但私有號址並非全球唯一,因此可能與其他網路重疊。

產生隨機 IPv4 號址的常見陷阱

產生隨機 IPv4 號址看似簡單,但微小的錯誤可能導致無效或不安全的輸出。以下是常見的陷阱以及避免方法:

  • 使用任意八位元組:使用 random.randint(0, 255) 產生八位元組,可能會產生保留號址(例如 0.0.0.0 或 255.255.255.255)。請務必將主機八位元組限制在 1–254,並使用 RFC 定義的區塊。
  • 忽略 RFC 範圍:公開範例應使用 RFC 5737 TEST-NET 區塊,而非真實的公開號址(例如 8.8.8.8)。隨機 IP 號址產生器會自動強制執行此規則。
  • 假設唯一性:私有 IPv4 號址並非全球唯一。在指派之前,請務必檢查您區域網路中的衝突。
  • 忘記 IPv6:如果您的使用情境涉及 IPv6,請使用 RFC 3849 文件說明字首(2001:db8::/32),而非產生任意值。
  • 上傳或探測號址:切勿使用聲稱可「保留」或「驗證」所產生號址的工具。隨機 IP 號址產生器會在本機建立號址,而不會進行探測或保留。

遵循這些指引,您即可產生安全、有效且適合您特定任務的 IPv4 號址。

延伸閱讀:如何在不使用程式碼的情況下於 Java 中產生隨機字母

延伸閱讀:從任何清單中隨機抽出獲獎者的轉盤