Postado originalmente por
marcioelias
Bueno, de forma muito simples... vamos tentar colocar aqui o que é preciso para fazer isso que vc quer.
Passos:
- Instalação do FreeBSD (aqui usei a 9.2)
- Atualização do Ports
- Instalação dos Pacotes
- Configuração do MPD
- Configuração do Banco de dados
- Configuração do FreeRADIUS
Instalação do FreeBSD - Normal, não vou comentar por que acho que é a parte mais simples de todo o processo, a única ressalva é sobre a instalação do pacote de fontes para poder compilar o kernel depois.
Bom feita a instalação do sistema, e provavelmente a esta altura vc já tem acesso a internet nesta máquina, então atualize o ports.
Código :
portsnap fetch extract update
Para ter suporte a firewall no FreeBSD, assim como outras funcionalidades tempos tanto a opção de carregar os módulos dinamicamente quando complicar um kernel com os mesmos. Eu prefiro sempre compilar um Kernel personalizado, para isso faça o seguinte:
Abra um arquivo novo em um editor de textos qualquer (eu prefiro o ee) dentro do diretório do fonte que corresponde a sua arquitetura (/usr/src/sys/i386/ para 32Bits e /usr/src/sys/amd64/ para 64Bits)
Exemplo:
Código :
ee /usr/src/sys/amd64/conf/MEUKERNEL
Dentro deste arquivo coloque pelo menos o seguinte conteúdo:
Código :
include GENERICident MEUKERNEL
machine amd64
options HZ=1000
options NETGRAPH
options NETGRAPH_PPPOE
options NETGRAPH_CISCO
options NETGRAPH_IFACE
options NETGRAPH_BPF
options NETGRAPH_ETHER
options NETGRAPH_PPP
options NETGRAPH_ASYNC
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=100
options IPFIREWALL_DEFAULT_TO_ACCEPT
options DUMMYNET
options IPDIVERT
Neste arquivo vc está dizendo para o sistema compilar as opções do kernel GENERIC (as da instalação padrão que estão funcionando na sua máquina) mais as que vc especificou neste arquivo.
Aqui brevemente posso dizer que vc está habilitando o suporte ao Netgraph e ao IPFW como firewall.
salve este arquivo, então compile e instale o novo kernel:
Código :
cd /usr/src
make buildkernel KERNCONF=MEUKERNEL
make installkernel KERNCONF=MEUKERNEL
Ao final reinicie a máquina e rode um uname -a para constatar se o seu kernel foi carregado.
Bom vamos então instalar os pacotes começando pelo MPD5.
Código :
cd /usr/ports/net/mpd5/
make install clear
siga a instalação até finalizar, depois instale o FreeRADIUS:
Código :
cd /usr/ports/net/freeradius2/
make install clear
Aqui eu deixei marcadas apenas as opções PERL, PGSQL e USER.
Deixando a opção PGSQL marcada fará não somente que o suporte ao PostgreSQL seja habilitado na compilação do port, mais também irá instalar o PostgreSQL caso o mesmo não esteja instalado.
Bom depois de tudo instalado, vamos as configurações a começar pelo rc.conf
Código :
hostname="localhost.localdomain"keymap="br275.iso.acc.kbd"
defaultrouter="XXX.XXX.XXX.XXX"
gateway_enable="YES"
dumpdev="NO"
#Network Interfaces
ifconfig_bge0="inet XXX.XXX.XXX.XXX netmask 255.255.255.0"
#ifconfig_bge1="inet XXX.XXX.XXX.XXX netmask 255.255.255.0"
#Named
named_enable="YES"
firewall_enable="YES"
firewall_script="/etc/ipfw.rules"
#NAT
natd_enable="YES"
natd_flags="-s -m"
natd_interface="bge0"
#SSH
sshd_enable="YES"
#MPD5
mpd_enable="YES"
mpd_flags="-b -s mpd5"
#FreeRADIUS
radiusd_enable="YES"
#PostgreSQL
postgresql_enable="YES"
Note que deixei comentada a configuração da minha segunda placa de rede, isso por que a mesma não tem nenhum IP configurado, não faço nat, e sim entrego os IPs roteáveis, por isso não preciso ter endereços nesta interface, caso precise é só colocar.
O script de firewall pode ser utilizado o padrão /etc/rc.firewall especificando:
para testes já deve servir.
O MPD5 vc cria um arquivo dentro do diretório /usr/local/etc/mpd5/ chamado mpd.conf e coloca as seguintes configurações:
Código :
### Comandos executados na inicializacao do servico ###startup:
set user admin 123456 admin
set console self 127.0.0.1 5005
set console open
set web self 0.0.0.0 5006
set web open
### comandos executados em uma inicializacao normal ###
default:
load pppoe_server
### configuracoes do servico pppoe ###
pppoe_server:
create bundle template B
set bundle enable compression
set iface mtu 1300
set iface enable tcpmssfix
set ipcp dns 8.8.8.8 8.8.4.4
create link template PPPoE pppoe
set pppoe iface bge1
set link max-children 1000
set link enable incoming
set link action bundle B
set link disable multilink
set link disable chap pap eap
set link enable pap
load radius
create link template bge1_link PPPoE
set pppoe iface bge1
set link enable incoming
set pppoe service "*"
### configuracoes referentes a conexao com o servidor Radius ###
radius:
set radius server localhost testing123 1812 1813
set radius retries 3
set radius timeout 3
set auth acct-update 60
set auth enable radius-auth
set auth enable radius-acct
set radius enable message-authentic
Para testar a configuração vc pode rodar o comando mpd5 como usuário root, para tudo estar funcionando a saida tem que parar em um console sem nenhuma mensagem de erro antes.
PostgreSQL, se vc vai acessar somente localmente sua base de dados, não tem por que modificar nada somente para os testes, para acesso externo precisa liberação no pg_hba.conf, e para um alto desempenho, pesquise por tunning do PostgreSQL.
Para iniciar o agrupamento de dados do PostgreSQL, rode o comando:
Código :
service postgresql initdb
feito isso, seus dados e configurações inerentes ao PostgreSQL ficarão armazenados no diretório /usr/local/pgsql/data
Bom, inicie agora o serviço do banco de dados e vamos carregar a base de dados do FreeRADIUS:
Código :
service postgresql start
createuser -U pgsql -dPrs radius
createdb -U radius radius
psql -d radius -U radius < /usr/local/etc/raddb/sql/postgresql/schema.sql
feito isso o PostgreSQL deverá estar rodando e contendo uma base de dados e um usuário radius, onde foi carregado o schema do FreeRADIUS.
Bom, no FreeRadius habilite o modulo sql dentro do arquivo /usr/local/etc/raddb/radiusd.conf
dentro e dentro do arquivo /usr/local/etc/raddb/site-enable/default habilite o sql nas sessões authorize e accounting.
Se não me falhe a memória é isso.
Ai crie um usuário na base de dados do freeradius.
Código :
psql -U raidus -d radius
insert into radcheck (1, 'usuario', 'Cleartext-Password', ':=', '123');
insert into radreply (1, 'usuario', 'mpd-limit', '+=', 'out#1=all rate-limit 1000000 187500 375000 pass');
insert into radreply (2, 'usuario', 'mpd-limit', '+=', 'in#1=all rate-limit 300000 56250 112500 pass');
Feito, inserimos um usuário com login "usuario" e senha "123".
Na tabela radreply colocamos como limitação de banda 1Mbps de download por 300Kbps de upload, setamos o normal burst e o extended burst (segui as recomendacoes da Cisco para o caculo usando a formula Banda * (1 / 8) * 1.5 para o normal burst e o dobro disso para o extended burst).
para saber mais sobre essas configurações olhe esse link
http://mpd.sourceforge.net/doc5/mpd30.html#30
Bom, isso aqui não é bem uma receita de bolo, está mais para um rascunho, mais já da pra iniciar. Pela pressa com certeza escrevi alguma coisa errada ou alguma configuração equivocada, se acharem podem me informar, mais acho que da pra ter uma ideia geral do que fazer..
Espero que sirva para alguma coisa rsrs.