Rc.local not being run on Fedora 23

fedorarc.local

I have an iptables script I want to run at boot.
I created /etc/rc.d/rc.local file with CHMOD 755 permissions which have worked on previous operating systems.
Root owns the file.
I also have #!/bin/bash as the first line.
I have also tried #!/bin/sh
I have also added a 5 second sleep thinking maybe something needs to finish.
I have temporarily disabled selinux to eliminate that as a cause.
The rc.local file looks like this:

#!/bin/bash  
sleep 5  
/usr/local/sbin/miniptables 

The miniptables file is also owned by root, chmod 755, starts with #!/bin/bash, contains some iptables commands, and has worked on hundreds of servers.
What am I missing?
Thanks in advance.

Best Answer

TL;DR: Just create /etc/rc.d/rc.local and make it executable. That's all.

I have no idea why so many articles and blogs mentions the unnecessary and incorrect step of enabling rc-local service unit. It won't even work as the default rc.local file does not have WantedBy statement on purpose, because systemd carries so called generator that checks if such file exists and it is executable it automatically generates the mentioned rc-local.service. There is no need to enable it manually, in fact, you cannot do that until systemd boots and generates it or you run the generator manually:

# systemctl enable --now rc-local
The unit files have no installation config (WantedBy=, RequiredBy=, Also=,
Alias= settings in the [Install] section, and DefaultInstance= for template
units). This means they are not meant to be enabled using systemctl.

Possible reasons for having this kind of units are:
• A unit may be statically enabled by being symlinked from another unit's
  .wants/ or .requires/ directory.
• A unit's purpose may be to act as a helper for some other unit which has
  a requirement dependency on it.
• A unit may be started when needed via activation (socket, path, timer,
  D-Bus, udev, scripted systemctl call, ...).
• In case of template units, the unit is meant to be enabled with some
  instance name specified.