diff --git a/src/etc/inc/filter.inc b/src/etc/inc/filter.inc
index 8e7a7fe3b329b73e22f7e6185b97d7db3eb3737a..92606c8e767a7e696cfeb0a1d9aaa96f1a891f26 100644
--- a/src/etc/inc/filter.inc
+++ b/src/etc/inc/filter.inc
@@ -3381,7 +3381,7 @@ function filter_generate_user_rule($rule) {
 function filter_rules_generate() {
 	global $config, $g, $FilterIflist, $time_based_rules, $GatewaysList,
 	       $tracker, $vlanprio_values, $antilockout_tracker,
-	       $bogons_tracker, $rfc1918_tracker;
+	       $bogons_tracker, $rfc1918_tracker, $vpn_and_ppp_ifs;
 
 	$fix_rule_label = 'fix_rule_label';
 	$increment_tracker = 'filter_rule_tracker';
@@ -3955,7 +3955,6 @@ EOD;
 		$rule_arr1 = array();
 		$rule_arr2 = array();
 		$rule_arr3 = array();
-		$vpn_and_ppp_ifs = array("l2tp", "pptp", "pppoe", "enc0", "openvpn");
 		/*
 		 * NB: The order must be: Floating rules, then interface group and then regular ones.
 		 */
diff --git a/src/etc/inc/globals.inc b/src/etc/inc/globals.inc
index 2e94303d0fcb4c5fffa90e12bd665227296cd39a..b85805e1f879a53dfff19c86dc0db23872c85fee 100644
--- a/src/etc/inc/globals.inc
+++ b/src/etc/inc/globals.inc
@@ -344,4 +344,6 @@ $ipsec_filter_sysctl = array(
 	),
 );
 
+global $vpn_and_ppp_ifs;
+$vpn_and_ppp_ifs = array("l2tp", "pppoe", "enc0", "openvpn");
 ?>
diff --git a/src/etc/inc/util.inc b/src/etc/inc/util.inc
index 376da9bfbdc9873a836ea3822aabcd29047ce74b..d3429a97552fd7d4cedd91da24700de67f43fa73 100644
--- a/src/etc/inc/util.inc
+++ b/src/etc/inc/util.inc
@@ -3744,4 +3744,27 @@ function is_specialnet($net) {
 		return false;
 	}
 }
+
+function is_interface_ipaddr($interface) {
+	global $config;
+
+	if (is_array($config['interfaces'][$interface]) &&
+	    isset($config['interfaces'][$interface]['ipaddr']) &&
+	    !empty($config['interfaces'][$interface]['ipaddr'])) {
+		return true;
+	}
+	return false;
+}
+
+function is_interface_ipaddrv6($interface) {
+	global $config;
+
+	if (is_array($config['interfaces'][$interface]) &&
+	    isset($config['interfaces'][$interface]['ipaddrv6']) &&
+	    !empty($config['interfaces'][$interface]['ipaddrv6'])) {
+		return true;
+	}
+	return false;
+}
+
 ?>
diff --git a/src/usr/local/www/firewall_nat_1to1_edit.php b/src/usr/local/www/firewall_nat_1to1_edit.php
index 58d50af2f5532d0ab5fe747049bc8551b60427b3..e4fb1df71667b7763854b826707b17bcb68ad75f 100644
--- a/src/usr/local/www/firewall_nat_1to1_edit.php
+++ b/src/usr/local/www/firewall_nat_1to1_edit.php
@@ -175,9 +175,10 @@ if ($_POST['save']) {
 	$srcipaddrtype = false;
 	$dstipaddrtype = false;
 
-	if ((($_POST['ipprotocol'] == 'inet') && !get_interface_ip($_POST['interface'])) ||
-	    (($_POST['ipprotocol'] == 'inet6') && !get_interface_ipv6($_POST['interface']))) {
-		$input_errors[] = gettext("The interface do not have address from the specified address family.");
+	if (((($_POST['ipprotocol'] == 'inet') && !is_interface_ipaddr($_POST['interface'])) ||
+	    (($_POST['ipprotocol'] == 'inet6') && !is_interface_ipaddrv6($_POST['interface']))) &&
+       	    !is_interface_group($_POST['interface']) && !in_array($_POST['interface'], $vpn_and_ppp_ifs)) {
+		$input_errors[] = gettext("The interface does not have an address from the specified address family.");
 	}
 
 	if ($_POST['external'] && !is_specialnet($_POST['exttype']) &&
