Recentemente precisei configurar um servidor PPPOE para testes internos em minha empresa.
Mas não precisava ser algo complexo com banco de dados Mysql, servidor Radius, etc. Eu já tinha scripts e documentação para configuração destes servidores mais complexos e em versões anteriores do Debian Linux, mas não tinha nada para algo simples e para a ultima versão do Debian 11. Então precisei pesquisar para como configurar e estou aqui publicando os passos por mim utilizado.
Não vou detalhar a instalação do Debian 11, mas basta realizar a instalação mínima selecionando apenas o pacote ssh pois até para economia de recursos e poder se utilizar uma máquina mais simples não se faz necessário a instalação de ambiente gráfico.
Para o hardware os requisitos são bem baixos apenas sendo necessário duas placas de rede. Uma por onde receberemos a internet do provedor e a outra para ser distribuída para o ambiente interno.
Após a instalação do Linux começamos instalando os pacotes mais abaixo.
É muito importante pois na falta deles a compilação do pacote rp-pppoe pelo código fonte não ocorrerá corretamente.
Primeiro vamos atualizar a lista de pacotes com o comando abaixo.
apt-get update
Agora vamos instalar os pacotes abaixo.
apt-get install make gcc ppp ppp-dev iptables
Com os pacotes devidamente instalados precisamos baixar o pacote rp-pppoe do site do projeto.
Na data em que edito este artigo a ultima versão disponível é a 3.15.
Podemos baixar o arquivo com o comando abaixo.
wget https://dianne.skoll.ca/projects/rp-pppoe/download/rp-pppoe-3.15.tar.gz
Após ter baixado o arquivo com sucesso temos que descompactar o mesmo com o comando abaixo.
tar -zxvf rp-pppoe-3.15.tar.gz
Após descompactar o arquivo será criado a pasta rp-pppoe-3.15. Vamos acessar a pasta scr que fica dentro da mesma.
cd rp-pppoe-3.15/src
Estando dentro da pasta src vamos executar os comandos abaixo pra compilar e instalar o pacote rp-pppoe
make clean ./configure --enable-plugin make make install
Com o sucesso da compilação agora passamos para a criação e configuração dos arquivos necessários para o funcionamento do servidor pppoe.
# 1 /etc/default/rp-pppoe_range
O primeiro arquivo que vamos configurar é o /etc/default/rp-pppoe_range. Este arquivo não existe. Eu estou criando o mesmo dentro da pasta /etc/default/ pois é uma pasta padrão de configuração, mas este arquivo pode ser criado em qualquer outro lugar desde que devidamente referenciado nos outros arquivos de configuração.
No meu servidor a faixa de rede escolhida é 100.90.80.0/24 mas você utilizar outra faixa de rede caso preferir desde que esta faixa de rede seja diferente da faixa de rede da entrada da sua internet.
Então o conteúdo do meu arquivo /etc/default/rp-pppoe_range ficou assim.
100.90.80.2-254
# 2 /etc/ppp/chap-secrets
Este segundo arquivo é onde ficará armazenados os logins e as senhas dos clientes pppoe do servidor.
O padrão deste arquivo é .:
"login" * "senha" *
A primeira coluna é o login entre “aspas”. Sim as aspas fazem parte do arquivo. A segunda coluna é o * asterisco. A terceira coluna é a senha também entre aspas. A quarta coluna é o endereço de ip. Se deixarmos um * asteriscos o endereço de ip será aleatório dentro da faixa de rede escolhida, mas caso deseje pode se fixar o endereço.
Veja os exemplos.
"edmarcos" * "123456" *
ou
"edmarcos" * "123456" 100.90.80.3
# 3 /etc/ppp/pppoe-server-options
O terceiro arquivo que vamos editar é o /etc/ppp/pppoe-server-options. Este arquivo já existe e precisamos editar apenas um parâmetro e acrescentar outros ao mesmo.
Primeiro procure pela linha que contém este texto.:
require-pap
comente esta linha acrescentando um # no começo da mesma e abaixo dela adicione esta linha.
require-chap
Então o arquivo deve ficar assim:
#require-pap require-chap
Agora vamos configurar os servidores de dns que desejamos utilizar. No meu caso estou utilizando os servidores do google, mas outros servidores podem ser utilizados. Então adicione as duas linha conforme exemplo abaixo.
ms-dns 8.8.8.8 ms-dns 8.8.4.4
E vamos adicionar mais 4 parâmetros ao final do arquivo como no exemplo abaixo.
netmask 255.255.255.0 defaultroute noipdefault usepeerdns
# 4 /usr/local/sbin/rp-pppoe-server.sh
O quarto arquivo a ser editado não existe e precisa ser criado. Vamos criar o mesmo em /usr/local/sbin/rp-pppoe-server.sh com o conteúdo abaixo.
#!/bin/bash modprobe pppoe /usr/sbin/pppoe-server -k -C EdegServer -L 100.90.80.1 -p /etc/default/rp-pppoe_range -I eth0
No caso edite seu arquivo alterando o parâmetro “-C EdegServer” para o nome que quiser usar em seu servidor. Também altere o parâmetro “-I eth1” pelo nome da placa de rede de saída do seu servidor.
Com o arquivo devidamente customizado vamos adicionar permissão de execução do mesmo com o comando abaixo.
chmod a+x /usr/local/sbin/rp-pppoe-server.sh
# 5 /usr/local/sbin/masquerade.sh
Para que os computadores conectados neste servidor pppoe possam navegar pela internet precisamos configurar um roteamento via iptables. Para isto vamos configurar um arquivo simples para fazer o masquerade.
Segue exemplo abaixo.
#!/bin/bash FW=/sbin/iptables SRC=100.90.80.0/24 # faixa de rede do servidor pppoe WAN=eth1 # placa de rede da entrada da internet echo 1 > /proc/sys/net/ipv4/ip_forward $FW -F $FW -t nat -F $FW -t mangle -F $FW -t nat -A POSTROUTING -o $WAN -s $SRC -j MASQUERADE
Também precisamos dar permissão de execução neste arquivo com o comando abaixo.
chmod a+x /usr/local/sbin/masquerade.sh
# 6 /etc/rc.local
Para que o script /usr/local/sbin/rp-pppoe-server.sh e o script /usr/local/sbin/masquerade.sh sejam executados automaticamente toda a vez que o computador for inicializado ou reinicializado vamos fazer de maneira simples editando o arquivo /etc/rc.local.
Nas versões mais recentes do Debian este arquivo não existe mais. Por isto vamos criá-lo conforme o exemplo abaixo.
#!/bin/sh /usr/local/sbin/rp-pppoe-server.sh /usr/local/sbin/masquerade.sh exit 0
Também precisamos dar permissão de execução no /etc/rc.local conforme exemplo abaixo.
chmod a+x /etc/rc.local
Pronto. O servidor está devidamente configurado agora basta testar o mesmo.
Referencias usadas:
https://dianne.skoll.ca/
https://www.vivaolinux.com.br/dica/Configurando-um-PPPOE-Server