@@ -695,13 +695,21 @@ def test_ipv4_state_and_status_rules(self):
695
695
self .verify_nftables_chain ([['accept' ]], 'ip vyos_conntrack' , 'FW_CONNTRACK' )
696
696
self .verify_nftables_chain ([['return' ]], 'ip6 vyos_conntrack' , 'FW_CONNTRACK' )
697
697
698
- def test_bridge_basic_rules (self ):
698
+ def test_bridge_firewall (self ):
699
699
name = 'smoketest'
700
700
interface_in = 'eth0'
701
701
mac_address = '00:53:00:00:00:01'
702
702
vlan_id = '12'
703
703
vlan_prior = '3'
704
704
705
+ # Check bridge-nf-call-iptables default value: 0
706
+ self .assertEqual (get_sysctl ('net.bridge.bridge-nf-call-iptables' ), '0' )
707
+ self .assertEqual (get_sysctl ('net.bridge.bridge-nf-call-ip6tables' ), '0' )
708
+
709
+ self .cli_set (['firewall' , 'group' , 'ipv6-address-group' , 'AGV6' , 'address' , '2001:db1::1' ])
710
+ self .cli_set (['firewall' , 'global-options' , 'state-policy' , 'established' , 'action' , 'accept' ])
711
+ self .cli_set (['firewall' , 'global-options' , 'apply-for-bridge' , 'ipv4' ])
712
+
705
713
self .cli_set (['firewall' , 'bridge' , 'name' , name , 'default-action' , 'accept' ])
706
714
self .cli_set (['firewall' , 'bridge' , 'name' , name , 'default-log' ])
707
715
self .cli_set (['firewall' , 'bridge' , 'name' , name , 'rule' , '1' , 'action' , 'accept' ])
@@ -718,20 +726,42 @@ def test_bridge_basic_rules(self):
718
726
self .cli_set (['firewall' , 'bridge' , 'forward' , 'filter' , 'rule' , '2' , 'jump-target' , name ])
719
727
self .cli_set (['firewall' , 'bridge' , 'forward' , 'filter' , 'rule' , '2' , 'vlan' , 'priority' , vlan_prior ])
720
728
729
+ self .cli_set (['firewall' , 'bridge' , 'input' , 'filter' , 'rule' , '1' , 'action' , 'accept' ])
730
+ self .cli_set (['firewall' , 'bridge' , 'input' , 'filter' , 'rule' , '1' , 'inbound-interface' , 'name' , interface_in ])
731
+ self .cli_set (['firewall' , 'bridge' , 'input' , 'filter' , 'rule' , '1' , 'source' , 'address' , '192.0.2.2' ])
732
+ self .cli_set (['firewall' , 'bridge' , 'input' , 'filter' , 'rule' , '1' , 'state' , 'new' ])
733
+
734
+ self .cli_set (['firewall' , 'bridge' , 'prerouting' , 'filter' , 'rule' , '1' , 'action' , 'drop' ])
735
+ self .cli_set (['firewall' , 'bridge' , 'prerouting' , 'filter' , 'rule' , '1' , 'destination' , 'group' , 'ipv6-address-group' , 'AGV6' ])
736
+
737
+
721
738
self .cli_commit ()
722
739
723
740
nftables_search = [
741
+ ['set A6_AGV6' ],
742
+ ['type ipv6_addr' ],
743
+ ['elements' , '2001:db1::1' ],
724
744
['chain VYOS_FORWARD_filter' ],
725
745
['type filter hook forward priority filter; policy accept;' ],
746
+ ['jump VYOS_STATE_POLICY' ],
726
747
[f'vlan id { vlan_id } ' , 'accept' ],
727
748
[f'vlan pcp { vlan_prior } ' , f'jump NAME_{ name } ' ],
728
749
['log prefix "[bri-FWD-filter-default-D]"' , 'drop' , 'FWD-filter default-action drop' ],
729
750
[f'chain NAME_{ name } ' ],
730
751
[f'ether saddr { mac_address } ' , f'iifname "{ interface_in } "' , f'log prefix "[bri-NAM-{ name } -1-A]" log level crit' , 'accept' ],
731
- ['accept' , f'{ name } default-action accept' ]
752
+ ['accept' , f'{ name } default-action accept' ],
753
+ ['chain VYOS_INPUT_filter' ],
754
+ ['type filter hook input priority filter; policy accept;' ],
755
+ ['ct state new' , 'ip saddr 192.0.2.2' , f'iifname "{ interface_in } "' , 'accept' ],
756
+ ['chain VYOS_PREROUTING_filter' ],
757
+ ['type filter hook prerouting priority filter; policy accept;' ],
758
+ ['ip6 daddr @A6_AGV6' , 'drop' ]
732
759
]
733
760
734
761
self .verify_nftables (nftables_search , 'bridge vyos_filter' )
762
+ ## Check bridge-nf-call-iptables is set to 1, and for ipv6 remains on default 0
763
+ self .assertEqual (get_sysctl ('net.bridge.bridge-nf-call-iptables' ), '1' )
764
+ self .assertEqual (get_sysctl ('net.bridge.bridge-nf-call-ip6tables' ), '0' )
735
765
736
766
def test_source_validation (self ):
737
767
# Strict
0 commit comments