快速計算子網路IP和廣播IP的方法

快速計算子網路IP和廣播IP的方法

我無法找到一種快速/有效的方法來根據給定的路由器 IP 和網路遮罩來確定有效的 IP 範圍

我知道如何透過將所有 IP 和網路遮罩轉換為二進位並執行位元 AND/OR 來計算子網路 IP 和廣播 IP,但這種方法需要花費大量時間,並且很容易導致錯誤...

答案1

有各種網站和應用程式可以為您進行計算,例如http://www.subnet-calculator.com/cidr.php

否則,使用網路遮罩計算子網路的大小(2 的網路遮罩中零位數的冪)。尋找恰好是子網路大小的倍數但小於路由器 IP 位址的最高 IP 位址。該IP位址就是網路位址,IP位址加上子網路大小減1就是廣播位址。

答案2

如果某件事需要時間,請寫腳本。

Python 有以下ipaddress模組:

$ python
Python 3.4.2 (default, Oct  8 2014, 13:44:52) 
>>> import ipaddress
>>> x = ipaddress.IPv6Interface("2001:470:709a:107::1a2b:3c/64")
>>> x.network
IPv6Network('2001:470:709a:107::/64')
>>> y = ipaddress.IPv4Interface("194.219.181.195/26")
>>> y.network
IPv4Network('194.219.181.192/26')
>>> y.network.network_address
IPv4Address('194.219.181.192')
>>> y.network.broadcast_address
IPv4Address('194.219.181.255')

這會導致:

#!/usr/bin/env python
import ipaddress
import sys

for arg in sys.argv[1:]:
    addr = ipaddress.ip_interface(arg)
    print("address =", addr)
    print("network =", addr.network)
    if addr.version == 4:
        print("netmask =", addr.netmask)
        print("broadcast =", addr.network.broadcast_address)
    print()

相關內容