[ops] In a compute node, outbound traffic blocked when a VM running
Hyunwoo KIM
hyunwoo18 at gmail.com
Mon Dec 7 16:11:19 UTC 2020
Summary of the problem
This problem is in a compute node, not in a VM.
Once a VM is running in a compute node,
all outbound connections in a compute node (not VM) are blocked.
For example:
# telnet www.google.com 80
Trying 172.217.5.4...
Technical Details:
We only use provider network.
These 4 services are running in each compute node:
- neutron-linuxbridge-agent.service
- neutron-dhcp-agent.service
- neutron-metadata-agent.service
- openstack-nova-compute.service
Detailed description of the problem:
In a compute node, the following is the result of iptables -L when no VM is
running:
<begin>
Chain INPUT (policy ACCEPT)
target prot opt source destination
neutron-linuxbri-INPUT all -- anywhere anywhere
And our usual rules
Chain FORWARD (policy ACCEPT)
target prot opt source destination
neutron-filter-top all -- anywhere anywhere
neutron-linuxbri-FORWARD all -- anywhere anywhere
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
neutron-filter-top all -- anywhere anywhere
neutron-linuxbri-OUTPUT all -- anywhere anywhere
Chain neutron-filter-top (2 references)
target prot opt source destination
neutron-linuxbri-local all -- anywhere anywhere
Chain neutron-linuxbri-FORWARD (1 references)
target prot opt source destination
ACCEPT all -- anywhere anywhere PHYSDEV match --physdev-out tapb
--physdev-is-bridged
ACCEPT all -- anywhere anywhere PHYSDEV match --physdev-in tapb
--physdev-is-bridged
ACCEPT all -- anywhere anywhere PHYSDEV match --physdev-out tap9
--physdev-is-bridged
ACCEPT all -- anywhere anywhere PHYSDEV match --physdev-in tap9
--physdev-is-bridged
Chain neutron-linuxbri-INPUT (1 references)
target prot opt source destination
Chain neutron-linuxbri-OUTPUT (1 references)
target prot opt source destination
Chain neutron-linuxbri-local (1 references)
target prot opt source destination
Chain neutron-linuxbri-sg-chain (0 references)
target prot opt source destination
ACCEPT all -- anywhere anywhere
Chain neutron-linuxbri-sg-fallback (0 references)
target prot opt source destination
DROP all -- anywhere anywhere
</end>
In the same compute node, when a VM is running,
the following is the result of iptables -L:
<begin>
Chain INPUT (policy ACCEPT)
target prot opt source destination
neutron-linuxbri-INPUT all -- anywhere anywhere
And our usual rules
Chain FORWARD (policy ACCEPT)
target prot opt source destination
neutron-filter-top all -- anywhere anywhere
neutron-linuxbri-FORWARD all -- anywhere anywhere
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
neutron-filter-top all -- anywhere anywhere
neutron-linuxbri-OUTPUT all -- anywhere anywhere
Chain neutron-filter-top (2 references)
target prot opt source destination
neutron-linuxbri-local all -- anywhere anywhere
Chain neutron-linuxbri-FORWARD (1 references)
target prot opt source destination
neutron-linuxbri-sg-chain all -- anywhere anywhere PHYSDEV match
--physdev-out tap8 --physdev-is-bridged
neutron-linuxbri-sg-chain all -- anywhere anywhere PHYSDEV match
--physdev-in tap8 --physdev-is-bridged
ACCEPT all -- anywhere anywhere PHYSDEV match --physdev-out tapb
--physdev-is-bridged
ACCEPT all -- anywhere anywhere PHYSDEV match --physdev-in tapb
--physdev-is-bridged
ACCEPT all -- anywhere anywhere PHYSDEV match --physdev-out tap9
--physdev-is-bridged
ACCEPT all -- anywhere anywhere PHYSDEV match --physdev-in tap9
--physdev-is-bridged
Chain neutron-linuxbri-INPUT (1 references)
target prot opt source destination
neutron-linuxbri-o8 all -- anywhere anywhere PHYSDEV match --physdev-in
tap8 --physdev-is-bridged
Chain neutron-linuxbri-OUTPUT (1 references)
target prot opt source destination
Chain neutron-linuxbri-i8 (1 references)
target prot opt source destination
RETURN all -- anywhere anywhere state RELATED,ESTABLISHED
RETURN udp -- anywhere fermicloud248.fnal.gov udp spt:bootps
dpt:bootpc
RETURN udp -- anywhere 255.255.255.255 udp spt:bootps dpt:bootpc
RETURN icmp -- anywhere anywhere
RETURN tcp -- fermilab-net.fnal.gov/16 anywhere tcp dpt:ssh
RETURN all -- anywhere anywhere match-set
NIPv41d69ba3c-68e3-414f-8f1b- src
DROP all -- anywhere anywhere state INVALID
neutron-linuxbri-sg-fallback all -- anywhere anywhere
Chain neutron-linuxbri-local (1 references)
target prot opt source destination
Chain neutron-linuxbri-o8 (2 references)
target prot opt source destination
RETURN udp -- default 255.255.255.255 udp spt:bootpc
dpt:bootps
neutron-linuxbri-s8 all -- anywhere anywhere
RETURN udp -- anywhere anywhere udp spt:bootpc dpt:bootps
DROP udp -- anywhere anywhere udp spt:bootps dpt:bootpc
RETURN all -- anywhere anywhere state RELATED,ESTABLISHED
RETURN tcp -- anywhere anywhere tcp dpt:https
RETURN all -- anywhere anywhere
RETURN tcp -- anywhere anywhere tcp dpt:http
DROP all -- anywhere anywhere state INVALID
neutron-linuxbri-sg-fallback all -- anywhere anywhere
Chain neutron-linuxbri-s8 (1 references)
target prot opt source destination
RETURN all -- fermicloud248.fnal.gov anywhere MAC FA:16:
DROP all -- anywhere anywhere
Chain neutron-linuxbri-sg-chain (2 references)
target prot opt source destination
neutron-linuxbri-i8 all -- anywhere anywhere PHYSDEV match --physdev-out
tap8 --physdev-is-bridged
neutron-linuxbri-o8 all -- anywhere anywhere PHYSDEV match --physdev-in tap8
--physdev-is-bridged
ACCEPT all -- anywhere anywhere
Chain neutron-linuxbri-sg-fallback (2 references)
target prot opt source destination
DROP all -- anywhere anywhere
</end>
Let me summarize the differences from when no VM running:
Chain INPUT : no change
Chain FORWARD: no change
Chain OUTPUT : no change
Chain neutron-filter-top: no change
Chain neutron-linuxbri-FORWARD: Two new rules are added
neutron-linuxbri-sg-chain
neutron-linuxbri-sg-chain
Chain neutron-linuxbri-INPUT: One new rule is added
neutron-linuxbri-o8ae816b0-f
Chain neutron-linuxbri-sg-chain: Two new rules are added
neutron-linuxbri-i8
neutron-linuxbri-o8
Chain neutron-linuxbri-OUTPUT: no change
Chain neutron-linuxbri-local: no change
Chain neutron-linuxbri-sg-fallback: no change
Chain neutron-linuxbri-i8: A new chain with multiple rules
Chain neutron-linuxbri-o8: A new chain with multiple rules
Chain neutron-linuxbri-s8: A new chain with multiple rules
But now a problem arises here:
All outbound connections are blocked (remember this is in a compute node,
not VM):
For example:
# telnet www.google.com 80
Trying 172.217.5.4...
When there isn't any VM running, We don't see this problem.
I was wondering if I needed to create a new security group rule for the
port 80 (for example)
but that didn't solve the issue.
Any technical advice will be appreciated,
Thanks,
Hyunwoo
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack-discuss/attachments/20201207/748c848e/attachment-0001.html>
More information about the openstack-discuss
mailing list