From 192.168.0.20:
$ ip -4 a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: enp7s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
inet 192.168.0.20/24 brd 192.168.0.255 scope global dynamic noprefixroute enp7s0
valid_lft 86115sec preferred_lft 86115sec
4: br-34df59bd6d99: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
inet 172.18.0.1/16 brd 172.18.255.255 scope global br-34df59bd6d99
valid_lft forever preferred_lft forever
5: br-63f05d604645: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
inet 172.20.0.1/16 brd 172.20.255.255 scope global br-63f05d604645
valid_lft forever preferred_lft forever
6: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
valid_lft forever preferred_lft forever
7: br-f25fecbfce9f: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
inet 172.19.0.1/16 brd 172.19.255.255 scope global br-f25fecbfce9f
valid_lft forever preferred_lft forever
$ ip -4 r
default via 192.168.0.1 dev enp7s0
default via 192.168.0.1 dev enp7s0 proto dhcp metric 100
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown
172.18.0.0/16 dev br-34df59bd6d99 proto kernel scope link src 172.18.0.1 linkdown
172.19.0.0/16 dev br-f25fecbfce9f proto kernel scope link src 172.19.0.1
172.20.0.0/16 dev br-63f05d604645 proto kernel scope link src 172.20.0.1 linkdown
192.168.0.0/24 dev enp7s0 proto kernel scope link src 192.168.0.20 metric 100
$ sudo iptables -L -vn
[sudo] password for jon:
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
1522 1145K DOCKER-USER all -- * * 0.0.0.0/0 0.0.0.0/0
1522 1145K DOCKER-ISOLATION-STAGE-1 all -- * * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- * docker0 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
0 0 DOCKER all -- * docker0 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- docker0 !docker0 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- docker0 docker0 0.0.0.0/0 0.0.0.0/0
906 1098K ACCEPT all -- * br-f25fecbfce9f 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
0 0 DOCKER all -- * br-f25fecbfce9f 0.0.0.0/0 0.0.0.0/0
616 46901 ACCEPT all -- br-f25fecbfce9f !br-f25fecbfce9f 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- br-f25fecbfce9f br-f25fecbfce9f 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- * br-63f05d604645 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
0 0 DOCKER all -- * br-63f05d604645 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- br-63f05d604645 !br-63f05d604645 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- br-63f05d604645 br-63f05d604645 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- * br-34df59bd6d99 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
0 0 DOCKER all -- * br-34df59bd6d99 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- br-34df59bd6d99 !br-34df59bd6d99 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- br-34df59bd6d99 br-34df59bd6d99 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain DOCKER (4 references)
pkts bytes target prot opt in out source destination
0 0 ACCEPT tcp -- !br-f25fecbfce9f br-f25fecbfce9f 0.0.0.0/0 172.19.0.2 tcp dpt:80
Chain DOCKER-ISOLATION-STAGE-1 (1 references)
pkts bytes target prot opt in out source destination
0 0 DOCKER-ISOLATION-STAGE-2 all -- docker0 !docker0 0.0.0.0/0 0.0.0.0/0
616 46901 DOCKER-ISOLATION-STAGE-2 all -- br-f25fecbfce9f !br-f25fecbfce9f 0.0.0.0/0 0.0.0.0/0
0 0 DOCKER-ISOLATION-STAGE-2 all -- br-63f05d604645 !br-63f05d604645 0.0.0.0/0 0.0.0.0/0
0 0 DOCKER-ISOLATION-STAGE-2 all -- br-34df59bd6d99 !br-34df59bd6d99 0.0.0.0/0 0.0.0.0/0
1522 1145K RETURN all -- * * 0.0.0.0/0 0.0.0.0/0
Chain DOCKER-ISOLATION-STAGE-2 (4 references)
pkts bytes target prot opt in out source destination
0 0 DROP all -- * docker0 0.0.0.0/0 0.0.0.0/0
0 0 DROP all -- * br-f25fecbfce9f 0.0.0.0/0 0.0.0.0/0
0 0 DROP all -- * br-63f05d604645 0.0.0.0/0 0.0.0.0/0
0 0 DROP all -- * br-34df59bd6d99 0.0.0.0/0 0.0.0.0/0
616 46901 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0
Chain DOCKER-USER (1 references)
pkts bytes target prot opt in out source destination
1522 1145K RETURN all -- * * 0.0.0.0/0 0.0.0.0/0
$ sudo iptables -t nat -L -vn
[sudo] password for jon:
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
24 2172 DOCKER all -- * * 0.0.0.0/0 0.0.0.0/0 ADDRTYPE match dst-type LOCAL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 MASQUERADE all -- * !docker0 172.17.0.0/16 0.0.0.0/0
55 3411 MASQUERADE all -- * !br-f25fecbfce9f 172.19.0.0/16 0.0.0.0/0
0 0 MASQUERADE all -- * !br-63f05d604645 172.20.0.0/16 0.0.0.0/0
0 0 MASQUERADE all -- * !br-34df59bd6d99 172.18.0.0/16 0.0.0.0/0
0 0 MASQUERADE tcp -- * * 172.19.0.2 172.19.0.2 tcp dpt:80
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 DOCKER all -- * * 0.0.0.0/0 !127.0.0.0/8 ADDRTYPE match dst-type LOCAL
Chain DOCKER (2 references)
pkts bytes target prot opt in out source destination
0 0 RETURN all -- docker0 * 0.0.0.0/0 0.0.0.0/0
1 52 RETURN all -- br-f25fecbfce9f * 0.0.0.0/0 0.0.0.0/0
0 0 RETURN all -- br-63f05d604645 * 0.0.0.0/0 0.0.0.0/0
0 0 RETURN all -- br-34df59bd6d99 * 0.0.0.0/0 0.0.0.0/0
0 0 DNAT tcp -- !br-f25fecbfce9f * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 to:172.19.0.2:80
From the router
# ip -4 a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
6: br-lan: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
inet 192.168.0.1/24 brd 192.168.0.255 scope global br-lan
valid_lft forever preferred_lft forever
11: tun1: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 100
inet 192.168.10.1/24 brd 192.168.10.255 scope global tun1
valid_lft forever preferred_lft forever
104: pppoe-wan: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1492 qdisc fq_codel state UNKNOWN group default qlen 3
inet xxx.xxx.xxx.xxx peer xxx.xxx.xxx.xxx/32 scope global pppoe-wan
valid_lft forever preferred_lft forever
105: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 100
inet 172.21.26.8/23 brd 172.21.27.255 scope global tun0
valid_lft forever preferred_lft forever
# ip -4 r
default via xxx.xxx.xxx.xxx dev pppoe-wan proto static
xxx.xxx.xxx.xxx dev pppoe-wan proto kernel scope link src xxx.xxx.xxx.xxx
172.21.26.0/23 dev tun0 proto kernel scope link src 172.21.26.8
192.168.0.0/24 dev br-lan proto kernel scope link src 192.168.0.1
192.168.10.0/24 dev tun1 proto kernel scope link src 192.168.10.1
# ip -4 ru
0: from all lookup local
32676: from all fwmark 0x30000 lookup 203
32677: from all fwmark 0x20000 lookup 202
32678: from all fwmark 0x10000 lookup 201
32766: from all lookup main
32767: from all lookup default