Вот такой пример, немного подправленный мной (оригинал не сохранился):
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -i eth1 -o eth0 -j ACCEPT
-A FORWARD -i eth0 -o eth1 -j ACCEPT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -i eth1 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp -m icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p esp -j ACCEPT
-A RH-Firewall-1-INPUT -p ah -j ACCEPT
#-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
COMMIT
Тут и файрвол для Линукс-роутера, и исходящий NAT для локальной сети. Я исходил из предположений, что eth0 - внешний интерфейс, eth1 - внутренний, 192.168.0.0/24 - локальная сеть.
Обрати внимание на закомментированную строку - такой строкой можно открыть наружу отдельные порты на роутере, если необходимо.
Разрешение форвардинга пакетов между интерфейсами - см. как настраивается твой дистрибутив - я с Убунтой не работал. Единовременно (без сохранения состояния между перезагрузками) это можно сделать так:
echo 1 > /proc/sys/net/ipv4/ip_forward