Start service on boot

OpenWrt does not have update-rc.d or chkconfig. To start a service called service-name on boot, run:

   1 /etc/init.d/service-name enable
   2 /etc/init.d/service-name start

Enable SSH from WAN

Place into /etc/firewall.user:

   1 iptables --append input_wan --protocol tcp --dport 22 --jump ACCEPT

When SSH from WAN is enabled, it's probably a good idea to disable password logins via SSH (only public key authentication will be allowed):

   1 sed -i -e "s/'on'/'off'/"  /etc/config/dropbear

will set PasswordAuth option to "off", making /etc/config/dropbear look like:

config dropbear
        option PasswordAuth 'off'
        option Port         '22'

Unlock root data partition

OpenWrt sometimes does not unlock the data partition. I've particularly noticed this on the WRT54GL and OpenWrt 10.03.

mtd unlock rootfs_data

Increase DNS cache size

uci set dhcp.@dnsmasq[-1].cachesize=8192
uci commit dhcp

Or place into /etc/config/dhcp:

config dnsmasq
    # ...
    option cachesize '8192'

Use custom DNS server

Create /etc/resolv.local containing nameserver entries. Add resolv-file to dnsmasq.conf:

echo resolv-file=/etc/resolv.local >> /etc/dnsmasq.conf

and restart dnsmasq:

/etc/init.d/dnsmasq restart

Useful packages



miniupnpd luci-app-upnp

Enable UPnP so ports in firewall can automatically be opened


Lightweight Avahi/mDNS server


opkg install iputils-traceroute6 # IPv6 traceroute

Statistcs and collectd

   1 # Install luci statistics app, collectd, and some useful collectd modules
   2 opkg update
   3 opkg install luci-app-statistics
   4 opkg install collectd-mod-interface collectd-mod-memory collectd-mod-ping collectd-mod-rrdtool collectd-mod-wireless collectd-mod-conntrack collectd-mod-cpu collectd-mod-iptables collectd-mod-uptime
   5 opkg install luci-proto-vpnc
   7 uci get luci_statistics.collectd_interface.Interfaces
   8 uci set luci_statistics.collectd_interface.Interfaces='br-lan 6in4-henet'
   9 # wan interfaces only
  10 uci set luci_statistics.collectd_interface.Interfaces='eth1 6in4-henet'
  12 # set wireless interfaces
  13 uci get luci_statistics.collectd_iwinfo.Interfaces
  14 uci add_list luci_statistics.collectd_iwinfo.Interfaces='wlan0'
  15 uci add_list luci_statistics.collectd_iwinfo.Interfaces='wlan1'
  17 uci set luci_statistics.collectd.Interval=60
  18 uci commit luci_statistics
  20 /etc/init.d/luci_statistics enable
  21 /etc/init.d/collectd enable

Pass through SSH and Mosh for IPv6

Into /etc/config/firewall:

config rule
        option src 'wan'
        option proto 'tcp'
        option dest 'lan'
        option dest_port '22'
        option family 'ipv6'
        option target 'ACCEPT'
        option name 'SSH for IPv6'

config rule
        option src 'wan'
        option proto 'udp'
        option dest 'lan'
        option dest_port '60000-61000'
        option family 'ipv6'
        option target 'ACCEPT'
        option name 'Mosh for IPv6'

List packages installed after flash

Not 100% accurate, from

   1 #!/bin/sh
   5 trunk_time () {
   6 PKGTIME=$(opkg info "$1" | grep '^Installed-Time: ' | cut -f2 -d ' ')
   7 PKGTIME=${PKGTIME:0:$2}
   8 return
   9 }
  11 trunk_time busybox $PRECISION && BUILD_TIME=$PKGTIME
  13 for i in $(opkg list-installed | cut -d' ' -f1)
  14 do
  15 trunk_time $i $PRECISION
  16 if [ "$PKGTIME" != "$BUILD_TIME" ]
  17 then
  18 echo $i
  19 fi
  20 done

Useful reads

Setting up NAT64 and DNS64 on OpenWRT, for IPv6-only networks.

My complete OpenWrt setup guide. Comprehensive, from-scratch setup guide. git repository for storing configuration for building an OpenWrt image

Misc notes

   1 # Enable cron. Edit w/ `crontab -e`
   2 /etc/init.d/cron enable
   3 /etc/init.d/cron start


SamatsWiki: CheatSheet/OpenWrt (last edited 2019-06-03 10:52:56 by SamatJain)