Set up OpenWRT as routed wifi client

Sometimes you need to attach a wired-only device to a wifi network, or like happened to me recently, a client’s wifi printer was not working well with the AP, so kept losing it’s wireless connection. I found that any other device was solid on this wifi AP, so just needed to relay the dhcp issued by the main Wifi AP to the wired LAN.

These instructions are for setting this up via LuCi (the openWRT web interface), and I am using a Linux distro, if your going to use Windoz then you’ll need to search for equivaent commands from Windows terminal (cmd)

Start by identifying  the SSID and WPA key for the wifi network you want to connect to, test the connection to ensure you have the correct details.

An example configuration:

  • IP address obtained from attaching to the target wireless AP, I called it upink_ssid: 192.168.1.134 (use dhclient -v eth0)
  • IP address of the internet uplink: 192.168.1.1 (find this with bash: route -n or cmd: route print)
  • LAN IP address to be assigned to manage the openWRT: 192.168.2.1 (up to you but must be different subnet to the IP address issued by wifi AP). In future if you want to manage the openWRT you’ll need to manually set you IP to the same subnet with [ifconfig eth0 192.168.2.23 up netmask 255.255.255.0) .

Install OpenWRT on your device (see Openwrt hardware database for compatible devices)

Connect your LAN cable to that of the OpenWRT LAN port  and connect to LuCi via your browser with: http://192.168.1.134/cgi-bin/luci/

There you should set a first password and configure ssh access, install your ssh key or just ssh allow password access – this device is in the same zone as your LAN printer so probably you need not be so security aware. If your managing this device remotely set up a reverse tunnel (which will make management tasks a lot easier). In that case enforce the use of ssh keys for root login.

Set up relayd

Log in to OpenWRT with:  ssh root@192.168.1.134

Update: opkg update

Install relayd: opkg install luci-proto-relay

The rest can be done via LuCi, browse to: http://192.168.1.134/cgi-bin/luci

Configure Interfaces and Firewalls

In Network | Wifi see listed the default wifi AP, press Scan and join uplink_ssid (enter password on request)

Accept the default for this interface but set Firewall Zone to be lan

In Network | Interfaces | edit lan and set IP4 Gateway and DNS server address to 192.168.1.1. Disable DHCP for the Interface (ignore interface).

In Network | Firewall, edit lan zone to Accept Forwards, choose lan and wwan to be the covered networks.

Ensure you have saved and applied all the changes, then reboot the openWRT.

Your client on the wired should now obtain an IP from the wireless network. (dhclient -v eth0)

Sources:

https://wiki.openwrt.org/doc/recipes/dumbap

https://wiki.openwrt.org/oldwiki/dmz.example.transparent

https://wiki.openwrt.org/doc/recipes/relayclient

https://wiki.openwrt.org/doc/howto/dmz