I've configured a Pi 3B+ to act as a WiFi access point using the excellent instructions here. When the Pi's ethernet is connected it gives WiFi clients access to the internet, and when the ethernet cable is unplugged WiFi clients access the local network only.
Everything works great until I enable Overlay Filesystem via raspi-config. The Pi itself still has access to the internet, which I can verify with ping www.google.com
, but routed internet access no longer works for WiFi clients. I believe the problem is related to a changed network interface name.
When Overlay Filesystem is disabled the ethernet interface is called eth0
in the output from ifconfig
. The access point documentation expects eth0
in the command sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
.
However, when Overlay Filesystem is enabled the network interface is called enxb827eb064f2f
. If I execute sudo iptables -t nat -A POSTROUTING -o enxb827eb064f2f -j MASQUERADE
while in Overlay Filesystem the internet is correctly routed to WiFi clients, but that change is obviously lost on reboot. I tried executing this command with Overlay Filesystem disabled, and then re-enabled Overlay, but it did not work - presumably because the network interface enxb827eb064f2f
was not known at the time the command was executed. The name enxb827eb064f2f
appears stable across reboots in Overlay Filesystem, so the problem was not that the interface name changed. If I disable Overlay Filesystem again the internet name returns to eth0
and routing works as expected.
Is there any way I can ensure the ethernet interface retains the name eth0
in Overlay Filesystem, or some other way I can pre-emptively configure routing via the alternate interface name?
raspi-config
->Performance Options
->Overlay Filesystem
->Enabled
->reboot
. If I follow the reverse steps to disable Overlay Filesystem via raspi-config the problem goes away. This problem entirely revolves around enabling a feature via raspi-config – tomfumb Mar 04 '21 at 17:23