27.2. Configurando o PPP

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:

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 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/.

Nota:

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.

27.2.1. Configuração básica

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 ifaddr x.x.x.x/0 y.y.y.y/0 255.255.255.255 0.0.0.0
17      add default HISADDR
Linha 1:

Identifica a entrada default. Os comandos nesta entrada (linhas 2 a 9) são executados automaticamente quando o ppp é executado.

Linha 2:

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
Linha 3:

Exibe a versão do ppp(8) para o software PPP em execução no outro lado da conexão.

Linha 4:

Identifica o dispositivo ao qual o modem está conectado, onde COM1 é /dev/cuau0 e COM2 é /dev/cuau1.

Linha 5:

Define a velocidade de conexão. Se 115200 não funcionar em um modem mais antigo, tente 38400 em seu lugar.

Linhas 6 & 7:

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 \.

Linha 8:

Define o tempo ocioso limite do link em segundos.

Linha 9:

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.

Linha 10:

Uma linha em branco para facilitar a leitura. Linhas em branco são ignoradas pelo ppp(8).

Linha 11:

Identifica uma entrada chamada provider. Isto pode ser alterado para o nome do ISP, para que load ISP possa ser usado para iniciar a conexão.

Linha 12:

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.

Linhas 13 & 14:

Use o nome de usuário e senha para o ISP.

Linha 15:

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.

Linha 16:

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
Linha 17:

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 HISADDR

Este 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 mary

Para fornecer aos usuários especificados acesso a todas as entradas, coloque essa linha na seção default.

27.2.2. Configuração Avançada

É 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.

27.2.2.1. Autenticação PAP e CHAP

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 authname MyUserName
14      set authkey MyPassword
15      set login
Linha 13:

Esta linha especifica o nome de usuário do PAP/CHAP. Insira o valor correto para MyUserName.

Linha 14:

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.

Linha 15:

O ISP normalmente não exigirá um login no servidor ao usar o PAP ou o CHAP. Portanto, desabilite a string set login.

27.2.2.2. Usando a funcionalidade de conversão de endereços de rede (NAT) do PPP

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

27.2.3. Configuração final do sistema

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=

Nota:

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.

27.2.4. Usando o ppp

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 0177

Isso 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.

27.2.5. Configurando serviços de discagem

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>.