|
|
|
@ -828,6 +828,18 @@ class SecurityGroupAgentRpcTestCaseForNoneDriver(base.BaseTestCase):
|
|
|
|
|
self.assertEqual(agent.firewall.__class__.__name__,
|
|
|
|
|
'NoopFirewallDriver')
|
|
|
|
|
|
|
|
|
|
def test_get_trusted_devices(self):
|
|
|
|
|
agent = sg_rpc.SecurityGroupAgentRpc(
|
|
|
|
|
context=None, plugin_rpc=mock.Mock())
|
|
|
|
|
device_ids = ['port_1_id', 'tap_2', 'tap_3', 'port_4_id']
|
|
|
|
|
devices = {
|
|
|
|
|
'port_1_id': {'device': 'tap_1'},
|
|
|
|
|
'port_3_id': {'device': 'tap_3'},
|
|
|
|
|
}
|
|
|
|
|
trusted_devices = agent._get_trusted_devices(
|
|
|
|
|
device_ids, devices)
|
|
|
|
|
self.assertEqual(['tap_2', 'port_4_id'], trusted_devices)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class BaseSecurityGroupAgentRpcTestCase(base.BaseTestCase):
|
|
|
|
|
def setUp(self, defer_refresh_firewall=False):
|
|
|
|
@ -1460,6 +1472,7 @@ CHAINS_NAT = 'OUTPUT|POSTROUTING|PREROUTING|float-snat|snat'
|
|
|
|
|
|
|
|
|
|
IPTABLES_ARG['port1'] = 'port1'
|
|
|
|
|
IPTABLES_ARG['port2'] = 'port2'
|
|
|
|
|
IPTABLES_ARG['port3'] = 'port3'
|
|
|
|
|
IPTABLES_ARG['mac1'] = '12:34:56:78:9A:BC'
|
|
|
|
|
IPTABLES_ARG['mac2'] = '12:34:56:78:9A:BD'
|
|
|
|
|
IPTABLES_ARG['ip1'] = '10.0.0.3/32'
|
|
|
|
@ -1840,7 +1853,7 @@ COMMIT
|
|
|
|
|
# Completed by iptables_manager
|
|
|
|
|
""" % IPTABLES_ARG
|
|
|
|
|
|
|
|
|
|
IPSET_FILTER_2_3 = """# Generated by iptables_manager
|
|
|
|
|
IPSET_FILTER_2_TRUSTED = """# Generated by iptables_manager
|
|
|
|
|
*filter
|
|
|
|
|
:FORWARD - [0:0]
|
|
|
|
|
:INPUT - [0:0]
|
|
|
|
@ -1864,13 +1877,103 @@ IPSET_FILTER_2_3 = """# Generated by iptables_manager
|
|
|
|
|
-I OUTPUT 1 -j neutron-filter-top
|
|
|
|
|
-I OUTPUT 2 -j %(bn)s-OUTPUT
|
|
|
|
|
-I neutron-filter-top 1 -j %(bn)s-local
|
|
|
|
|
-I %(bn)s-FORWARD 1 %(physdev_mod)s --physdev-INGRESS tap_%(port1)s \
|
|
|
|
|
-I %(bn)s-FORWARD 1 %(physdev_mod)s --physdev-INGRESS tap_%(port3)s \
|
|
|
|
|
%(physdev_is_bridged)s -j ACCEPT
|
|
|
|
|
-I %(bn)s-FORWARD 2 %(physdev_mod)s --physdev-INGRESS tap_%(port1)s \
|
|
|
|
|
%(physdev_is_bridged)s -j %(bn)s-sg-chain
|
|
|
|
|
-I %(bn)s-FORWARD 2 %(physdev_mod)s --physdev-EGRESS tap_%(port1)s \
|
|
|
|
|
-I %(bn)s-FORWARD 3 %(physdev_mod)s --physdev-EGRESS tap_%(port1)s \
|
|
|
|
|
%(physdev_is_bridged)s -j %(bn)s-sg-chain
|
|
|
|
|
-I %(bn)s-FORWARD 3 %(physdev_mod)s --physdev-INGRESS tap_%(port2)s \
|
|
|
|
|
-I %(bn)s-FORWARD 4 %(physdev_mod)s --physdev-INGRESS tap_%(port2)s \
|
|
|
|
|
%(physdev_is_bridged)s -j %(bn)s-sg-chain
|
|
|
|
|
-I %(bn)s-FORWARD 4 %(physdev_mod)s --physdev-EGRESS tap_%(port2)s \
|
|
|
|
|
-I %(bn)s-FORWARD 5 %(physdev_mod)s --physdev-EGRESS tap_%(port2)s \
|
|
|
|
|
%(physdev_is_bridged)s -j %(bn)s-sg-chain
|
|
|
|
|
-I %(bn)s-INPUT 1 %(physdev_mod)s --physdev-EGRESS tap_%(port1)s \
|
|
|
|
|
%(physdev_is_bridged)s -j %(bn)s-o_%(port1)s
|
|
|
|
|
-I %(bn)s-INPUT 2 %(physdev_mod)s --physdev-EGRESS tap_%(port2)s \
|
|
|
|
|
%(physdev_is_bridged)s -j %(bn)s-o_%(port2)s
|
|
|
|
|
-I %(bn)s-i_%(port1)s 1 -m state --state RELATED,ESTABLISHED -j RETURN
|
|
|
|
|
-I %(bn)s-i_%(port1)s 2 -s 10.0.0.2/32 -p udp -m udp --sport 67 \
|
|
|
|
|
--dport 68 -j RETURN
|
|
|
|
|
-I %(bn)s-i_%(port1)s 3 -p tcp -m tcp --dport 22 -j RETURN
|
|
|
|
|
-I %(bn)s-i_%(port1)s 4 -m set --match-set NIPv4security_group1 src -j RETURN
|
|
|
|
|
-I %(bn)s-i_%(port1)s 5 -m state --state INVALID -j DROP
|
|
|
|
|
-I %(bn)s-i_%(port1)s 6 -j %(bn)s-sg-fallback
|
|
|
|
|
-I %(bn)s-i_%(port2)s 1 -m state --state RELATED,ESTABLISHED -j RETURN
|
|
|
|
|
-I %(bn)s-i_%(port2)s 2 -s 10.0.0.2/32 -p udp -m udp --sport 67 \
|
|
|
|
|
--dport 68 -j RETURN
|
|
|
|
|
-I %(bn)s-i_%(port2)s 3 -p tcp -m tcp --dport 22 -j RETURN
|
|
|
|
|
-I %(bn)s-i_%(port2)s 4 -m set --match-set NIPv4security_group1 src -j RETURN
|
|
|
|
|
-I %(bn)s-i_%(port2)s 5 -m state --state INVALID -j DROP
|
|
|
|
|
-I %(bn)s-i_%(port2)s 6 -j %(bn)s-sg-fallback
|
|
|
|
|
-I %(bn)s-o_%(port1)s 1 -s 0.0.0.0/32 -d 255.255.255.255/32 -p udp -m udp \
|
|
|
|
|
--sport 68 --dport 67 -j RETURN
|
|
|
|
|
-I %(bn)s-o_%(port1)s 2 -j %(bn)s-s_%(port1)s
|
|
|
|
|
-I %(bn)s-o_%(port1)s 3 -p udp -m udp --sport 68 --dport 67 -j RETURN
|
|
|
|
|
-I %(bn)s-o_%(port1)s 4 -p udp -m udp --sport 67 --dport 68 -j DROP
|
|
|
|
|
-I %(bn)s-o_%(port1)s 5 -m state --state RELATED,ESTABLISHED -j RETURN
|
|
|
|
|
-I %(bn)s-o_%(port1)s 6 -j RETURN
|
|
|
|
|
-I %(bn)s-o_%(port1)s 7 -m state --state INVALID -j DROP
|
|
|
|
|
-I %(bn)s-o_%(port1)s 8 -j %(bn)s-sg-fallback
|
|
|
|
|
-I %(bn)s-o_%(port2)s 1 -s 0.0.0.0/32 -d 255.255.255.255/32 -p udp -m udp \
|
|
|
|
|
--sport 68 --dport 67 -j RETURN
|
|
|
|
|
-I %(bn)s-o_%(port2)s 2 -j %(bn)s-s_%(port2)s
|
|
|
|
|
-I %(bn)s-o_%(port2)s 3 -p udp -m udp --sport 68 --dport 67 -j RETURN
|
|
|
|
|
-I %(bn)s-o_%(port2)s 4 -p udp -m udp --sport 67 --dport 68 -j DROP
|
|
|
|
|
-I %(bn)s-o_%(port2)s 5 -m state --state RELATED,ESTABLISHED -j RETURN
|
|
|
|
|
-I %(bn)s-o_%(port2)s 6 -j RETURN
|
|
|
|
|
-I %(bn)s-o_%(port2)s 7 -m state --state INVALID -j DROP
|
|
|
|
|
-I %(bn)s-o_%(port2)s 8 -j %(bn)s-sg-fallback
|
|
|
|
|
-I %(bn)s-s_%(port1)s 1 -s %(ip1)s -m mac --mac-source %(mac1)s -j RETURN
|
|
|
|
|
-I %(bn)s-s_%(port1)s 2 -j DROP
|
|
|
|
|
-I %(bn)s-s_%(port2)s 1 -s %(ip2)s -m mac --mac-source %(mac2)s -j RETURN
|
|
|
|
|
-I %(bn)s-s_%(port2)s 2 -j DROP
|
|
|
|
|
-I %(bn)s-sg-chain 1 %(physdev_mod)s --physdev-INGRESS tap_%(port1)s \
|
|
|
|
|
%(physdev_is_bridged)s -j %(bn)s-i_%(port1)s
|
|
|
|
|
-I %(bn)s-sg-chain 2 %(physdev_mod)s --physdev-EGRESS tap_%(port1)s \
|
|
|
|
|
%(physdev_is_bridged)s -j %(bn)s-o_%(port1)s
|
|
|
|
|
-I %(bn)s-sg-chain 3 %(physdev_mod)s --physdev-INGRESS tap_%(port2)s \
|
|
|
|
|
%(physdev_is_bridged)s -j %(bn)s-i_%(port2)s
|
|
|
|
|
-I %(bn)s-sg-chain 4 %(physdev_mod)s --physdev-EGRESS tap_%(port2)s \
|
|
|
|
|
%(physdev_is_bridged)s -j %(bn)s-o_%(port2)s
|
|
|
|
|
-I %(bn)s-sg-chain 5 -j ACCEPT
|
|
|
|
|
-I %(bn)s-sg-fallback 1 -j DROP
|
|
|
|
|
COMMIT
|
|
|
|
|
# Completed by iptables_manager
|
|
|
|
|
""" % IPTABLES_ARG
|
|
|
|
|
|
|
|
|
|
IPSET_FILTER_2_3_TRUSTED = """# Generated by iptables_manager
|
|
|
|
|
*filter
|
|
|
|
|
:FORWARD - [0:0]
|
|
|
|
|
:INPUT - [0:0]
|
|
|
|
|
:OUTPUT - [0:0]
|
|
|
|
|
:neutron-filter-top - [0:0]
|
|
|
|
|
:%(bn)s-(%(chains)s) - [0:0]
|
|
|
|
|
:%(bn)s-(%(chains)s) - [0:0]
|
|
|
|
|
:%(bn)s-(%(chains)s) - [0:0]
|
|
|
|
|
:%(bn)s-(%(chains)s) - [0:0]
|
|
|
|
|
:%(bn)s-(%(chains)s) - [0:0]
|
|
|
|
|
:%(bn)s-(%(chains)s) - [0:0]
|
|
|
|
|
:%(bn)s-(%(chains)s) - [0:0]
|
|
|
|
|
:%(bn)s-(%(chains)s) - [0:0]
|
|
|
|
|
:%(bn)s-(%(chains)s) - [0:0]
|
|
|
|
|
:%(bn)s-(%(chains)s) - [0:0]
|
|
|
|
|
:%(bn)s-(%(chains)s) - [0:0]
|
|
|
|
|
:%(bn)s-(%(chains)s) - [0:0]
|
|
|
|
|
-I FORWARD 1 -j neutron-filter-top
|
|
|
|
|
-I FORWARD 2 -j %(bn)s-FORWARD
|
|
|
|
|
-I INPUT 1 -j %(bn)s-INPUT
|
|
|
|
|
-I OUTPUT 1 -j neutron-filter-top
|
|
|
|
|
-I OUTPUT 2 -j %(bn)s-OUTPUT
|
|
|
|
|
-I neutron-filter-top 1 -j %(bn)s-local
|
|
|
|
|
-I %(bn)s-FORWARD 1 %(physdev_mod)s --physdev-INGRESS tap_%(port3)s \
|
|
|
|
|
%(physdev_is_bridged)s -j ACCEPT
|
|
|
|
|
-I %(bn)s-FORWARD 2 %(physdev_mod)s --physdev-INGRESS tap_%(port1)s \
|
|
|
|
|
%(physdev_is_bridged)s -j %(bn)s-sg-chain
|
|
|
|
|
-I %(bn)s-FORWARD 3 %(physdev_mod)s --physdev-EGRESS tap_%(port1)s \
|
|
|
|
|
%(physdev_is_bridged)s -j %(bn)s-sg-chain
|
|
|
|
|
-I %(bn)s-FORWARD 4 %(physdev_mod)s --physdev-INGRESS tap_%(port2)s \
|
|
|
|
|
%(physdev_is_bridged)s -j %(bn)s-sg-chain
|
|
|
|
|
-I %(bn)s-FORWARD 5 %(physdev_mod)s --physdev-EGRESS tap_%(port2)s \
|
|
|
|
|
%(physdev_is_bridged)s -j %(bn)s-sg-chain
|
|
|
|
|
-I %(bn)s-INPUT 1 %(physdev_mod)s --physdev-EGRESS tap_%(port1)s \
|
|
|
|
|
%(physdev_is_bridged)s -j %(bn)s-o_%(port1)s
|
|
|
|
@ -2014,6 +2117,94 @@ COMMIT
|
|
|
|
|
# Completed by iptables_manager
|
|
|
|
|
""" % IPTABLES_ARG
|
|
|
|
|
|
|
|
|
|
IPTABLES_FILTER_2_TRUSTED = """# Generated by iptables_manager
|
|
|
|
|
*filter
|
|
|
|
|
:FORWARD - [0:0]
|
|
|
|
|
:INPUT - [0:0]
|
|
|
|
|
:OUTPUT - [0:0]
|
|
|
|
|
:neutron-filter-top - [0:0]
|
|
|
|
|
:%(bn)s-(%(chains)s) - [0:0]
|
|
|
|
|
:%(bn)s-(%(chains)s) - [0:0]
|
|
|
|
|
:%(bn)s-(%(chains)s) - [0:0]
|
|
|
|
|
:%(bn)s-(%(chains)s) - [0:0]
|
|
|
|
|
:%(bn)s-(%(chains)s) - [0:0]
|
|
|
|
|
:%(bn)s-(%(chains)s) - [0:0]
|
|
|
|
|
:%(bn)s-(%(chains)s) - [0:0]
|
|
|
|
|
:%(bn)s-(%(chains)s) - [0:0]
|
|
|
|
|
:%(bn)s-(%(chains)s) - [0:0]
|
|
|
|
|
:%(bn)s-(%(chains)s) - [0:0]
|
|
|
|
|
:%(bn)s-(%(chains)s) - [0:0]
|
|
|
|
|
:%(bn)s-(%(chains)s) - [0:0]
|
|
|
|
|
-I FORWARD 1 -j neutron-filter-top
|
|
|
|
|
-I FORWARD 2 -j %(bn)s-FORWARD
|
|
|
|
|
-I INPUT 1 -j %(bn)s-INPUT
|
|
|
|
|
-I OUTPUT 1 -j neutron-filter-top
|
|
|
|
|
-I OUTPUT 2 -j %(bn)s-OUTPUT
|
|
|
|
|
-I neutron-filter-top 1 -j %(bn)s-local
|
|
|
|
|
-I %(bn)s-FORWARD 1 %(physdev_mod)s --physdev-INGRESS tap_%(port3)s \
|
|
|
|
|
%(physdev_is_bridged)s -j ACCEPT
|
|
|
|
|
-I %(bn)s-FORWARD 2 %(physdev_mod)s --physdev-INGRESS tap_%(port1)s \
|
|
|
|
|
%(physdev_is_bridged)s -j %(bn)s-sg-chain
|
|
|
|
|
-I %(bn)s-FORWARD 3 %(physdev_mod)s --physdev-EGRESS tap_%(port1)s \
|
|
|
|
|
%(physdev_is_bridged)s -j %(bn)s-sg-chain
|
|
|
|
|
-I %(bn)s-FORWARD 4 %(physdev_mod)s --physdev-INGRESS tap_%(port2)s \
|
|
|
|
|
%(physdev_is_bridged)s -j %(bn)s-sg-chain
|
|
|
|
|
-I %(bn)s-FORWARD 5 %(physdev_mod)s --physdev-EGRESS tap_%(port2)s \
|
|
|
|
|
%(physdev_is_bridged)s -j %(bn)s-sg-chain
|
|
|
|
|
-I %(bn)s-INPUT 1 %(physdev_mod)s --physdev-EGRESS tap_%(port1)s \
|
|
|
|
|
%(physdev_is_bridged)s -j %(bn)s-o_%(port1)s
|
|
|
|
|
-I %(bn)s-INPUT 2 %(physdev_mod)s --physdev-EGRESS tap_%(port2)s \
|
|
|
|
|
%(physdev_is_bridged)s -j %(bn)s-o_%(port2)s
|
|
|
|
|
-I %(bn)s-i_%(port1)s 1 -m state --state RELATED,ESTABLISHED -j RETURN
|
|
|
|
|
-I %(bn)s-i_%(port1)s 2 -s 10.0.0.2/32 -p udp -m udp --sport 67 \
|
|
|
|
|
--dport 68 -j RETURN
|
|
|
|
|
-I %(bn)s-i_%(port1)s 3 -p tcp -m tcp --dport 22 -j RETURN
|
|
|
|
|
-I %(bn)s-i_%(port1)s 4 -s %(ip2)s -j RETURN
|
|
|
|
|
-I %(bn)s-i_%(port1)s 5 -m state --state INVALID -j DROP
|
|
|
|
|
-I %(bn)s-i_%(port1)s 6 -j %(bn)s-sg-fallback
|
|
|
|
|
-I %(bn)s-i_%(port2)s 1 -m state --state RELATED,ESTABLISHED -j RETURN
|
|
|
|
|
-I %(bn)s-i_%(port2)s 2 -s 10.0.0.2/32 -p udp -m udp --sport 67 \
|
|
|
|
|
--dport 68 -j RETURN
|
|
|
|
|
-I %(bn)s-i_%(port2)s 3 -p tcp -m tcp --dport 22 -j RETURN
|
|
|
|
|
-I %(bn)s-i_%(port2)s 4 -s %(ip1)s -j RETURN
|
|
|
|
|
-I %(bn)s-i_%(port2)s 5 -m state --state INVALID -j DROP
|
|
|
|
|
-I %(bn)s-i_%(port2)s 6 -j %(bn)s-sg-fallback
|
|
|
|
|
-I %(bn)s-o_%(port1)s 1 -s 0.0.0.0/32 -d 255.255.255.255/32 -p udp -m udp \
|
|
|
|
|
--sport 68 --dport 67 -j RETURN
|
|
|
|
|
-I %(bn)s-o_%(port1)s 2 -j %(bn)s-s_%(port1)s
|
|
|
|
|
-I %(bn)s-o_%(port1)s 3 -p udp -m udp --sport 68 --dport 67 -j RETURN
|
|
|
|
|
-I %(bn)s-o_%(port1)s 4 -p udp -m udp --sport 67 --dport 68 -j DROP
|
|
|
|
|
-I %(bn)s-o_%(port1)s 5 -m state --state RELATED,ESTABLISHED -j RETURN
|
|
|
|
|
-I %(bn)s-o_%(port1)s 6 -j RETURN
|
|
|
|
|
-I %(bn)s-o_%(port1)s 7 -m state --state INVALID -j DROP
|
|
|
|
|
-I %(bn)s-o_%(port1)s 8 -j %(bn)s-sg-fallback
|
|
|
|
|
-I %(bn)s-o_%(port2)s 1 -s 0.0.0.0/32 -d 255.255.255.255/32 -p udp -m udp \
|
|
|
|
|
--sport 68 --dport 67 -j RETURN
|
|
|
|
|
-I %(bn)s-o_%(port2)s 2 -j %(bn)s-s_%(port2)s
|
|
|
|
|
-I %(bn)s-o_%(port2)s 3 -p udp -m udp --sport 68 --dport 67 -j RETURN
|
|
|
|
|
-I %(bn)s-o_%(port2)s 4 -p udp -m udp --sport 67 --dport 68 -j DROP
|
|
|
|
|
-I %(bn)s-o_%(port2)s 5 -m state --state RELATED,ESTABLISHED -j RETURN
|
|
|
|
|
-I %(bn)s-o_%(port2)s 6 -j RETURN
|
|
|
|
|
-I %(bn)s-o_%(port2)s 7 -m state --state INVALID -j DROP
|
|
|
|
|
-I %(bn)s-o_%(port2)s 8 -j %(bn)s-sg-fallback
|
|
|
|
|
-I %(bn)s-s_%(port1)s 1 -s %(ip1)s -m mac --mac-source %(mac1)s -j RETURN
|
|
|
|
|
-I %(bn)s-s_%(port1)s 2 -j DROP
|
|
|
|
|
-I %(bn)s-s_%(port2)s 1 -s %(ip2)s -m mac --mac-source %(mac2)s -j RETURN
|
|
|
|
|
-I %(bn)s-s_%(port2)s 2 -j DROP
|
|
|
|
|
-I %(bn)s-sg-chain 1 %(physdev_mod)s --physdev-INGRESS tap_%(port1)s \
|
|
|
|
|
%(physdev_is_bridged)s -j %(bn)s-i_%(port1)s
|
|
|
|
|
-I %(bn)s-sg-chain 2 %(physdev_mod)s --physdev-EGRESS tap_%(port1)s \
|
|
|
|
|
%(physdev_is_bridged)s -j %(bn)s-o_%(port1)s
|
|
|
|
|
-I %(bn)s-sg-chain 3 %(physdev_mod)s --physdev-INGRESS tap_%(port2)s \
|
|
|
|
|
%(physdev_is_bridged)s -j %(bn)s-i_%(port2)s
|
|
|
|
|
-I %(bn)s-sg-chain 4 %(physdev_mod)s --physdev-EGRESS tap_%(port2)s \
|
|
|
|
|
%(physdev_is_bridged)s -j %(bn)s-o_%(port2)s
|
|
|
|
|
-I %(bn)s-sg-chain 5 -j ACCEPT
|
|
|
|
|
-I %(bn)s-sg-fallback 1 -j DROP
|
|
|
|
|
COMMIT
|
|
|
|
|
# Completed by iptables_manager
|
|
|
|
|
""" % IPTABLES_ARG
|
|
|
|
|
|
|
|
|
|
IPTABLES_FILTER_2_2 = """# Generated by iptables_manager
|
|
|
|
|
*filter
|
|
|
|
|
:FORWARD - [0:0]
|
|
|
|
@ -2187,6 +2378,95 @@ COMMIT
|
|
|
|
|
# Completed by iptables_manager
|
|
|
|
|
""" % IPTABLES_ARG
|
|
|
|
|
|
|
|
|
|
IPTABLES_FILTER_2_3_TRUSTED = """# Generated by iptables_manager
|
|
|
|
|
*filter
|
|
|
|
|
:FORWARD - [0:0]
|
|
|
|
|
:INPUT - [0:0]
|
|
|
|
|
:OUTPUT - [0:0]
|
|
|
|
|
:neutron-filter-top - [0:0]
|
|
|
|
|
:%(bn)s-(%(chains)s) - [0:0]
|
|
|
|
|
:%(bn)s-(%(chains)s) - [0:0]
|
|
|
|
|
:%(bn)s-(%(chains)s) - [0:0]
|
|
|
|
|
:%(bn)s-(%(chains)s) - [0:0]
|
|
|
|
|
:%(bn)s-(%(chains)s) - [0:0]
|
|
|
|
|
:%(bn)s-(%(chains)s) - [0:0]
|
|
|
|
|
:%(bn)s-(%(chains)s) - [0:0]
|
|
|
|
|
:%(bn)s-(%(chains)s) - [0:0]
|
|
|
|
|
:%(bn)s-(%(chains)s) - [0:0]
|
|
|
|
|
:%(bn)s-(%(chains)s) - [0:0]
|
|
|
|
|
:%(bn)s-(%(chains)s) - [0:0]
|
|
|
|
|
:%(bn)s-(%(chains)s) - [0:0]
|
|
|
|
|
-I FORWARD 1 -j neutron-filter-top
|
|
|
|
|
-I FORWARD 2 -j %(bn)s-FORWARD
|
|
|
|
|
-I INPUT 1 -j %(bn)s-INPUT
|
|
|
|
|
-I OUTPUT 1 -j neutron-filter-top
|
|
|
|
|
-I OUTPUT 2 -j %(bn)s-OUTPUT
|
|
|
|
|
-I neutron-filter-top 1 -j %(bn)s-local
|
|
|
|
|
-I %(bn)s-FORWARD 1 %(physdev_mod)s --physdev-INGRESS tap_%(port3)s \
|
|
|
|
|
%(physdev_is_bridged)s -j ACCEPT
|
|
|
|
|
-I %(bn)s-FORWARD 2 %(physdev_mod)s --physdev-INGRESS tap_%(port1)s \
|
|
|
|
|
%(physdev_is_bridged)s -j %(bn)s-sg-chain
|
|
|
|
|
-I %(bn)s-FORWARD 3 %(physdev_mod)s --physdev-EGRESS tap_%(port1)s \
|
|
|
|
|
%(physdev_is_bridged)s -j %(bn)s-sg-chain
|
|
|
|
|
-I %(bn)s-FORWARD 4 %(physdev_mod)s --physdev-INGRESS tap_%(port2)s \
|
|
|
|
|
%(physdev_is_bridged)s -j %(bn)s-sg-chain
|
|
|
|
|
-I %(bn)s-FORWARD 5 %(physdev_mod)s --physdev-EGRESS tap_%(port2)s \
|
|
|
|
|
%(physdev_is_bridged)s -j %(bn)s-sg-chain
|
|
|
|
|
-I %(bn)s-INPUT 1 %(physdev_mod)s --physdev-EGRESS tap_%(port1)s \
|
|
|
|
|
%(physdev_is_bridged)s -j %(bn)s-o_%(port1)s
|
|
|
|
|
-I %(bn)s-INPUT 2 %(physdev_mod)s --physdev-EGRESS tap_%(port2)s \
|
|
|
|
|
%(physdev_is_bridged)s -j %(bn)s-o_%(port2)s
|
|
|
|
|
-I %(bn)s-i_%(port1)s 1 -m state --state RELATED,ESTABLISHED -j RETURN
|
|
|
|
|
-I %(bn)s-i_%(port1)s 2 -s 10.0.0.2/32 -p udp -m udp --sport 67 \
|
|
|
|
|
--dport 68 -j RETURN
|
|
|
|
|
-I %(bn)s-i_%(port1)s 3 -p tcp -m tcp --dport 22 -j RETURN
|
|
|
|
|
-I %(bn)s-i_%(port1)s 4 -s %(ip2)s -j RETURN
|
|
|
|
|
-I %(bn)s-i_%(port1)s 5 -p icmp -j RETURN
|
|
|
|
|
-I %(bn)s-i_%(port1)s 6 -m state --state INVALID -j DROP
|
|
|
|
|
-I %(bn)s-i_%(port1)s 7 -j %(bn)s-sg-fallback
|
|
|
|
|
-I %(bn)s-i_%(port2)s 1 -m state --state RELATED,ESTABLISHED -j RETURN
|
|
|
|
|
-I %(bn)s-i_%(port2)s 2 -s 10.0.0.2/32 -p udp -m udp --sport 67 \
|
|
|
|
|
--dport 68 -j RETURN
|
|
|
|
|
-I %(bn)s-i_%(port2)s 3 -p tcp -m tcp --dport 22 -j RETURN
|
|
|
|
|
-I %(bn)s-i_%(port2)s 4 -s %(ip1)s -j RETURN
|
|
|
|
|
-I %(bn)s-i_%(port2)s 5 -p icmp -j RETURN
|
|
|
|
|
-I %(bn)s-i_%(port2)s 6 -m state --state INVALID -j DROP
|
|
|
|
|
-I %(bn)s-i_%(port2)s 7 -j %(bn)s-sg-fallback
|
|
|
|
|
-I %(bn)s-o_%(port1)s 1 -s 0.0.0.0/32 -d 255.255.255.255/32 -p udp -m udp \
|
|
|
|
|
--sport 68 --dport 67 -j RETURN
|
|
|
|
|
-I %(bn)s-o_%(port1)s 2 -j %(bn)s-s_%(port1)s
|
|
|
|
|
-I %(bn)s-o_%(port1)s 3 -p udp -m udp --sport 68 --dport 67 -j RETURN
|
|
|
|
|
-I %(bn)s-o_%(port1)s 4 -p udp -m udp --sport 67 --dport 68 -j DROP
|
|
|
|
|
-I %(bn)s-o_%(port1)s 5 -m state --state RELATED,ESTABLISHED -j RETURN
|
|
|
|
|
-I %(bn)s-o_%(port1)s 6 -j RETURN
|
|
|
|
|
-I %(bn)s-o_%(port1)s 7 -m state --state INVALID -j DROP
|
|
|
|
|
-I %(bn)s-o_%(port1)s 8 -j %(bn)s-sg-fallback
|
|
|
|
|
-I %(bn)s-o_%(port2)s 1 -s 0.0.0.0/32 -d 255.255.255.255/32 -p udp -m udp \
|
|
|
|
|
--sport 68 --dport 67 -j RETURN
|
|
|
|
|
-I %(bn)s-o_%(port2)s 2 -j %(bn)s-s_%(port2)s
|
|
|
|
|
-I %(bn)s-o_%(port2)s 3 -p udp -m udp --sport 68 --dport 67 -j RETURN
|
|
|
|
|
-I %(bn)s-o_%(port2)s 4 -p udp -m udp --sport 67 --dport 68 -j DROP
|
|
|
|
|
-I %(bn)s-o_%(port2)s 5 -m state --state RELATED,ESTABLISHED -j RETURN
|
|
|
|
|
-I %(bn)s-o_%(port2)s 6 -j RETURN
|
|
|
|
|
-I %(bn)s-o_%(port2)s 7 -m state --state INVALID -j DROP
|
|
|
|
|
-I %(bn)s-o_%(port2)s 8 -j %(bn)s-sg-fallback
|
|
|
|
|
-I %(bn)s-s_%(port1)s 1 -s %(ip1)s -m mac --mac-source %(mac1)s -j RETURN
|
|
|
|
|
-I %(bn)s-s_%(port1)s 2 -j DROP
|
|
|
|
|
-I %(bn)s-s_%(port2)s 1 -s %(ip2)s -m mac --mac-source %(mac2)s -j RETURN
|
|
|
|
|
-I %(bn)s-s_%(port2)s 2 -j DROP
|
|
|
|
|
-I %(bn)s-sg-chain 1 %(physdev_mod)s --physdev-INGRESS tap_%(port1)s \
|
|
|
|
|
%(physdev_is_bridged)s -j %(bn)s-i_%(port1)s
|
|
|
|
|
-I %(bn)s-sg-chain 2 %(physdev_mod)s --physdev-EGRESS tap_%(port1)s \
|
|
|
|
|
%(physdev_is_bridged)s -j %(bn)s-o_%(port1)s
|
|
|
|
|
-I %(bn)s-sg-chain 3 %(physdev_mod)s --physdev-INGRESS tap_%(port2)s \
|
|
|
|
|
%(physdev_is_bridged)s -j %(bn)s-i_%(port2)s
|
|
|
|
|
-I %(bn)s-sg-chain 4 %(physdev_mod)s --physdev-EGRESS tap_%(port2)s \
|
|
|
|
|
%(physdev_is_bridged)s -j %(bn)s-o_%(port2)s
|
|
|
|
|
-I %(bn)s-sg-chain 5 -j ACCEPT
|
|
|
|
|
-I %(bn)s-sg-fallback 1 -j DROP
|
|
|
|
|
COMMIT
|
|
|
|
|
# Completed by iptables_manager
|
|
|
|
|
""" % IPTABLES_ARG
|
|
|
|
|
|
|
|
|
|
IPTABLES_ARG['chains'] = CHAINS_EMPTY
|
|
|
|
|
IPTABLES_FILTER_EMPTY = """# Generated by iptables_manager
|
|
|
|
@ -2358,6 +2638,94 @@ COMMIT
|
|
|
|
|
# Completed by iptables_manager
|
|
|
|
|
""" % IPTABLES_ARG
|
|
|
|
|
|
|
|
|
|
IPTABLES_FILTER_V6_2_TRUSTED = """# Generated by iptables_manager
|
|
|
|
|
*filter
|
|
|
|
|
:FORWARD - [0:0]
|
|
|
|
|
:INPUT - [0:0]
|
|
|
|
|
:OUTPUT - [0:0]
|
|
|
|
|
:neutron-filter-top - [0:0]
|
|
|
|
|
:%(bn)s-(%(chains)s) - [0:0]
|
|
|
|
|
:%(bn)s-(%(chains)s) - [0:0]
|
|
|
|
|
:%(bn)s-(%(chains)s) - [0:0]
|
|
|
|
|
:%(bn)s-(%(chains)s) - [0:0]
|
|
|
|
|
:%(bn)s-(%(chains)s) - [0:0]
|
|
|
|
|
:%(bn)s-(%(chains)s) - [0:0]
|
|
|
|
|
:%(bn)s-(%(chains)s) - [0:0]
|
|
|
|
|
:%(bn)s-(%(chains)s) - [0:0]
|
|
|
|
|
:%(bn)s-(%(chains)s) - [0:0]
|
|
|
|
|
:%(bn)s-(%(chains)s) - [0:0]
|
|
|
|
|
-I FORWARD 1 -j neutron-filter-top
|
|
|
|
|
-I FORWARD 2 -j %(bn)s-FORWARD
|
|
|
|
|
-I INPUT 1 -j %(bn)s-INPUT
|
|
|
|
|
-I OUTPUT 1 -j neutron-filter-top
|
|
|
|
|
-I OUTPUT 2 -j %(bn)s-OUTPUT
|
|
|
|
|
-I neutron-filter-top 1 -j %(bn)s-local
|
|
|
|
|
-I %(bn)s-FORWARD 1 %(physdev_mod)s --physdev-INGRESS tap_%(port3)s \
|
|
|
|
|
%(physdev_is_bridged)s -j ACCEPT
|
|
|
|
|
-I %(bn)s-FORWARD 2 %(physdev_mod)s --physdev-INGRESS tap_%(port1)s \
|
|
|
|
|
%(physdev_is_bridged)s -j %(bn)s-sg-chain
|
|
|
|
|
-I %(bn)s-FORWARD 3 %(physdev_mod)s --physdev-EGRESS tap_%(port1)s \
|
|
|
|
|
%(physdev_is_bridged)s -j %(bn)s-sg-chain
|
|
|
|
|
-I %(bn)s-FORWARD 4 %(physdev_mod)s --physdev-INGRESS tap_%(port2)s \
|
|
|
|
|
%(physdev_is_bridged)s -j %(bn)s-sg-chain
|
|
|
|
|
-I %(bn)s-FORWARD 5 %(physdev_mod)s --physdev-EGRESS tap_%(port2)s \
|
|
|
|
|
%(physdev_is_bridged)s -j %(bn)s-sg-chain
|
|
|
|
|
-I %(bn)s-INPUT 1 %(physdev_mod)s --physdev-EGRESS tap_%(port1)s \
|
|
|
|
|
%(physdev_is_bridged)s -j %(bn)s-o_%(port1)s
|
|
|
|
|
-I %(bn)s-INPUT 2 %(physdev_mod)s --physdev-EGRESS tap_%(port2)s \
|
|
|
|
|
%(physdev_is_bridged)s -j %(bn)s-o_%(port2)s
|
|
|
|
|
-I %(bn)s-i_%(port1)s 1 -p ipv6-icmp -m icmp6 --icmpv6-type 130 -j RETURN
|
|
|
|
|
-I %(bn)s-i_%(port1)s 2 -p ipv6-icmp -m icmp6 --icmpv6-type 135 -j RETURN
|
|
|
|
|
-I %(bn)s-i_%(port1)s 3 -p ipv6-icmp -m icmp6 --icmpv6-type 136 -j RETURN
|
|
|
|
|
-I %(bn)s-i_%(port1)s 4 -m state --state RELATED,ESTABLISHED -j RETURN
|
|
|
|
|
-I %(bn)s-i_%(port1)s 5 -m state --state INVALID -j DROP
|
|
|
|
|
-I %(bn)s-i_%(port1)s 6 -j %(bn)s-sg-fallback
|
|
|
|
|
-I %(bn)s-i_%(port2)s 1 -p ipv6-icmp -m icmp6 --icmpv6-type 130 -j RETURN
|
|
|
|
|
-I %(bn)s-i_%(port2)s 2 -p ipv6-icmp -m icmp6 --icmpv6-type 135 -j RETURN
|
|
|
|
|
-I %(bn)s-i_%(port2)s 3 -p ipv6-icmp -m icmp6 --icmpv6-type 136 -j RETURN
|
|
|
|
|
-I %(bn)s-i_%(port2)s 4 -m state --state RELATED,ESTABLISHED -j RETURN
|
|
|
|
|
-I %(bn)s-i_%(port2)s 5 -m state --state INVALID -j DROP
|
|
|
|
|
-I %(bn)s-i_%(port2)s 6 -j %(bn)s-sg-fallback
|
|
|
|
|
-I %(bn)s-o_%(port1)s 1 -s ::/128 -d ff02::/16 -p ipv6-icmp -m icmp6 \
|
|
|
|
|
--icmpv6-type 131 -j RETURN
|
|
|
|
|
-I %(bn)s-o_%(port1)s 2 -s ::/128 -d ff02::/16 -p ipv6-icmp -m icmp6 \
|
|
|
|
|
--icmpv6-type 135 -j RETURN
|
|
|
|
|
-I %(bn)s-o_%(port1)s 3 -s ::/128 -d ff02::/16 -p ipv6-icmp -m icmp6 \
|
|
|
|
|
--icmpv6-type 143 -j RETURN
|
|
|
|
|
-I %(bn)s-o_%(port1)s 4 -p ipv6-icmp -m icmp6 --icmpv6-type 134 -j DROP
|
|
|
|
|
-I %(bn)s-o_%(port1)s 5 -p ipv6-icmp -j RETURN
|
|
|
|
|
-I %(bn)s-o_%(port1)s 6 -p udp -m udp --sport 546 --dport 547 -j RETURN
|
|
|
|
|
-I %(bn)s-o_%(port1)s 7 -p udp -m udp --sport 547 --dport 546 -j DROP
|
|
|
|
|
-I %(bn)s-o_%(port1)s 8 -m state --state RELATED,ESTABLISHED -j RETURN
|
|
|
|
|
-I %(bn)s-o_%(port1)s 9 -m state --state INVALID -j DROP
|
|
|
|
|
-I %(bn)s-o_%(port1)s 10 -j %(bn)s-sg-fallback
|
|
|
|
|
-I %(bn)s-o_%(port2)s 1 -s ::/128 -d ff02::/16 -p ipv6-icmp -m icmp6 \
|
|
|
|
|
--icmpv6-type 131 -j RETURN
|
|
|
|
|
-I %(bn)s-o_%(port2)s 2 -s ::/128 -d ff02::/16 -p ipv6-icmp -m icmp6 \
|
|
|
|
|
--icmpv6-type 135 -j RETURN
|
|
|
|
|
-I %(bn)s-o_%(port2)s 3 -s ::/128 -d ff02::/16 -p ipv6-icmp -m icmp6 \
|
|
|
|
|
--icmpv6-type 143 -j RETURN
|
|
|
|
|
-I %(bn)s-o_%(port2)s 4 -p ipv6-icmp -m icmp6 --icmpv6-type 134 -j DROP
|
|
|
|
|
-I %(bn)s-o_%(port2)s 5 -p ipv6-icmp -j RETURN
|
|
|
|
|
-I %(bn)s-o_%(port2)s 6 -p udp -m udp --sport 546 --dport 547 -j RETURN
|
|
|
|
|
-I %(bn)s-o_%(port2)s 7 -p udp -m udp --sport 547 --dport 546 -j DROP
|
|
|
|
|
-I %(bn)s-o_%(port2)s 8 -m state --state RELATED,ESTABLISHED -j RETURN
|
|
|
|
|
-I %(bn)s-o_%(port2)s 9 -m state --state INVALID -j DROP
|
|
|
|
|
-I %(bn)s-o_%(port2)s 10 -j %(bn)s-sg-fallback
|
|
|
|
|
-I %(bn)s-sg-chain 1 %(physdev_mod)s --physdev-INGRESS tap_%(port1)s \
|
|
|
|
|
%(physdev_is_bridged)s -j %(bn)s-i_%(port1)s
|
|
|
|
|
-I %(bn)s-sg-chain 2 %(physdev_mod)s --physdev-EGRESS tap_%(port1)s \
|
|
|
|
|
%(physdev_is_bridged)s -j %(bn)s-o_%(port1)s
|
|
|
|
|
-I %(bn)s-sg-chain 3 %(physdev_mod)s --physdev-INGRESS tap_%(port2)s \
|
|
|
|
|
%(physdev_is_bridged)s -j %(bn)s-i_%(port2)s
|
|
|
|
|
-I %(bn)s-sg-chain 4 %(physdev_mod)s --physdev-EGRESS tap_%(port2)s \
|
|
|
|
|
%(physdev_is_bridged)s -j %(bn)s-o_%(port2)s
|
|
|
|
|
-I %(bn)s-sg-chain 5 -j ACCEPT
|
|
|
|
|
-I %(bn)s-sg-fallback 1 -j DROP
|
|
|
|
|
COMMIT
|
|
|
|
|
# Completed by iptables_manager
|
|
|
|
|
""" % IPTABLES_ARG
|
|
|
|
|
|
|
|
|
|
IPTABLES_ARG['chains'] = CHAINS_EMPTY
|
|
|
|
|
IPTABLES_FILTER_V6_EMPTY = """# Generated by iptables_manager
|
|
|
|
|
*filter
|
|
|
|
@ -2607,10 +2975,12 @@ class TestSecurityGroupAgentWithIptables(base.BaseTestCase):
|
|
|
|
|
|
|
|
|
|
def test_security_group_rule_updated(self):
|
|
|
|
|
self.rpc.security_group_rules_for_devices.return_value = self.devices2
|
|
|
|
|
self._replay_iptables(IPTABLES_FILTER_2, IPTABLES_FILTER_V6_2,
|
|
|
|
|
IPTABLES_RAW_BRIDGE_NET_2)
|
|
|
|
|
self._replay_iptables(IPTABLES_FILTER_2_3, IPTABLES_FILTER_V6_2,
|
|
|
|
|
IPTABLES_RAW_BRIDGE_NET_2)
|
|
|
|
|
self._replay_iptables(
|
|
|
|
|
IPTABLES_FILTER_2_TRUSTED, IPTABLES_FILTER_V6_2_TRUSTED,
|
|
|
|
|
IPTABLES_RAW_BRIDGE_NET_2)
|
|
|
|
|
self._replay_iptables(
|
|
|
|
|
IPTABLES_FILTER_2_3_TRUSTED, IPTABLES_FILTER_V6_2_TRUSTED,
|
|
|
|
|
IPTABLES_RAW_BRIDGE_NET_2)
|
|
|
|
|
|
|
|
|
|
self.agent.prepare_devices_filter(['tap_port1', 'tap_port3'])
|
|
|
|
|
self.rpc.security_group_rules_for_devices.return_value = self.devices3
|
|
|
|
@ -2724,10 +3094,12 @@ class TestSecurityGroupAgentEnhancedRpcWithIptables(
|
|
|
|
|
|
|
|
|
|
def test_security_group_rule_updated(self):
|
|
|
|
|
self.sg_info.return_value = self.devices_info2
|
|
|
|
|
self._replay_iptables(IPTABLES_FILTER_2, IPTABLES_FILTER_V6_2,
|
|
|
|
|
IPTABLES_RAW_BRIDGE_NET_2)
|
|
|
|
|
self._replay_iptables(IPTABLES_FILTER_2_3, IPTABLES_FILTER_V6_2,
|
|
|
|
|
IPTABLES_RAW_BRIDGE_NET_2)
|
|
|
|
|
self._replay_iptables(
|
|
|
|
|
IPTABLES_FILTER_2_TRUSTED, IPTABLES_FILTER_V6_2_TRUSTED,
|
|
|
|
|
IPTABLES_RAW_BRIDGE_NET_2)
|
|
|
|
|
self._replay_iptables(
|
|
|
|
|
IPTABLES_FILTER_2_3_TRUSTED, IPTABLES_FILTER_V6_2_TRUSTED,
|
|
|
|
|
IPTABLES_RAW_BRIDGE_NET_2)
|
|
|
|
|
|
|
|
|
|
self.agent.prepare_devices_filter(['tap_port1', 'tap_port3'])
|
|
|
|
|
self.sg_info.return_value = self.devices_info3
|
|
|
|
@ -2795,10 +3167,12 @@ class TestSecurityGroupAgentEnhancedIpsetWithIptables(
|
|
|
|
|
self.ipset._get_new_set_ips = mock.Mock(return_value=['10.0.0.3'])
|
|
|
|
|
self.ipset._get_deleted_set_ips = mock.Mock(return_value=[])
|
|
|
|
|
self.sg_info.return_value = self.devices_info2
|
|
|
|
|
self._replay_iptables(IPSET_FILTER_2, IPTABLES_FILTER_V6_2,
|
|
|
|
|
IPTABLES_RAW_BRIDGE_NET_2)
|
|
|
|
|
self._replay_iptables(IPSET_FILTER_2_3, IPTABLES_FILTER_V6_2,
|
|
|
|
|
IPTABLES_RAW_BRIDGE_NET_2)
|
|
|
|
|
self._replay_iptables(
|
|
|
|
|
IPSET_FILTER_2_TRUSTED, IPTABLES_FILTER_V6_2_TRUSTED,
|
|
|
|
|
IPTABLES_RAW_BRIDGE_NET_2)
|
|
|
|
|
self._replay_iptables(
|
|
|
|
|
IPSET_FILTER_2_3_TRUSTED, IPTABLES_FILTER_V6_2_TRUSTED,
|
|
|
|
|
IPTABLES_RAW_BRIDGE_NET_2)
|
|
|
|
|
|
|
|
|
|
self.agent.prepare_devices_filter(['tap_port1', 'tap_port3'])
|
|
|
|
|
self.sg_info.return_value = self.devices_info3
|
|
|
|
@ -2918,10 +3292,12 @@ class TestSecurityGroupAgentWithOVSIptables(
|
|
|
|
|
def test_security_group_rule_updated(self):
|
|
|
|
|
self.ipconntrack._device_zone_map = {}
|
|
|
|
|
self.rpc.security_group_rules_for_devices.return_value = self.devices2
|
|
|
|
|
self._replay_iptables(IPTABLES_FILTER_2, IPTABLES_FILTER_V6_2,
|
|
|
|
|
IPTABLES_RAW_DEVICE_2)
|
|
|
|
|
self._replay_iptables(IPTABLES_FILTER_2_3, IPTABLES_FILTER_V6_2,
|
|
|
|
|
IPTABLES_RAW_DEVICE_2)
|
|
|
|
|
self._replay_iptables(
|
|
|
|
|
IPTABLES_FILTER_2_TRUSTED, IPTABLES_FILTER_V6_2_TRUSTED,
|
|
|
|
|
IPTABLES_RAW_DEVICE_2)
|
|
|
|
|
self._replay_iptables(
|
|
|
|
|
IPTABLES_FILTER_2_3_TRUSTED, IPTABLES_FILTER_V6_2_TRUSTED,
|
|
|
|
|
IPTABLES_RAW_DEVICE_2)
|
|
|
|
|
|
|
|
|
|
self.agent.prepare_devices_filter(['tap_port1', 'tap_port3'])
|
|
|
|
|
self.rpc.security_group_rules_for_devices.return_value = self.devices3
|
|
|
|
|