27.2. Configurando o PPP
Anterior | Capítulo 27. PPP | Próxima

## 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:

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

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

Anterior | Acima | Próxima
Capítulo 27. PPP | Principal | 27.3. Solução de problemas de conexões PPP

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