Hello,
I’m running Ubuntu 24.04 and I’ve had an issue for about a month.
I have several machines communicating across two networks created by Docker, through their gateway (my host), and I apply the following iptables rules:
-A DOCKER-USER -s 192.168.243.0/26 -d 192.168.244.0/24 -p icmp -j ACCEPT
-A DOCKER-USER -s 192.168.244.0/24 -d 192.168.243.0/26 -p icmp -j ACCEPT
This works with docker.io_27.5.1-0ubuntu3~24.04.2, but as soon as I install docker.io_28.2.2-0ubuntu1~24.04.1_amd64.deb, it stops working. I tested this on a virtual machine and communication no longer works.
I wondered if it was coming from iptables. On the left is version 27.5.1 and on the right the new version. I also doubt it is iptables because even when I reload the old iptables rules, ping still doesn’t work.
Does anyone know how to enable ping between two containers on different networks?`
# Generated by iptables-save v1.8.10 (nf_tables) on Tue Nov 11 14:46:21 2025 | # Generated by iptables-save v1.8.10 (nf_tables) on Tue Nov 11 14:47:36 2025
> *raw
> :PREROUTING ACCEPT [507:27648]
> :OUTPUT ACCEPT [0:0]
> -A PREROUTING -d 192.168.244.2/32 ! -i br-d1199c107174 -j DROP
> COMMIT
> # Completed on Tue Nov 11 14:47:36 2025
> # Generated by iptables-save v1.8.10 (nf_tables) on Tue Nov 11 14:47:36 2025
*filter *filter
:INPUT ACCEPT [0:0] :INPUT ACCEPT [0:0]
:FORWARD DROP [0:0] :FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0] :OUTPUT ACCEPT [0:0]
:DOCKER - [0:0] :DOCKER - [0:0]
> :DOCKER-BRIDGE - [0:0]
> :DOCKER-CT - [0:0]
> :DOCKER-FORWARD - [0:0]
:DOCKER-ISOLATION-STAGE-1 - [0:0] :DOCKER-ISOLATION-STAGE-1 - [0:0]
:DOCKER-ISOLATION-STAGE-2 - [0:0] :DOCKER-ISOLATION-STAGE-2 - [0:0]
:DOCKER-USER - [0:0] :DOCKER-USER - [0:0]
-A FORWARD -j DOCKER-USER -A FORWARD -j DOCKER-USER
-A FORWARD -j DOCKER-ISOLATION-STAGE-1 | -A FORWARD -j DOCKER-FORWARD
-A FORWARD -o br-d1199c107174 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT | -A DOCKER ! -i br-d1199c107174 -o br-d1199c107174 -j DROP
-A FORWARD -o br-d1199c107174 -j DOCKER | -A DOCKER ! -i br-f6ac5497685d -o br-f6ac5497685d -j DROP
-A FORWARD -i br-d1199c107174 ! -o br-d1199c107174 -j ACCEPT | -A DOCKER ! -i docker0 -o docker0 -j DROP
-A FORWARD -i br-d1199c107174 -o br-d1199c107174 -j ACCEPT | -A DOCKER-BRIDGE -o br-d1199c107174 -j DOCKER
-A FORWARD -o br-f6ac5497685d -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT | -A DOCKER-BRIDGE -o br-f6ac5497685d -j DOCKER
-A FORWARD -o br-f6ac5497685d -j DOCKER | -A DOCKER-BRIDGE -o docker0 -j DOCKER
-A FORWARD -i br-f6ac5497685d ! -o br-f6ac5497685d -j ACCEPT | -A DOCKER-CT -o br-d1199c107174 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i br-f6ac5497685d -o br-f6ac5497685d -j ACCEPT | -A DOCKER-CT -o br-f6ac5497685d -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT | -A DOCKER-CT -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -o docker0 -j DOCKER | -A DOCKER-FORWARD -j DOCKER-CT
-A FORWARD -i docker0 ! -o docker0 -j ACCEPT | -A DOCKER-FORWARD -j DOCKER-ISOLATION-STAGE-1
-A FORWARD -i docker0 -o docker0 -j ACCEPT | -A DOCKER-FORWARD -j DOCKER-BRIDGE
> -A DOCKER-FORWARD -i br-d1199c107174 -j ACCEPT
> -A DOCKER-FORWARD -i br-f6ac5497685d -j ACCEPT
> -A DOCKER-FORWARD -i docker0 -j ACCEPT
-A DOCKER-ISOLATION-STAGE-1 -i br-d1199c107174 ! -o br-d1199c107174 -j DOCKER-ISOLATION-STAGE-2 -A DOCKER-ISOLATION-STAGE-1 -i br-d1199c107174 ! -o br-d1199c107174 -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -i br-f6ac5497685d ! -o br-f6ac5497685d -j DOCKER-ISOLATION-STAGE-2 -A DOCKER-ISOLATION-STAGE-1 -i br-f6ac5497685d ! -o br-f6ac5497685d -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -i docker0 ! -o docker0 -j DOCKER-ISOLATION-STAGE-2 -A DOCKER-ISOLATION-STAGE-1 -i docker0 ! -o docker0 -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -j RETURN <
-A DOCKER-ISOLATION-STAGE-2 -o br-d1199c107174 -j DROP <
-A DOCKER-ISOLATION-STAGE-2 -o br-f6ac5497685d -j DROP <
-A DOCKER-ISOLATION-STAGE-2 -o docker0 -j DROP -A DOCKER-ISOLATION-STAGE-2 -o docker0 -j DROP
-A DOCKER-ISOLATION-STAGE-2 -j RETURN | -A DOCKER-ISOLATION-STAGE-2 -o br-f6ac5497685d -j DROP
> -A DOCKER-ISOLATION-STAGE-2 -o br-d1199c107174 -j DROP
> -A DOCKER-USER -s 192.168.243.126/32 -d 192.168.243.20/32 -p tcp -m tcp --sport 8200 -j ACCEPT
> -A DOCKER-USER -s 192.168.243.20/32 -d 192.168.243.126/32 -p tcp -m tcp --dport 8200 -j ACCEPT
> -A DOCKER-USER -s 192.168.243.126/32 -d 192.168.244.0/24 -p tcp -m tcp --sport 8200 -j ACCEPT
> -A DOCKER-USER -s 192.168.244.0/24 -d 192.168.243.126/32 -p tcp -m tcp --dport 8200 -j ACCEPT
> -A DOCKER-USER -s 192.168.243.0/24 -d 192.168.243.126/32 -p tcp -m multiport --sports 443,80 -j ACCEPT
> -A DOCKER-USER -s 192.168.243.126/32 -d 192.168.243.0/24 -p tcp -m multiport --dports 443,80 -j ACCEPT
-A DOCKER-USER -s 192.168.243.0/26 -d 192.168.244.0/24 -p icmp -j ACCEPT -A DOCKER-USER -s 192.168.243.0/26 -d 192.168.244.0/24 -p icmp -j ACCEPT
-A DOCKER-USER -s 192.168.244.0/24 -d 192.168.243.0/26 -p icmp -j ACCEPT -A DOCKER-USER -s 192.168.244.0/24 -d 192.168.243.0/26 -p icmp -j ACCEPT
-A DOCKER-USER -s 192.168.243.0/26 -d 192.168.244.0/24 -p tcp -m tcp --sport 443 -j ACCEPT -A DOCKER-USER -s 192.168.243.0/26 -d 192.168.244.0/24 -p tcp -m tcp --sport 443 -j ACCEPT
-A DOCKER-USER -s 192.168.244.0/24 -d 192.168.243.0/26 -p tcp -m tcp --dport 443 -j ACCEPT -A DOCKER-USER -s 192.168.244.0/24 -d 192.168.243.0/26 -p tcp -m tcp --dport 443 -j ACCEPT
-A DOCKER-USER -s 192.168.243.0/24 -d 192.168.243.126/32 -p tcp -m multiport --sports 443,80 -j ACCEPT -A DOCKER-USER -s 192.168.243.0/24 -d 192.168.243.126/32 -p tcp -m multiport --sports 443,80 -j ACCEPT
-A DOCKER-USER -s 192.168.243.126/32 -d 192.168.243.0/24 -p tcp -m multiport --dports 443,80 -j ACCEPT -A DOCKER-USER -s 192.168.243.126/32 -d 192.168.243.0/24 -p tcp -m multiport --dports 443,80 -j ACCEPT
-A DOCKER-USER -j RETURN -A DOCKER-USER -j RETURN
COMMIT COMMIT
# Completed on Tue Nov 11 14:46:21 2025 | # Completed on Tue Nov 11 14:47:36 2025
# Generated by iptables-save v1.8.10 (nf_tables) on Tue Nov 11 14:46:21 2025 | # Generated by iptables-save v1.8.10 (nf_tables) on Tue Nov 11 14:47:36 2025
*nat *nat
:PREROUTING ACCEPT [979:81492] :PREROUTING ACCEPT [979:81492]
:INPUT ACCEPT [0:0] :INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [338:26395] | :OUTPUT ACCEPT [345:26943]
:POSTROUTING ACCEPT [338:26395] | :POSTROUTING ACCEPT [345:26943]
:DOCKER - [0:0] :DOCKER - [0:0]
> -A PREROUTING -s 192.168.243.0/26 -d 192.168.196.0/24 -j DNAT --to-destination 192.168.243.22
-A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER -A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER
-A PREROUTING -s 192.168.243.0/26 -d 192.168.196.0/24 -j DNAT --to-destination 192.168.243.22 -A PREROUTING -s 192.168.243.0/26 -d 192.168.196.0/24 -j DNAT --to-destination 192.168.243.22
-A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER -A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER
> -A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE
-A POSTROUTING -s 192.168.244.0/24 ! -o br-d1199c107174 -j MASQUERADE -A POSTROUTING -s 192.168.244.0/24 ! -o br-d1199c107174 -j MASQUERADE
-A POSTROUTING -s 192.168.243.0/26 ! -o br-f6ac5497685d -j MASQUERADE -A POSTROUTING -s 192.168.243.0/26 ! -o br-f6ac5497685d -j MASQUERADE
-A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE <
-A DOCKER -i br-d1199c107174 -j RETURN <
-A DOCKER -i br-f6ac5497685d -j RETURN <
-A DOCKER -i docker0 -j RETURN -A DOCKER -i docker0 -j RETURN
> -A DOCKER -i br-f6ac5497685d -j RETURN
> -A DOCKER -i br-d1199c107174 -j RETURN
COMMIT COMMIT
# Completed on Tue Nov 11 14:46:21 2025 | # Completed on Tue Nov 11 14:47:36 2025