broadcast address only applies to correct subnet
Ultimately, the problem stemmed from a ping to an address
with the wrong subnet mask (auto-filled subnet) which turned
the address (which should have been routed) into a local broadcast.
Only the global broadcast, or a local broadcast should be accepted,
not a broadcast that should be routed.
This can be seen in Level 4, Small Subnets puzzle.
1.) fix router2 to be /31
2.) from pc1, ping pc2 (which turns into 192.168.1.3)
-autoIP filled in a subnet mask of 255.255.255.252
-therefore 1.3 is considered the broadcast IP.
-result: a local broadcast on the 192.168.2 network.
3.) from pc1, ping 192.168.1.1 or 192.168.1.4 works fine.
4.) edit firewall1, edit route to 192.168.1.1
-make no changes, just hit OK
5.) again from pc1 ping pc2
-now autoIP fills in subnet mask 255.255.255.0
-result: it works
This commit is contained in:
@@ -1431,7 +1431,12 @@ namespace EduNetworkBuilder
|
|||||||
public bool HasBroadcastAddress(NB_IPAddress dest)
|
public bool HasBroadcastAddress(NB_IPAddress dest)
|
||||||
{
|
{
|
||||||
if (dest.BroadcastAddress == dest.GetIP) return true;
|
if (dest.BroadcastAddress == dest.GetIP) return true;
|
||||||
foreach(NetworkCard nic in NICs)
|
|
||||||
|
//This "fixes" a strange fringe case of when we configure a subnet such that
|
||||||
|
//a packet that is traversing the network suddenly is a broadcast packet on the
|
||||||
|
//target network. Gotta have odd subnetting for this to happen
|
||||||
|
if (NB.BroadcastIPString == dest.GetIPString) return true;
|
||||||
|
foreach (NetworkCard nic in NICs)
|
||||||
{
|
{
|
||||||
if (nic.HasBroadcastAddresses(dest))
|
if (nic.HasBroadcastAddresses(dest))
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
Reference in New Issue
Block a user