O FreeBSD fornece suporte nativo para gerenciamento conexões dial-up PPP usando ppp(8). O kernel padrão do FreeBSD fornece suporte para o tun, que é usado para interagir com um hardware de modem. A configuração é executada editando pelo menos um arquivo de configuração, e exemplos destes arquivos de configuração são fornecidos com o sistema. Finalmente, o ppp é usado para iniciar e gerenciar conexões.
Para usar uma conexão PPP, os seguintes itens são necessários:
Uma conta dial-up com um provedor de serviços de Internet (ISP).
Um modem dial-up.
O número de discagem para o ISP.
O nome de usuário e a senha atribuídos pelo ISP.
O endereço IP de um ou mais servidores de DNS. Normalmente, o ISP fornece estes endereços. Caso contrário, o FreeBSD pode ser configurado para usar a negociação de DNS.
Se alguma das informações necessárias estiver faltando, entre em contato com o ISP.
As seguintes informações podem ser fornecidas pelo ISP, mas não são necessárias:
O endereço IP do gateway padrão. Se esta informação for desconhecida, o ISP fornecerá automaticamente o valor correto durante a configuração da conexão. Ao configurar o PPP no FreeBSD, este endereço é chamado de HISADDR.
A máscara de sub-rede. Se o ISP não tiver fornecido um, 255.255.255.255 será usado no arquivo de configuração do ppp(8).
Se o ISP tiver atribuído um endereço IP estático e um nome de host, ele deverá ser inserido no arquivo de configuração. Caso contrário, essas informações serão fornecidas automaticamente durante a configuração da conexão.
O restante desta seção demonstra como configurar o FreeBSD para cenários de conexão PPP comuns. O arquivo de configuração requerido é o /etc/ppp/ppp.conf e arquivos de exemplos adicionais estão disponíveis em /usr/share/examples/ppp/.
Ao longo desta seção, muitos dos exemplos de arquivos exibem números de linha. Esses números de linha foram adicionados para facilitar o acompanhamento da discussão e não devem ser colocados no arquivo real.
Ao editar um arquivo de configuração, o recuo adequado é importante. Linhas que terminam em um : iniciam na primeira coluna (início da linha) enquanto todas as outras linhas devem ser recuadas como mostrado usando espaços ou tabulações.
Para configurar uma conexão PPP, primeiro edite o /etc/ppp/ppp.conf com as informações de discagem do ISP. Este arquivo é descrito da seguinte maneira:
1 default: 2 set log Phase Chat LCP IPCP CCP tun command 3 ident user-ppp VERSION 4 set device /dev/cuau0 5 set speed 115200 6 set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \ 7 \"\" AT OK-AT-OK ATE1Q0 OK \\dATDT\\T TIMEOUT 40 CONNECT" 8 set timeout 180 9 enable dns 10 11 provider: 12 set phone "(123) 456 7890" 13 set authname foo 14 set authkey bar 15 set timeout 300 16 set ifaddrx.x.x.x/0y.y.y.y/0 255.255.255.255 0.0.0.0 17 add default HISADDR
Identifica a entrada default. Os comandos nesta entrada (linhas 2 a 9) são executados automaticamente quando o ppp é executado.
Ativa os parâmetros de log detalhado para testar a conexão. Uma vez que a configuração esteja funcionando satisfatoriamente, esta linha deve ser reduzida para:
set log phase tun
Exibe a versão do ppp(8) para o software PPP em execução no outro lado da conexão.
Identifica o dispositivo ao qual o modem está conectado, onde COM1 é /dev/cuau0 e COM2 é /dev/cuau1.
Define a velocidade de conexão. Se 115200 não funcionar em um modem mais antigo, tente 38400 em seu lugar.
A string de discagem escrita como na sintaxe de envio e espera. Consulte chat(8) para obter maiores informações.
Observe que esse comando continua na próxima linha para facilitar a leitura. Qualquer comando no ppp.conf pode fazer isso se o último caractere na linha for \.
Define o tempo ocioso limite do link em segundos.
Instrui o peer para confirmar as configurações de DNS. Se a rede local estiver executando seu próprio servidor DNS, essa linha deve ser comentada, adicionando um # no início da linha ou removendo-a.
Uma linha em branco para facilitar a leitura. Linhas em branco são ignoradas pelo ppp(8).
Identifica uma entrada chamada provider. Isto pode ser alterado para o nome do ISP, para que load possa ser usado para iniciar a conexão.ISP
Use o número de telefone para o ISP. Vários números de telefone podem ser especificados usando os dois-pontos (:) ou o caractere pipe (|) como um separador. Para rotacionar entre os números, use dois pontos. Para sempre tentar discar o primeiro número primeiro e usar os outros números apenas se o primeiro número falhar, use o caractere pipe. Sempre coloque todo o conjunto de números de telefone entre aspas (") para evitar falhas de discagem.
Use o nome de usuário e senha para o ISP.
Define o tempo ocioso limite padrão em segundos para a conexão. Neste exemplo, a conexão será fechada automaticamente após 300 segundos de inatividade. Para evitar um tempo limite, defina esse valor como zero.
Define os endereços da interface. Os valores usados dependem de se um endereço IP estático foi obtido do ISP ou se ele negocia um endereço IP dinâmico durante a conexão.
Se o ISP tiver alocado um endereço IP estático e um gateway padrão, substitua xxxx pelo endereço IP estático e substitua yyyy com o endereço IP do gateway padrão. Se o ISP tiver fornecido apenas um endereço IP estático sem um endereço de gateway, substitua yyyy por 10.0.0.2/0.
Se o endereço IP mudar sempre que uma conexão for feita, altere essa linha para o seguinte valor. Isso diz ao ppp(8)para usar o IP Configuration Protocol (IPCP) para negociar um endereço IP dinâmico:
set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.255 0.0.0.0
Mantenha esta linha como está, pois ela adiciona uma rota padrão ao gateway. O HISADDR será automaticamente substituído pelo endereço do gateway especificado na linha 16. É importante que esta linha apareça depois da linha 16.
Dependendo se o ppp(8) for iniciado manualmente ou automaticamente, um arquivo /etc/ppp/ppp.linkup também pode precisar ser criado, contendo as seguintes linhas. Este arquivo é requerido ao executar o ppp no modo -auto. Este arquivo é usado após a conexão ter sido estabelecida. Neste ponto, o endereço IP será atribuído e agora será possível adicionar as entradas da tabela de roteamento. Ao criar este arquivo, certifique-se de que o provider corresponda ao valor demonstrado na linha 11 do ppp.conf.
provider:
add default HISADDREste arquivo também é necessário quando o endereço do gateway padrão é “adivinhado” em uma configuração de endereço IP estático. Neste caso, remova a linha 17 do ppp.conf e crie o /etc/ppp/ppp.linkup com as duas linhas acima. Outros exemplos para este arquivo podem ser encontrados em /usr/share/examples/ppp/.
Por padrão, o ppp deve ser executado como root. Para alterar esse padrão, adicione a conta do usuário que deve executar o ppp ao grupo network em /etc/group .
Em seguida, conceda ao usuário acesso a uma ou mais entradas em /etc/ppp/ppp.conf com allow. Por exemplo, para dar a permissão para os usuários fred e mary somente à entrada provider:, inclua esta linha para a seção provider::
allow users fred maryPara fornecer aos usuários especificados acesso a todas as entradas, coloque essa linha na seção default.
É possível configurar o PPP para fornecer endereços de servidores DNS e NetBIOS sob demanda.
Para habilitar estas extensões com o PPP versão 1.x, as seguintes linhas podem ser adicionadas à seção relevante do /etc/ppp/ppp.conf.
enable msext set ns 203.14.100.1 203.14.100.2 set nbns 203.14.100.5
E para o PPP versão 2 e acima:
accept dns set dns 203.14.100.1 203.14.100.2 set nbns 203.14.100.5
Isso informará aos clientes os endereços do servidor de nomes primário e secundário e um host do servidor de nomes NetBIOS.
Na versão 2 e acima, se a linha set dns for omitida, o PPP usará os valores encontrados em /etc/resolv.conf.
Alguns ISPs configuram seu sistema para que a parte de autenticação da conexão seja feita usando um dos mecanismos de autenticação PAP ou CHAP. Se este for o caso, o ISP não exibirá um prompt login: na conexão, mas começará a falar PPP imediatamente.
O PAP é menos seguro que o CHAP, mas a segurança normalmente não é um problema aqui, pois as senhas, embora sejam enviadas como texto simples com o PAP, estão sendo transmitidas apenas por uma linha serial. Não há muito espaço para crackers “escutarem”.
As seguintes alterações devem ser feitas:
13 set authnameMyUserName14 set authkeyMyPassword15 set login
Esta linha especifica o nome de usuário do PAP/CHAP. Insira o valor correto para MyUserName.
Esta linha especifica a senha PAP/CHAP . Insira o valor correto para MyPassword. Você pode querer adicionar uma linha adicional, como:
16 accept PAP
ou
16 accept CHAP
para tornar óbvio que essa é a intenção, mas o PAP e o CHAP são aceitos por padrão.
O ISP normalmente não exigirá um login no servidor ao usar o PAP ou o CHAP. Portanto, desabilite a string “set login”.
O PPP tem a capacidade de usar o NAT interno sem recursos de diverting do kernel. Esta funcionalidade pode ser ativada pela seguinte linha no /etc/ppp/ppp.conf:
nat enable yes
Como alternativa, o NAT pode ser ativado pela opção de linha de comando -nat. Há também uma opção no /etc/rc.conf chamada ppp_nat , que é ativada por padrão.
Ao usar este recurso, pode ser útil incluir as seguintes opções no /etc/ppp/ppp.conf para habilitar o encaminhamento de conexões de entrada:
nat port tcp 10.0.0.2:ftp ftp nat port tcp 10.0.0.2:http http
ou para não confiar em nenhuma conexão de entrada
nat deny_incoming yes
Embora o ppp agora esteja configurado, algumas edições ainda precisam ser feitas no /etc/rc.conf.
Trabalhando de cima para baixo neste arquivo, certifique-se de que a linha hostname= esteja configurada:
hostname="foo.example.com"
Se o ISP tiver fornecido um nome de host e um endereço IP estático, use este nome como o nome do host.
Procure pela variável network_interfaces. Para configurar o sistema para discar para o ISP sob demanda, certifique-se de que o dispositivo tun0 esteja adicionado à lista, caso contrário, remova-o.
network_interfaces="lo0 tun0" ifconfig_tun0=
A variável ifconfig_tun0 deve estar vazia, e um arquivo chamado /etc/start_if.tun0 deve ser criado. Este arquivo deve conter a linha:
ppp -auto mysystem
Este script é executado no momento da configuração da rede, iniciando o daemon do ppp no modo automático. Se esta máquina funcionar como um gateway, considere incluir a opção -alias. Consulte a página de manual para maiores detalhes.
Certifique-se de que o programa roteador está configurado para NO com a seguinte linha em /etc/rc.conf:
router_enable="NO"
É importante que o daemon routed não seja iniciado, pois o routed tende a excluir as entradas da tabela de roteamento padrão criadas pelo ppp.
É provavelmente uma boa idéia garantir que a linha sendmail_flags não inclua a opção -q, caso contrário o sendmail tentará fazer uma pesquisa de rede de vez em quando, possivelmente fazendo com que sua máquina disque. Você pode tentar:
sendmail_flags="-bd"
A desvantagem é que o sendmail é forçado a reexaminar a fila de mensagens sempre que o link ppp subir. Para automatizar isso, inclua !Bg no ppp.linkup:
1 provider: 2 delete ALL 3 add 0 0 HISADDR 4 !bg sendmail -bd -q30m
Uma alternativa é configurar um “dfilter” para bloquear o tráfego SMTP. Consulte os arquivos de exemplo para maiores detalhes.
Tudo o que resta é reiniciar a máquina. Após a reinicialização, digite:
#ppp
e, em seguida, o dial provider para iniciar a sessão PPP ou para configurar o ppp para estabelecer sessões automaticamente quando houver tráfego de saída e o start_if .tun0 não existir, digite:
#ppp -auto provider
É possível falar com o programa ppp enquanto ele está sendo executado em segundo plano, mas somente se uma porta de diagnóstico adequada tiver sido configurada. Para fazer isso, adicione a seguinte linha à configuração:
set server /var/run/ppp-tun%d DiagnosticPassword 0177Isso fará com que o PPP escute no soquete de domínio UNIX® especificado, solicitando aos clientes a senha especificada antes de permitir o acesso. O %d no nome é substituído pelo número do dispositivo tun que está em uso.
Uma vez que um socket tenha sido configurado, o programa pppctl(8) pode ser usado em scripts que desejam manipular o programa em execução.
A Seção 26.4, “Serviço Dial-in” fornece uma boa descrição sobre como ativar serviços dial-up usando o getty(8).
Uma alternativa para o getty é o port comms/mgetty+sendfax), uma versão mais inteligente do getty projetada com as linhas dial-up em mente.
As vantagens de usar o mgetty é que ele fala ativamente com os modems, o que significa que se a porta estiver desligada no /etc/ttys então o modem não irá atender o telefone.
Versões posteriores do mgetty (da 0.99beta em diante) também suportam a detecção automática de fluxos PPP, permitindo acesso ao servidor de clientes sem script.
Consulte a URL http://mgetty.greenie.net/doc/mgetty_toc.html para maiores informações sobre o mgetty.
Por padrão, o port comms/mgetty+sendfax vem com a opção AUTO_PPP ativada permitindo que o mgetty detecte a fase LCP das conexões PPP e crie automaticamente um shell ppp. No entanto, como a sequência de login/senha padrão não ocorre, é necessário autenticar os usuários usando o PAP ou o CHAP.
Esta seção assume que o usuário compilou com sucesso e instalou o port comms/mgetty+sendfax em seu sistema.
Assegure-se de que o /usr/local/etc/mgetty+sendfax/login.config tenha o seguinte:
/AutoPPP/ - - /etc/ppp/ppp-pap-dialup
Isto diz ao mgetty para executar o ppp-pap-dialup para conexões PPP detectadas.
Crie um arquivo executável chamado /etc/ppp/ppp-pap-dialup contendo o seguinte:
#!/bin/sh exec /usr/sbin/ppp -direct pap$IDENT
Para cada linha dial-up ativada em /etc/ttys, crie uma entrada correspondente em /etc/ppp/ppp.conf. Isso irá coexistir com as definições que criamos acima.
pap: enable pap set ifaddr 203.14.100.1 203.14.100.20-203.14.100.40 enable proxy
Cada usuário que fizer login com este método precisará ter um nome de usuário/senha em /etc/ppp/ppp.secret ou, como alternativa, adicione a seguinte opção para autenticar os usuários via PAP a partir de /etc/passwd.
enable passwdauth
Para atribuir à alguns usuários um endereço de IP estático , especifique o endereço como o terceiro argumento em /etc/ppp/ppp.secret. Consulte o /usr/share/examples/ppp/ppp.secret.sample para exemplos.
All FreeBSD documents are available for download at https://download.freebsd.org/ftp/doc/
Questions that are not answered by the
documentation may be
sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.