diff --git a/src/etc/rc.d/netflow b/src/etc/rc.d/netflow index bfddedd2e..7eb466788 100755 --- a/src/etc/rc.d/netflow +++ b/src/etc/rc.d/netflow @@ -40,6 +40,7 @@ status_cmd="${name}_status" extra_commands="status" [ -z "$netflow_enable" ] && netflow_enable="NO" +[ -z "$netflow_egress_only" ] && netflow_egress_only="" # setup_interface (interface) # - use netgraph + ng_netflow in combination with samplicate to record netflow data and send it to multiple locations @@ -58,7 +59,16 @@ setup_interface() echo "error : interface $interface not found" return fi - echo "setup $interface" + # disable ingress (traffic to this host) for selected interfaces + # avoids counting traffic going through this firewall double when using nat + if [ ! -z "`echo " $netflow_egress_only " | grep " $interface "`" ]; then + conf="10" + echo "setup $interface [egress only]" + else + conf="11" + echo "setup $interface" + fi; + # make sure netgraph is attached /usr/local/sbin/ngattach $interface # remove earlier setup (if any) @@ -69,7 +79,7 @@ setup_interface() name $interface:lower netflow_$interface connect $interface: netflow_$interface: upper out$ifIndex mkpeer netflow_$interface: ksocket export$nfversion inet/dgram/udp - msg netflow_$interface: setconfig {iface=$ifIndex conf=11} + msg netflow_$interface: setconfig {iface=$ifIndex conf=$conf} msg netflow_$interface:export$nfversion connect inet/$netflow_int_destination SEQ } diff --git a/src/opnsense/mvc/app/controllers/OPNsense/Diagnostics/forms/netflow_capture.xml b/src/opnsense/mvc/app/controllers/OPNsense/Diagnostics/forms/netflow_capture.xml index 9bd210491..c52fc5421 100644 --- a/src/opnsense/mvc/app/controllers/OPNsense/Diagnostics/forms/netflow_capture.xml +++ b/src/opnsense/mvc/app/controllers/OPNsense/Diagnostics/forms/netflow_capture.xml @@ -7,6 +7,14 @@ Type or select interface. + + netflow.capture.egress_only + + select_multiple + + + Type or select interface. + netflow.collect.enable diff --git a/src/opnsense/mvc/app/models/OPNsense/Diagnostics/Netflow.xml b/src/opnsense/mvc/app/models/OPNsense/Diagnostics/Netflow.xml index d32454ae7..886f97c2a 100644 --- a/src/opnsense/mvc/app/models/OPNsense/Diagnostics/Netflow.xml +++ b/src/opnsense/mvc/app/models/OPNsense/Diagnostics/Netflow.xml @@ -13,6 +13,14 @@ /^(?!0).*$/ + + N + wan + Y + + /^(?!0).*$/ + + Y v9 diff --git a/src/opnsense/service/templates/OPNsense/Netflow/netflow.conf b/src/opnsense/service/templates/OPNsense/Netflow/netflow.conf index f6c36a40a..f9d70b315 100644 --- a/src/opnsense/service/templates/OPNsense/Netflow/netflow.conf +++ b/src/opnsense/service/templates/OPNsense/Netflow/netflow.conf @@ -11,6 +11,11 @@ OPNsense.Netflow.capture.targets.strip() %} netflow_interfaces="{% for interface in OPNsense.Netflow.capture.interfaces.split(',') +%}{{ + physical_interface(interface) +}} {% + endfor%}" +netflow_egress_only="{% for interface in OPNsense.Netflow.capture.egress_only.split(',') %}{{ physical_interface(interface) }} {%