There is more than one way to do it.
1. Raspberry Pi(not practical)
pros : cheap, low power(5W), no noise, low heat
cons : 1 100Mbps port only, usb-ethernet/usb-wifi+additional switch needed, usb performance not good. Not recommended unless your outer ethernet side is very slow.
2. DD-WRT + supported hardware(ap/router)
AP/router(typically arm based)+linux+iptables+openvpn
pros : relatively cheap(depends on hardware model), low power(typically 10W), no noise, low heat, integrated WIFI/wired ports. small. clean looking.
cons : limited internal storage/memory. May brick your hardware if you are not careful enough(and void your warranty) useful for dedicated role(firewall, vpn)only
may use for printer/file server or other role if your hardware has usb port, but (typically) slower than full pc.
3. Mini ITX based PC
Low-end bay-trail based Mini ITX motherboard(j1800 recommended)+dc-dc power+12V power brick+small case+storage+linux/bsd(?)+iptables/pf(?)+openvpn
pros : versatile(file/full printer(cups)/application(ex. minecraft) server capable depend on configuration, up to 8/16GB ram + TBs of storage),
still can be made fanless&no noise if you've planned well,
relatively low heat(warm) if you leave it on open space
cons : most power hungry(~15W, depend on configuration), additional usb-ethernet adapter/switch/wifi needed, biggest of all above(20cm*20cm*5cm + brick)
-for cheap 12V power brick, look for power brick for LCD monitors(12V 3.5A/5A SMPS - depend on your system's power usage- widely manufactured)
-about iptables, read iptables tutorial on frozentux.net
-p910nd - light, spoolless(no file operation) print server daemon. turn your cheap usb only printer to always-on networked printer even on limited storage platform.