<div dir="ltr">Before I started using a WRT54-GL, and now a E3000, I used a Pentium 2 box to fill the same role. It&#39;s quite simple to setup, really. Included in this email are the two scripts that really comprised my whole setup (which will need some updating for sure). The main reason I prefer Tomato over DD-WRT is that Tomato&#39;s QoS rules use the CBQ discipline, as I do below, and DD-WRT uses something else (at least by default). Whatever discipline DD-WRT uses did not work as well for me.<div><br></div><div>(firewall.sh)</div><div>``` </div><div><div>#!/bin/bash -v</div><div><br></div><div>echo &quot;Bringing up firewall...&quot;</div><div>echo &quot;&quot;</div><div><br></div><div>EXTERNAL_IFACE=&#39;eth0&#39;</div><div>INTERNAL_IFACE=&#39;eth1&#39;</div><div>WIRELESS_IFACE=&#39;eth2&#39;</div><div>IPTABLES=`which iptables`</div><div>EXTERNAL_IP=`ifconfig ${EXTERNAL_IFACE} | grep &quot;inet addr&quot; | cut -d \: -f 2 | cut -d &#39; &#39; -f 1`</div><div>INTERNAL_IP=&#39;<a href="http://192.168.1.0/24">192.168.1.0/24</a>&#39; # /24 covers both subnets</div><div># These numbers must match the numbers in the classes.sh file</div><div>VOIP=&#39;10&#39;</div><div>WWW=&#39;11&#39;</div><div>GAMES=&#39;12&#39;</div><div>P2P=&#39;13&#39;</div><div>OTHER=&#39;14&#39;</div><div><br></div><div># Clear old rules</div><div>${IPTABLES} -F</div><div>${IPTABLES} -F -t nat</div><div>${IPTABLES} -F -t mangle</div><div><br></div><div># Our default policy is to DROP packets</div><div>${IPTABLES} -P INPUT DROP</div><div><br></div><div>### Configure classes ###</div><div>${IPTABLES} -t mangle -A PREROUTING -j CONNMARK --restore-mark</div><div>${IPTABLES} -t mangle -A PREROUTING -m mark ! --mark 0 -j ACCEPT # If we have already marked it then accept it</div><div><br></div><div># We need to classify packets on all ethernet devices except lo, both incoming and outgoing.</div><div>${IPTABLES} -t mangle -A PREROUTING -i ! lo --dst ${EXTERNAL_IP} -m mark --mark 0 -p udp \</div><div><span class="" style="white-space:pre">        </span>--dport 10000:20000 -j MARK --set-mark ${VOIP}</div><div>${IPTABLES} -t mangle -A PREROUTING -i ! lo --src ${INTERNAL_IP} -m mark --mark 0 -p udp \</div><div><span class="" style="white-space:pre">        </span>--dport 10000:20000 -j MARK --set-mark ${VOIP} # VoIP</div><div><br></div><div>${IPTABLES} -t mangle -A PREROUTING -i ! lo --dst ${EXTERNAL_IP} -m mark --mark 0 -p udp \</div><div><span class="" style="white-space:pre">        </span>--dport 53 -j MARK --set-mark ${WWW}</div><div>${IPTABLES} -t mangle -A PREROUTING -i ! lo --src ${INTERNAL_IP} -m mark --mark 0 -p udp \</div><div><span class="" style="white-space:pre">        </span>--dport 53 -j MARK --set-mark ${WWW} # DNS</div><div>${IPTABLES} -t mangle -A PREROUTING -i ! lo --dst ${EXTERNAL_IP} -m mark --mark 0 -p tcp \</div><div><span class="" style="white-space:pre">        </span>-m multiport --dport 80,443 -j MARK --set-mark ${WWW}</div><div>${IPTABLES} -t mangle -A PREROUTING -i ! lo --src ${INTERNAL_IP} -m mark --mark 0 -p tcp \</div><div><span class="" style="white-space:pre">        </span>-m multiport --dport 80,443 -j MARK --set-mark ${WWW} # HTTP/HTTPS</div><div>${IPTABLES} -t mangle -A PREROUTING -i ! lo --dst ${EXTERNAL_IP} -m mark --mark 0 -p tcp \</div><div><span class="" style="white-space:pre">        </span>--dport 5900:5901 -j MARK --set-mark ${WWW}</div><div>${IPTABLES} -t mangle -A PREROUTING -i ! lo --src ${INTERNAL_IP} -m mark --mark 0 -p tcp \</div><div><span class="" style="white-space:pre">        </span>--dport 5900:5901 -j MARK --set-mark ${WWW} # VNC</div><div>${IPTABLES} -t mangle -A PREROUTING -i ! lo --dst ${EXTERNAL_IP} -m mark --mark 0 -p tcp \</div><div><span class="" style="white-space:pre">        </span>--dport 22 -j MARK --set-mark ${WWW}</div><div>${IPTABLES} -t mangle -A PREROUTING -i ! lo --src ${INTERNAL_IP} -m mark --mark 0 -p tcp \</div><div><span class="" style="white-space:pre">        </span>--dport 22 -j MARK --set-mark ${WWW} # SSH</div><div>${IPTABLES} -t mangle -A PREROUTING -i ! lo --dst ${EXTERNAL_IP} -m mark --mark 0 -p tcp \</div><div><span class="" style="white-space:pre">        </span>--dport 21 -j MARK --set-mark ${WWW}</div><div>${IPTABLES} -t mangle -A PREROUTING -i ! lo --src ${INTERNAL_IP} -m mark --mark 0 -p tcp \</div><div><span class="" style="white-space:pre">        </span>--dport 21 -j MARK --set-mark ${WWW} # FTP</div><div><br></div><div>${IPTABLES} -t mangle -A PREROUTING -i ! lo --dst ${EXTERNAL_IP} -m mark --mark 0 -p tcp \</div><div><span class="" style="white-space:pre">        </span>--dport 3724 -j MARK --set-mark ${GAMES}</div><div>${IPTABLES} -t mangle -A PREROUTING -i ! lo --src ${INTERNAL_IP} -m mark --mark 0 -p tcp \</div><div><span class="" style="white-space:pre">        </span>--dport 3724 -j MARK --set-mark ${GAMES} # World of Warcraft</div><div>${IPTABLES} -t mangle -A PREROUTING -i ! lo --dst ${EXTERNAL_IP} -m mark --mark 0 -p tcp \</div><div><span class="" style="white-space:pre">        </span>--dport 6112 -j MARK --set-mark ${GAMES}</div><div>${IPTABLES} -t mangle -A PREROUTING -i ! lo --src ${INTERNAL_IP} -m mark --mark 0 -p tcp \</div><div><span class="" style="white-space:pre">        </span>--dport 6112 -j MARK --set-mark ${GAMES} # Guild Wars</div><div><br></div><div>${IPTABLES} -t mangle -A PREROUTING -i ! lo --dst ${EXTERNAL_IP} -m mark --mark 0 -p tcp \</div><div><span class="" style="white-space:pre">        </span>--dport 7000:7100 -j MARK --set-mark ${P2P} # BitTorrent</div><div>${IPTABLES} -t mangle -A PREROUTING -i ! lo --dst ${EXTERNAL_IP} -m mark --mark 0 -p tcp \</div><div><span class="" style="white-space:pre">        </span>--dport 6112 -j MARK --set-mark ${P2P}</div><div>${IPTABLES} -t mangle -A PREROUTING -i ! lo --dst ${EXTERNAL_IP} -m mark --mark 0 -p tcp \</div><div><span class="" style="white-space:pre">        </span>--dport 6881:6999 -j MARK --set-mark ${P2P} # WoW downloader</div><div><br></div><div># All other packets, on the tcp and udp protocols, need to be classified as &quot;other&quot;.</div><div>${IPTABLES} -t mangle -A PREROUTING -i ! lo --dst ${EXTERNAL_IP} -m mark --mark 0 \</div><div><span class="" style="white-space:pre">        </span>-j MARK --set-mark ${OTHER}</div><div>${IPTABLES} -t mangle -A PREROUTING -i ! lo --src ${INTERNAL_IP} -m mark --mark 0 \</div><div><span class="" style="white-space:pre">        </span>-j MARK --set-mark ${OTHER} # Everything else</div><div><br></div><div>${IPTABLES} -t mangle -A PREROUTING -j CONNMARK --save-mark # Save the mark to the connection tracking.</div><div>## Classes configured ##</div><div><br></div><div>## Forward ports ##</div><div>${IPTABLES} -t nat -A PREROUTING --dst ${EXTERNAL_IP} -p udp --dport 10000:20000 -j DNAT --to 192.168.1.3</div><div>${IPTABLES} -t nat -A PREROUTING --dst ${EXTERNAL_IP} -p tcp --dport 22 -j DNAT --to 192.168.1.5</div><div>${IPTABLES} -t nat -A PREROUTING --dst ${EXTERNAL_IP} -p tcp --dport 5900 -j DNAT --to 192.168.1.5</div><div>${IPTABLES} -t nat -A PREROUTING --dst ${EXTERNAL_IP} -p tcp --dport 7000 -j DNAT --to 192.168.1.5</div><div>${IPTABLES} -t nat -A PREROUTING --dst ${EXTERNAL_IP} -p tcp --dport 5901 -j DNAT --to 192.168.1.6</div><div>## ##</div><div><br></div><div>## Setup filters ##</div><div>${IPTABLES} -A INPUT --dst ${EXTERNAL_IP} -p icmp --icmp-type echo-request -m limit \</div><div><span class="" style="white-space:pre">        </span>--limit 10 -j ACCEPT # Sure, let&#39;s reply to pings.</div><div>${IPTABLES} -A INPUT --dst ${EXTERNAL_IP} -m state \</div><div><span class="" style="white-space:pre">        </span>--state INVALID -j DROP # We don&#39;t want any invalid packets.</div><div>${IPTABLES} -A INPUT --dst ${EXTERNAL_IP} -m state \</div><div><span class="" style="white-space:pre">        </span>--state ESTABLISHED,RELATED -j ACCEPT # Only connections that were initiated from the inside.</div><div>${IPTABLES} -A INPUT --src ${INTERNAL_IP} -j ACCEPT # Accept connections from the LAN.</div><div>## Filters configured ##</div><div><br></div><div># Make all outbound packets look like they are coming from one IP</div><div>${IPTABLES} -t nat -A POSTROUTING -o ${EXTERNAL_IFACE} -j MASQUERADE</div><div># Enable packet forwarding</div><div>echo &quot;1&quot; &gt; /proc/sys/net/ipv4/ip_forward</div></div><div><br></div><div>```</div><div><br></div><div>(classes.sh)</div><div>```</div><div><div>#!/bin/bash</div><div><br></div><div>tc=`which tc`</div><div>INTERNAL_IFACE=&#39;eth1&#39;</div><div>EXTERNAL_IFACE=&#39;eth0&#39;</div><div>WIRELESS_IFACE=&#39;eth2&#39;</div><div>INTERNAL_ROOT=&#39;1&#39;</div><div>EXTERNAL_ROOT=&#39;2&#39;</div><div>WIRELESS_ROOT=&#39;3&#39;</div><div><br></div><div># Define your incoming and outgoing bandwidth here. Take a little off</div><div># for overhead bandwidth.</div><div>IN_BANDWIDTH=&#39;3008&#39; # 3Mbit : 3072Kbit - 64Kbit overhead = 3008Kbit</div><div>OUT_BANDWIDTH=&#39;240&#39; # 256Kbit : 256Kbit - 16Kbit overhead = 240Kbit</div><div><br></div><div>LIMIT=&#39;2&#39; # Classes for limited packets</div><div>MANAGEMENT=&#39;8&#39; # Class for management</div><div><br></div><div># Here we define the classes we want to classify out bandwith usage with.</div><div>VOIP=&#39;10&#39;</div><div>WWW=&#39;11&#39;</div><div>GAMES=&#39;12&#39;</div><div>P2P=&#39;13&#39;</div><div>OTHER=&#39;14&#39;</div><div># Now the maximum shared bandwidth to assign each class (in kilobits).</div><div>VOIP_RATE_OUT=&#39;96&#39;</div><div>VOIP_RATE_IN=&#39;96&#39;</div><div>WWW_RATE_OUT=&#39;80&#39;</div><div>WWW_RATE_IN=&#39;1200&#39;</div><div>GAMES_RATE_OUT=&#39;48&#39;</div><div>GAMES_RATE_IN=&#39;392&#39;</div><div>P2P_RATE_OUT=&#39;8&#39;</div><div>P2P_RATE_IN=&#39;1200&#39;</div><div>OTHER_RATE_OUT=&#39;8&#39;</div><div>OTHER_RATE_IN=&#39;120&#39;</div><div><br></div><div># Remove any previously applied disciplines</div><div>${tc} qdisc del dev ${INTERNAL_IFACE} root 2&gt;/dev/null</div><div>${tc} qdisc del dev ${EXTERNAL_IFACE} root 2&gt;/dev/null</div><div>${tc} qdisc del dev ${WIRELESS_IFACE} root 2&gt;/dev/null</div><div><br></div><div># Create the new queueing disciplines</div><div>${tc} qdisc add dev ${INTERNAL_IFACE} root handle ${INTERNAL_ROOT}:0 cbq \</div><div><span class="" style="white-space:pre">        </span>avpkt 1000 rate 100mbit bandwidth 100mbit</div><div>${tc} qdisc add dev ${EXTERNAL_IFACE} root handle ${EXTERNAL_ROOT}:0 cbq \</div><div><span class="" style="white-space:pre">        </span>avpkt 1000 rate 100mbit bandwidth 100mbit</div><div>${tc} qdisc add dev ${WIRELESS_IFACE} root handle ${WIRELESS_ROOT}:0 cbq \</div><div><span class="" style="white-space:pre">        </span>avpkt 1000 rate 54mbit bandwidth 54mbit</div><div><br></div><div># Create an inband management class. I don&#39;t think this is really necessary on a home</div><div># network, but the <a href="http://www.sigsegv.cx/qos.html">http://www.sigsegv.cx/qos.html</a> article suggests it.</div><div>${tc} class add dev ${INTERNAL_IFACE} parent ${INTERNAL_ROOT}:0 \</div><div><span class="" style="white-space:pre">        </span>classid ${INTERNAL_ROOT}:${MANAGEMENT} cbq allot 1500 rate 10mbit prio 1 avpkt 1500 bounded</div><div><br></div><div># Now to setup the LIMIT classes for incoming and outgoing bandwidth.</div><div>${tc} class add dev ${INTERNAL_IFACE} parent ${INTERNAL_ROOT}:0 \</div><div><span class="" style="white-space:pre">        </span>classid ${INTERNAL_ROOT}:${LIMIT} \</div><div><span class="" style="white-space:pre">        </span>cbq allot 1500 rate ${IN_BANDWIDTH}kbit prio 1 avpkt 1500 bounded</div><div>${tc} class add dev ${WIRELESS_IFACE} parent ${WIRELESS_ROOT}:0 \</div><div><span class="" style="white-space:pre">        </span>classid ${WIRELESS_ROOT}:${LIMIT} \</div><div><span class="" style="white-space:pre">        </span>cbq allot 1500 rate ${IN_BANDWIDTH}kbit prio 1 avpkt 1500 bounded</div><div># We only need to throttle the outgoing bandwidth on the external interface.</div><div>${tc} class add dev ${EXTERNAL_IFACE} parent ${EXTERNAL_ROOT}:0 \</div><div><span class="" style="white-space:pre">        </span>classid ${EXTERNAL_ROOT}:${LIMIT} \</div><div><span class="" style="white-space:pre">        </span>cbq allot 1500 rate ${OUT_BANDWIDTH}kbit prio 1 avpkt 1500 bounded</div><div><br></div><div>### Classes ###</div><div><br></div><div># VoIP</div><div>${tc} class add dev ${INTERNAL_IFACE} parent ${INTERNAL_ROOT}:${LIMIT} \</div><div><span class="" style="white-space:pre">        </span>classid ${INTERNAL_ROOT}:${VOIP} cbq allot 1500 rate ${VOIP_RATE_IN}kbit prio 1 \</div><div><span class="" style="white-space:pre">        </span>weight 9.6 avpkt 1500 isolated</div><div>${tc} class add dev ${WIRELESS_IFACE} parent ${WIRELESS_ROOT}:${LIMIT} \</div><div><span class="" style="white-space:pre">        </span>classid ${WIRELESS_ROOT}:${VOIP} cbq allot 1500 rate ${VOIP_RATE_IN}kbit prio 1 \</div><div><span class="" style="white-space:pre">        </span>weight 9.6 avpkt 1500 isolated</div><div>${tc} class add dev ${EXTERNAL_IFACE} parent ${EXTERNAL_ROOT}:${LIMIT} \</div><div><span class="" style="white-space:pre">        </span>classid ${EXTERNAL_ROOT}:${VOIP} cbq allot 1500 rate ${VOIP_RATE_OUT}kbit prio 1 \</div><div><span class="" style="white-space:pre">        </span>weight 9.6 avpkt 1500 isolated</div><div><br></div><div># WWW</div><div>${tc} class add dev ${INTERNAL_IFACE} parent ${INTERNAL_ROOT}:${LIMIT} \</div><div><span class="" style="white-space:pre">        </span>classid ${INTERNAL_ROOT}:${WWW} cbq allot 1500 rate ${WWW_RATE_IN}kbit prio 2 \</div><div><span class="" style="white-space:pre">        </span>weight 120 avpkt 1500</div><div>${tc} class add dev ${WIRELESS_IFACE} parent ${WIRELESS_ROOT}:${LIMIT} \</div><div><span class="" style="white-space:pre">        </span>classid ${WIRELESS_ROOT}:${WWW} cbq allot 1500 rate ${WWW_RATE_IN}kbit prio 2 \</div><div><span class="" style="white-space:pre">        </span>weight 120 avpkt 1500</div><div>${tc} class add dev ${EXTERNAL_IFACE} parent ${EXTERNAL_ROOT}:${LIMIT} \</div><div><span class="" style="white-space:pre">        </span>classid ${EXTERNAL_ROOT}:${WWW} cbq allot 1500 rate ${WWW_RATE_OUT}kbit prio 2 \</div><div><span class="" style="white-space:pre">        </span>weight 8 avpkt 1500</div><div><br></div><div># Games</div><div>${tc} class add dev ${INTERNAL_IFACE} parent ${INTERNAL_ROOT}:${LIMIT} \</div><div><span class="" style="white-space:pre">        </span>classid ${INTERNAL_ROOT}:${GAMES} cbq allot 1500 rate ${GAMES_RATE_IN}kbit prio 3 \</div><div><span class="" style="white-space:pre">        </span>weight 39.2 avpkt 1500</div><div>${tc} class add dev ${WIRELESS_IFACE} parent ${WIRELESS_ROOT}:${LIMIT} \</div><div><span class="" style="white-space:pre">        </span>classid ${WIRELESS_ROOT}:${GAMES} cbq allot 1500 rate ${GAMES_RATE_IN}kbit prio 3 \</div><div><span class="" style="white-space:pre">        </span>weight 39.2 avpkt 1500</div><div>${tc} class add dev ${EXTERNAL_IFACE} parent ${EXTERNAL_ROOT}:${LIMIT} \</div><div><span class="" style="white-space:pre">        </span>classid ${EXTERNAL_ROOT}:${GAMES} cbq allot 1500 rate ${GAMES_RATE_OUT}kbit prio 3 \</div><div><span class="" style="white-space:pre">        </span>weight 4.8 avpkt 1500</div><div><br></div><div># P2P</div><div>${tc} class add dev ${INTERNAL_IFACE} parent ${INTERNAL_ROOT}:${LIMIT} \</div><div><span class="" style="white-space:pre">        </span>classid ${INTERNAL_ROOT}:${P2P} cbq allot 1500 rate ${P2P_RATE_IN}kbit prio 4 \</div><div><span class="" style="white-space:pre">        </span>weight 120 avpkt 1500</div><div>${tc} class add dev ${WIRELESS_IFACE} parent ${WIRELESS_ROOT}:${LIMIT} \</div><div><span class="" style="white-space:pre">        </span>classid ${WIRELESS_ROOT}:${P2P} cbq allot 1500 rate ${P2P_RATE_IN}kbit prio 4 \</div><div><span class="" style="white-space:pre">        </span>weight 120 avpkt 1500</div><div>${tc} class add dev ${EXTERNAL_IFACE} parent ${EXTERNAL_ROOT}:${LIMIT} \</div><div><span class="" style="white-space:pre">        </span>classid ${EXTERNAL_ROOT}:${P2P} cbq allot 1500 rate ${P2P_RATE_OUT}kbit prio 4 \</div><div><span class="" style="white-space:pre">        </span>weight 0.8 avpkt 1500</div><div><br></div><div># Other</div><div>${tc} class add dev ${INTERNAL_IFACE} parent ${INTERNAL_ROOT}:${LIMIT} \</div><div><span class="" style="white-space:pre">        </span>classid ${INTERNAL_ROOT}:${OTHER} cbq allot 1500 rate ${OTHER_RATE_IN}kbit prio 5 \</div><div><span class="" style="white-space:pre">        </span>weight 12 avpkt 1500</div><div>${tc} class add dev ${WIRELESS_IFACE} parent ${WIRELESS_ROOT}:${LIMIT} \</div><div><span class="" style="white-space:pre">        </span>classid ${WIRELESS_ROOT}:${OTHER} cbq allot 1500 rate ${OTHER_RATE_IN}kbit prio 5 \</div><div><span class="" style="white-space:pre">        </span>weight 12 avpkt 1500</div><div>${tc} class add dev ${EXTERNAL_IFACE} parent ${EXTERNAL_ROOT}:${LIMIT} \</div><div><span class="" style="white-space:pre">        </span>classid ${EXTERNAL_ROOT}:${OTHER} cbq allot 1500 rate ${OTHER_RATE_OUT}kbit prio 5 \</div><div><span class="" style="white-space:pre">        </span>weight 0.8 avpkt 1500</div><div><br></div><div>## Apply classes to packets marked with iptables ##</div><div><br></div><div># VoIP</div><div>${tc} filter add dev ${INTERNAL_IFACE} protocol ip \</div><div><span class="" style="white-space:pre">        </span>parent ${INTERNAL_ROOT}:0 prio 1 handle ${VOIP} \</div><div><span class="" style="white-space:pre">        </span>fw flowid ${INTERNAL_ROOT}:${VOIP}</div><div>${tc} filter add dev ${WIRELESS_IFACE} protocol ip \</div><div><span class="" style="white-space:pre">        </span>parent ${WIRELESS_ROOT}:0 prio 1 handle ${VOIP} \</div><div><span class="" style="white-space:pre">        </span>fw flowid ${WIRELESS_ROOT}:${VOIP}</div><div>${tc} filter add dev ${EXTERNAL_IFACE} protocol ip \</div><div><span class="" style="white-space:pre">        </span>parent ${EXTERNAL_ROOT}:0 prio 1 handle ${VOIP} \</div><div><span class="" style="white-space:pre">        </span>fw flowid ${EXTERNAL_ROOT}:${VOIP}</div><div><br></div><div># WWW</div><div>${tc} filter add dev ${INTERNAL_IFACE} protocol ip \</div><div><span class="" style="white-space:pre">        </span>parent ${INTERNAL_ROOT}:0 prio 2 handle ${WWW} \</div><div><span class="" style="white-space:pre">        </span>fw flowid ${INTERNAL_ROOT}:${WWW}</div><div>${tc} filter add dev ${WIRELESS_IFACE} protocol ip \</div><div><span class="" style="white-space:pre">        </span>parent ${WIRELESS_ROOT}:0 prio 2 handle ${WWW} \</div><div><span class="" style="white-space:pre">        </span>fw flowid ${WIRELESS_ROOT}:${WWW}</div><div>${tc} filter add dev ${EXTERNAL_IFACE} protocol ip \</div><div><span class="" style="white-space:pre">        </span>parent ${EXTERNAL_ROOT}:0 prio 2 handle ${WWW} \</div><div><span class="" style="white-space:pre">        </span>fw flowid ${EXTERNAL_ROOT}:${WWW}</div><div><br></div><div># GAMES</div><div>${tc} filter add dev ${INTERNAL_IFACE} protocol ip \</div><div><span class="" style="white-space:pre">        </span>parent ${INTERNAL_ROOT}:0 prio 3 handle ${GAMES} \</div><div><span class="" style="white-space:pre">        </span>fw flowid ${INTERNAL_ROOT}:${GAMES}</div><div>${tc} filter add dev ${WIRELESS_IFACE} protocol ip \</div><div><span class="" style="white-space:pre">        </span>parent ${WIRELESS_ROOT}:0 prio 3 handle ${GAMES} \</div><div><span class="" style="white-space:pre">        </span>fw flowid ${WIRELESS_ROOT}:${GAMES}</div><div>${tc} filter add dev ${EXTERNAL_IFACE} protocol ip \</div><div><span class="" style="white-space:pre">        </span>parent ${EXTERNAL_ROOT}:0 prio 3 handle ${GAMES} \</div><div><span class="" style="white-space:pre">        </span>fw flowid ${EXTERNAL_ROOT}:${GAMES}</div><div><br></div><div># P2P</div><div>${tc} filter add dev ${INTERNAL_IFACE} protocol ip \</div><div><span class="" style="white-space:pre">        </span>parent ${INTERNAL_ROOT}:0 prio 4 handle ${P2P} \</div><div><span class="" style="white-space:pre">        </span>fw flowid ${INTERNAL_ROOT}:${P2P}</div><div>${tc} filter add dev ${WIRELESS_IFACE} protocol ip \</div><div><span class="" style="white-space:pre">        </span>parent ${WIRELESS_ROOT}:0 prio 4 handle ${P2P} \</div><div><span class="" style="white-space:pre">        </span>fw flowid ${WIRELESS_ROOT}:${P2P}</div><div>${tc} filter add dev ${EXTERNAL_IFACE} protocol ip \</div><div><span class="" style="white-space:pre">        </span>parent ${EXTERNAL_ROOT}:0 prio 4 handle ${P2P} \</div><div><span class="" style="white-space:pre">        </span>fw flowid ${EXTERNAL_ROOT}:${P2P}</div><div><br></div><div># OTHER</div><div>${tc} filter add dev ${INTERNAL_IFACE} protocol ip \</div><div><span class="" style="white-space:pre">        </span>parent ${INTERNAL_ROOT}:0 prio 5 handle ${OTHER} \</div><div><span class="" style="white-space:pre">        </span>fw flowid ${INTERNAL_ROOT}:${OTHER}</div><div>${tc} filter add dev ${WIRELESS_IFACE} protocol ip \</div><div><span class="" style="white-space:pre">        </span>parent ${WIRELESS_ROOT}:0 prio 5 handle ${OTHER} \</div><div><span class="" style="white-space:pre">        </span>fw flowid ${WIRELESS_ROOT}:${OTHER}</div><div>${tc} filter add dev ${EXTERNAL_IFACE} protocol ip \</div><div><span class="" style="white-space:pre">        </span>parent ${EXTERNAL_ROOT}:0 prio 5 handle ${OTHER} \</div><div><span class="" style="white-space:pre">        </span>fw flowid ${EXTERNAL_ROOT}:${OTHER}</div></div><div>```<br><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Sep 3, 2015 at 11:33 AM, Damon L. Chesser <span dir="ltr">&lt;<a href="mailto:damon@damtek.com" target="_blank">damon@damtek.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
  
    
  
  <div text="#000000" bgcolor="#FFFFFF">
    Ahhh.  Makes sense.  <br><div><div class="h5">
    <br>
    <div>On 09/03/2015 12:14 AM, James Sumners
      wrote:<br>
    </div>
    <blockquote type="cite">
      <div dir="ltr">Set the wireless interface into AP mode and plug
        the wired interface into an uplink port on my switch. Plus, you
        know, some iptables rules.</div></blockquote></div></div></div></blockquote></div><br clear="all"><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div>James Sumners<br><a href="http://james.sumners.info/" target="_blank">http://james.sumners.info/</a> (technical profile)</div><div><a href="http://jrfom.com/" target="_blank">http://jrfom.com/</a> (personal site)</div><div><a href="http://haplo.bandcamp.com/" target="_blank">http://haplo.bandcamp.com/</a> (band page)</div></div></div></div></div>
</div></div></div>