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,並在每次結果中強制唯一性,來避免這些陷阱。這可確保號址在語法上有效、適合用於公開範例,且在測試環境中不會發生意外衝突。

為何 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 號址,您可以使用以下方法:
- 匯入 random 模組並定義 RFC 5737 TEST-NET 區塊: import random TEST_NET_BLOCKS = [ "192.0.2.", "198.51.100.", "203.0.113." ]
- 隨機選擇一個區塊,並產生介於 1 到 254 之間的主機八位元組(排除 0 和 255): block = random.choice(TEST_NET_BLOCKS) host = random.randint(1, 254) ipv4_address = f"{block}{host}"
- 若要產生多個唯一號址,請使用迴圈搭配集合來強制唯一性: 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 文件說明或私有號址的過程。使用方式如下:
- 前往隨機 IP 號址產生器工具。
- 選擇號址類型:
- IPv4 文件說明:使用 RFC 5737 TEST-NET 區塊作為公開範例。
- 私有 IPv4:使用 RFC 1918 區塊作為區域網路(使用前請檢查衝突)。
- IPv6 文件說明:使用 RFC 3849 字首(2001:db8::/32)作為 IPv6 範例。
- 輸入您需要的號址數量(1 到 100)。
- 按一下Generate addresses。此工具使用基於瀏覽器的加密隨機性來選擇區塊與主機值。
- 複製產生的清單,並將其貼到您的 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 中產生隨機字母。
延伸閱讀:從任何清單中隨機抽出獲獎者的轉盤。