Подойдет использование списков доступа (access lists).
Классический пример: есть маршрутизатор с двумя интерфейсами - последовательным (S0) и Fast Ethernet Fa0/0).
S0-смотрит во внешние сети
Fa0/0 - смотрит во внутрь нашей локалки
Внутри локалки стоит mail-сервер. IP: 3.3.3.3
Допустим, необходимо дать доступ всем юзерам из внешних сетей доступ к нашему mail-серверу, запретив при этом другие поползновения.
На нашем роутере создаем access-list:
1) открываем доступ для всех к SMTP-серверу:
Router(config)#access-list 200 permit tcp any host 3.3.3.3 eq 25
2) открываем всем внешним хостам доступ к POP-серверу:
Router(config)#access-list 200 permit tcp any host 3.3.3.3 eq 110
Все остальные операции извне будут запрещены, так как в конце любого списка доступа неявно объявлено запрещение.
3) Теперь ассоциируем access-list с нужным интерфейсом. Учитывая, что расширенные списки доступа необходимо размещать как можно ближе к источнику, нам нужно ассоциировать его с внешним (S0) интерфейсом.
Router(config)#interface serial 0
Router(config-if)#ip access-group 200 in
Вроде все... :0)