@@ -15,10 +15,26 @@ const (
1515 ufwDefaultAllowPort2222 = "ufw allow 2222/tcp"
1616 ufwForceEnable = "ufw --force enable"
1717
18+ // Clear DOCKER-USER policy.
1819 ipTablesResetDockerUserChain = "iptables -F DOCKER-USER"
19- ipTablesAllowDockerUserOutbound = "iptables -A DOCKER-USER -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT"
20+
21+ // Allow return traffic.
22+ ipTablesAllowDockerUserOutbound = "iptables -A DOCKER-USER -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT"
23+
24+ // Allow containers to initiate outbound traffic (default bridge + user-defined bridges).
25+ ipTablesAllowDockerUserOutboundInit0 = "iptables -A DOCKER-USER -i docker0 ! -o docker0 -j ACCEPT"
26+ ipTablesAllowDockerUserOutboundInit1 = "iptables -A DOCKER-USER -i br+ ! -o br+ -j ACCEPT"
27+
28+ // Allow container-to-container on the same bridge.
29+ ipTablesAllowDockerUserDockerToDocker0 = "iptables -A DOCKER-USER -i docker0 -o docker0 -j ACCEPT"
30+ ipTablesAllowDockerUserDockerToDocker1 = "iptables -A DOCKER-USER -i br+ -o br+ -j ACCEPT"
31+
32+ // Allow inbound traffic on the loopback interface.
2033 ipTablesAllowDockerUserInpboundLoopback = "iptables -A DOCKER-USER -i lo -j ACCEPT"
34+
35+ // Drop everything else.
2136 ipTablesDropDockerUserInbound = "iptables -A DOCKER-USER -j DROP"
37+
2238 ipTablesReturnDockerUser = "iptables -A DOCKER-USER -j RETURN"
2339)
2440
@@ -63,6 +79,10 @@ func (c *ShadeformClient) getIPTablesCommands() []string {
6379 commands := []string {
6480 ipTablesResetDockerUserChain ,
6581 ipTablesAllowDockerUserOutbound ,
82+ ipTablesAllowDockerUserOutboundInit0 ,
83+ ipTablesAllowDockerUserOutboundInit1 ,
84+ ipTablesAllowDockerUserDockerToDocker0 ,
85+ ipTablesAllowDockerUserDockerToDocker1 ,
6686 ipTablesAllowDockerUserInpboundLoopback ,
6787 ipTablesDropDockerUserInbound ,
6888 ipTablesReturnDockerUser , // Expected by Docker
0 commit comments