Kernel Module Missing
After I update kernel version from 3.8.4-1 (the stock version come from DO’s Archlinux template), I have found that iptables was not working because of kernel module missing.
# iptables -S iptables v1.4.12: can't initialize iptables table `filter': Table does not exist (do you need to insmod?)
The reason is DigitalOcean’s way of kernel management. You can only specify a kernel in DO Droplet control panel, not upgrading kernel in your own VPS. By using this way of kernel upgrading, the kernel module building process of Archlinux was bypassed; in result, no kernel module for my 3.9.4-1 kernel. That’s why iptables did not work.
Take a look at /lib/modules, there are only 3.8.4-1 stuffs:
# ls /lib/modules 3.8.4-1-ARCH extramodules-3.8-ARCH
This article shows the same problem on DO’s VPS.
Build Kernel Module Manually
To resolve this issue, a manual building of kernel 3.9.4-1 is required. Check this for grabbing and build a specific version of Archlinux package.
Building had taken some time on my $5/m plan Digital Ocean droplet. When everything done, copy kernel modules to /lib/modules. Check /lib/modules to see if I have kernel modules for 3.9.4-1:
# ls /lib/modules 3.8.4-1-ARCH 3.9.4-1-ARCH extramodules-3.8-ARCH extramodules-3.9-ARCH
Finally try “modprobe” and “lsmod” to check if the issue had been fixed.