From f437c07ce54e25627b14456ee95285a556952077 Mon Sep 17 00:00:00 2001 From: Tim Young <tim.young@lightsys.org> Date: Thu, 31 Aug 2017 09:43:44 -0500 Subject: [PATCH] allow firewall rules to affect outbound VPN connections. --- EduNetworkBuilder/NetworkCard.cs | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/EduNetworkBuilder/NetworkCard.cs b/EduNetworkBuilder/NetworkCard.cs index 689052d..ce3b134 100644 --- a/EduNetworkBuilder/NetworkCard.cs +++ b/EduNetworkBuilder/NetworkCard.cs @@ -596,6 +596,27 @@ namespace EduNetworkBuilder case NicType.vpn: foreach (NetworkInterface nf in interfaces.ToList()) { + //make sure the firewall allows this. + if (tPacket.WhereAmI != null && tPacket.WhereAmI is NetworkDevice) + { + NetworkDevice ND = (NetworkDevice)tPacket.WhereAmI; + if (tPacket.InboundInterface != null && nf != null && !ND.FirewallAllows(tPacket.InboundInterface.nic_name, nf.nic_name)) + { + //The firewall might block it. Check to see if it is a response packet + ResponseToPacket rtp = ND.HowToRespondToPacket(tPacket); + if (rtp != ResponseToPacket.accept) + { + //If we are here, the packet is rejected. + string message = string.Format(NB.Translate("P_FirewallDropped"), ND.hostname); + tPacket.AddMessage(DebugLevel.filtering, message); + tPacket.Tracking.Status = message; + tPacket.Tracking.AddMessage(DebugLevel.info, ND, message); + tPacket.AddMessage(DebugLevel.info, message); + tPacket.MyStatus = PacketStatus.finished_ok; + break; + } + } + } if (nf.isLocal(tPacket.OutboundIP, false)) { //We need to tell the original packet that it is inside another packet