Se quer aprender mesmo monte seu firewall via scripts, não é difícil mas é trabalhoso, já montei com failover, loadbalancer e outros. E como falaram separe cada serviço em um servidor ajuda a gerenciar e descobrir pontos de falhas, além de isolar o problema. Soluções "embarcadas" são legais para levantar o serviço mais rapidamente mas você não pode customizar totalmente como via scripts, porém para os 80% dos casos um firewall (ou solução unificada de serviços: fw, dns, dhcp e etc) embarcado com gerenciador grafico resolve. Note também que um fw ou servidor via script é bem mais leve, tendo em vista que você não vai ter servidor web rodando, base de dados em constante acesso e etc. Minha opinião pessoal: se quer aprender ou quer algo realmente customizavel crie seu servidor tudo via shell, se quer algo que você instale e configure pouco e seu negócio é simples use uma solução "pronta": Ipfire, ipcop, brasilfw, shorewall (framework para montar firewalls), pfsense e tantos outros.