--- title: Capítulo 27. PPP part: Parte IV. Comunicação de rede prev: books/handbook/serialcomms next: books/handbook/mail showBookMenu: true weight: 32 params: path: "/books/handbook/ppp-and-slip/" --- [[ppp-and-slip]] = PPP :doctype: book :toc: macro :toclevels: 1 :icons: font :sectnums: :sectnumlevels: 6 :sectnumoffset: 27 :partnums: :source-highlighter: rouge :experimental: :images-path: books/handbook/ppp-and-slip/ ifdef::env-beastie[] ifdef::backend-html5[] :imagesdir: ../../../../images/{images-path} endif::[] ifndef::book[] include::shared/authors.adoc[] include::shared/mirrors.adoc[] include::shared/releases.adoc[] include::shared/attributes/attributes-{{% lang %}}.adoc[] include::shared/{{% lang %}}/teams.adoc[] include::shared/{{% lang %}}/mailing-lists.adoc[] include::shared/{{% lang %}}/urls.adoc[] toc::[] endif::[] ifdef::backend-pdf,backend-epub3[] include::../../../../../shared/asciidoctor.adoc[] endif::[] endif::[] ifndef::env-beastie[] toc::[] include::../../../../../shared/asciidoctor.adoc[] endif::[] [[ppp-and-slip-synopsis]] == Sinopse O FreeBSD suporta o protocolo Point-to-Point (PPP) que pode ser usado para estabelecer uma conexão de rede ou Internet usando um modem dial-up. Este capítulo descreve como configurar serviços de comunicação baseados em modem no FreeBSD. Depois de ler este capítulo, você saberá: * Como configurar, usar e solucionar problemas de uma conexão PPP. * Como configurar o PPP sobre Ethernet (PPPoE). * Como configurar o PPP sobre ATM (PPPoA). Antes de ler este capítulo, você deve: * Estar familiarizado com a terminologia básica de rede. * Entender os conceitos básicos e o propósito de uma conexão dial-up e PPP. [[userppp]] == Configurando o PPP O FreeBSD fornece suporte nativo para gerenciamento conexões dial-up PPP usando man:ppp[8]. O kernel padrão do FreeBSD fornece suporte para o [.filename]#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 man: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 [.filename]#/etc/ppp/ppp.conf# e arquivos de exemplos adicionais estão disponíveis em [.filename]#/usr/shared/examples/ppp/#. [NOTE] ==== 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. ==== [[userppp-staticIP]] === Configuração básica Para configurar uma conexão PPP, primeiro edite o [.filename]#/etc/ppp/ppp.conf# com as informações de discagem do ISP. Este arquivo é descrito da seguinte maneira: [.programlisting] .... 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: + [.programlisting] .... set log phase tun .... Linha 3::: Exibe a versão do man: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 [.filename]#COM1# é [.filename]#/dev/cuau0# e [.filename]#COM2# é [.filename]#/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 man:chat[8] para obter maiores informações. + Observe que esse comando continua na próxima linha para facilitar a leitura. Qualquer comando no [.filename]#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 man: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 man:ppp[8]para usar o IP Configuration Protocol (IPCP) para negociar um endereço IP dinâmico: + [.programlisting] .... 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 man:ppp[8] for iniciado manualmente ou automaticamente, um arquivo [.filename]#/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 [.filename]#ppp.conf#. [.programlisting] .... 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 [.filename]#ppp.conf# e crie o [.filename]#/etc/ppp/ppp.linkup# com as duas linhas acima. Outros exemplos para este arquivo podem ser encontrados em [.filename]#/usr/shared/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 [.filename]#/etc/group# . Em seguida, conceda ao usuário acesso a uma ou mais entradas em [.filename]#/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:`: [.programlisting] .... allow users fred mary .... Para fornecer aos usuários especificados acesso a todas as entradas, coloque essa linha na seção `default`. === 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 [.filename]#/etc/ppp/ppp.conf#. [.programlisting] .... 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: [.programlisting] .... 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 [.filename]#/etc/resolv.conf#. [[userppp-PAPnCHAP]] ==== 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: [.programlisting] .... 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: + [.programlisting] .... 16 accept PAP .... + ou + [.programlisting] .... 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". [[userppp-nat]] ==== 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 [.filename]#/etc/ppp/ppp.conf#: [.programlisting] .... 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 [.filename]#/etc/rc.conf# chamada `ppp_nat`, que é ativada por padrão. Ao usar este recurso, pode ser útil incluir as seguintes opções no [.filename]#/etc/ppp/ppp.conf# para habilitar o encaminhamento de conexões de entrada: [.programlisting] .... 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 [.programlisting] .... nat deny_incoming yes .... [[userppp-final]] === Configuração final do sistema Embora o `ppp` agora esteja configurado, algumas edições ainda precisam ser feitas no [.filename]#/etc/rc.conf#. Trabalhando de cima para baixo neste arquivo, certifique-se de que a linha `hostname=` esteja configurada: [.programlisting] .... 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 [.filename]#tun0# esteja adicionado à lista, caso contrário, remova-o. [.programlisting] .... network_interfaces="lo0 tun0" ifconfig_tun0= .... [NOTE] ==== A variável `ifconfig_tun0` deve estar vazia, e um arquivo chamado [.filename]#/etc/start_if.tun0# deve ser criado. Este arquivo deve conter a linha: [.programlisting] .... 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 [.filename]#/etc/rc.conf#: [.programlisting] .... 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: [.programlisting] .... 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 [.filename]#ppp.linkup#: [.programlisting] .... 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. === Usando o `ppp` Tudo o que resta é reiniciar a máquina. Após a reinicialização, digite: [source,shell] .... # 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 [.filename]#start_if .tun0# não existir, digite: [source,shell] .... # 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: [.programlisting] .... set server /var/run/ppp-tun%d DiagnosticPassword 0177 .... Isso fará com que o PPP escute no soquete de domínio UNIX(TM) especificado, solicitando aos clientes a senha especificada antes de permitir o acesso. O `%d` no nome é substituído pelo número do dispositivo [.filename]#tun# que está em uso. Uma vez que um socket tenha sido configurado, o programa man:pppctl[8] pode ser usado em scripts que desejam manipular o programa em execução. [[userppp-mgetty]] === Configurando serviços de discagem A crossref:serialcomms[dialup,Serviço Dial-in] fornece uma boa descrição sobre como ativar serviços dial-up usando o man:getty[8]. Uma alternativa para o `getty` é o port package: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 [.filename]#/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[http://mgetty.greenie.net/doc/mgetty_toc.html] para maiores informações sobre o `mgetty`. Por padrão, o port package: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 package:comms/mgetty+sendfax[] em seu sistema. Assegure-se de que o [.filename]#/usr/local/etc/mgetty+sendfax/login.config# tenha o seguinte: [.programlisting] .... /AutoPPP/ - - /etc/ppp/ppp-pap-dialup .... Isto diz ao `mgetty` para executar o [.filename]#ppp-pap-dialup# para conexões PPP detectadas. Crie um arquivo executável chamado [.filename]#/etc/ppp/ppp-pap-dialup# contendo o seguinte: [.programlisting] .... #!/bin/sh exec /usr/sbin/ppp -direct pap$IDENT .... Para cada linha dial-up ativada em [.filename]#/etc/ttys#, crie uma entrada correspondente em [.filename]#/etc/ppp/ppp.conf#. Isso irá coexistir com as definições que criamos acima. [.programlisting] .... 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 [.filename]#/etc/ppp/ppp.secret# ou, como alternativa, adicione a seguinte opção para autenticar os usuários via PAP a partir de [.filename]#/etc/passwd#. [.programlisting] .... enable passwdauth .... Para atribuir à alguns usuários um endereço de IP estático , especifique o endereço como o terceiro argumento em [.filename]#/etc/ppp/ppp.secret#. Consulte o [.filename]#/usr/shared/examples/ppp/ppp.secret.sample# para exemplos. [[ppp-troubleshoot]] == Solução de problemas de conexões PPP Esta seção aborda alguns problemas que podem surgir ao usar PPP em uma conexão de modem. Alguns ISPs apresentam o prompt `ssword` enquanto outros apresentam `password`. Se o script `ppp` não for escrito de acordo, a tentativa de login falhará. A maneira mais comum de depurar as conexões `ppp` é conectando manualmente conforme descrito nesta seção. === Verifique os Device Nodes Ao usar um kernel personalizado, certifique-se de incluir a seguinte linha no arquivo de configuração do kernel: [.programlisting] .... device uart .... O dispositivo [.filename]#uart# já está incluído no kernel `GENERIC`, portanto, nenhuma etapa adicional é necessária neste caso. Basta verificar a saída do `dmesg` para o dispositivo do modem com: [source,shell] .... # dmesg | grep uart .... Isso deve exibir alguma saída pertinente sobre os dispositivos [.filename]#uart#. Estas são as portas COM que precisamos. Se o modem funcionar como uma porta serial padrão, ele deve estar listado em [.filename]#uart1# ou [.filename]#COM2#. Nesse caso, uma recompilação do kernel não é necessária. Ao fazer a verificação, se o modem estiver em [.filename]#uart1#, o dispositivo do modem será [.filename]#/dev/cuau1#. === Conectando Manualmente Conectar-se à Internet controlando manualmente o `ppp` é rápido, fácil e uma ótima maneira de depurar uma conexão ou simplesmente obter informações sobre como o ISP trata as conexões `ppp` do cliente. Vamos iniciar o PPP na linha de comando. Note que em todos os nossos exemplos nós usaremos _example_ como o nome do host da máquina rodando o PPP. Para iniciar o `ppp`: [source,shell] .... # ppp .... [source,shell] .... ppp ON example> set device /dev/cuau1 .... Este segundo comando define o dispositivo do modem como [.filename]#cuau1#. [source,shell] .... ppp ON example> set speed 115200 .... Isso define a velocidade de conexão para 115.200 kbps. [source,shell] .... ppp ON example> enable dns .... Isto diz ao `ppp` para configurar o resolver e adicionar as linhas do servidor de nomes ao [.filename]#/etc/resolv.conf#. Se o `ppp` não puder determinar o nome do host, ele poderá ser configurado manualmente mais tarde. [source,shell] .... ppp ON example> term .... Isso alterna para o modo de "terminal" para controlar manualmente o modem. [.programlisting] .... deflink: Entering terminal mode on /dev/cuau1 type '~h' for help .... [source,shell] .... at OK atdt123456789 .... Use o comando `at` para inicializar o modem, então use o comando `atdt` e o número o ISP para iniciar o processo de discagem. [source,shell] .... CONNECT .... Confirmação da conexão, se tivermos problemas de conexão, não relacionados ao hardware, aqui é onde tentaremos resolvê-los. [source,shell] .... ISP Login:myusername .... Nesse prompt, responda com o nome de usuário fornecido pelo ISP. [source,shell] .... ISP Pass:mypassword .... Nesse prompt, responda com a senha fornecida pelo ISP. Assim como ocorre ao se logar no FreeBSD, a senha não será exibida quando você a digitar. [source,shell] .... Shell or PPP:ppp .... Dependendo do ISP, este aviso pode não aparecer. Em caso afirmativo, ele está perguntando se deve usar um shell no provedor ou iniciar o `ppp`. Neste exemplo, o `ppp` foi selecionado para estabelecer uma conexão com a Internet. [source,shell] .... Ppp ON example> .... Observe que neste exemplo o primeiro `p` foi capitalizado. Isso mostra que nós nos conectamos com sucesso ao ISP. [source,shell] .... PPp ON example> .... Nós nos autenticamos com sucesso com nosso ISP e estamos aguardando que o endereço IP seja atribuído. [source,shell] .... PPP ON example> .... Fizemos a negociação de um endereço IP e concluímos nossa conexão com êxito. [source,shell] .... PPP ON example>add default HISADDR .... Aqui nós adicionamos nossa rota padrão, precisamos fazer isso antes de podermos conversar com o mundo externo, já que atualmente a única conexão estabelecida é com o peer. Se isso falhar devido a rotas existentes, coloque o caractere `!` na frente do `add`. Alternativamente, defina isso antes de fazer a conexão real e ele negociará uma nova rota de acordo. Se tudo correu bem, agora deveríamos ter uma conexão ativa com a Internet, que poderia ser colocada em segundo plano usando kbd:[CTRL+z] Se o `PPP` retornar para `ppp`, a conexão será perdida. É bom saber isso porque mostra o status da conexão. Os P maiúsculos representam uma conexão com o ISP e os p minúsculos mostram que a conexão foi perdida. === Depuração Se uma conexão não puder ser estabelecida, desligue o fluxo de hardware CTS/RTS usando `set ctsrts off`. Normalmente este é o problema quando nos conectamos há alguns servidores de terminal com PPP, onde o PPP trava quando tenta gravar dados no link de comunicação e aguarda um Clear To Send (CTS), sinal que pode nunca vir. Ao usar esta opção, inclua `set accmap`, pois isso pode ser necessário para evitar que o hardware dependa de passar certos caracteres de ponta a ponta, na maioria das vezes XON/XOFF. Consulte man:ppp[8] para obter maiores informações sobre essa opção e como ela é usada. Um modem mais antigo pode precisar de `set parity even`. A paridade é definida como none por padrão, mas é usada para verificação de erros com um grande aumento no tráfego, em modems mais antigos. O PPP pode não retornar ao modo de comando, que geralmente é um erro de negociação em que o ISP está aguardando a negociação começar. Neste ponto, usando `~p` forçará o ppp a começar a enviar as informações de configuração. Se um prompt de login nunca aparecer, a autenticação PAP ou CHAP provavelmente será necessária. Para usar PAP ou CHAP, adicione as seguintes opções ao PPP antes de entrar no modo terminal: [source,shell] .... ppp ON example> set authname myusername .... Onde _myusername_ deve ser substituído pelo nome de usuário que foi atribuído pelo ISP. [source,shell] .... ppp ON example> set authkey mypassword .... Onde _mypassword_ deve ser substituído pela senha que foi atribuída pelo ISP. Se uma conexão for estabelecida, mas não conseguir encontrar nenhum nome de domínio, tente utilizar o man:ping[8] em um endereço IP. Se houver 100 por cento (100%) de perda de pacotes, é provável que uma rota padrão não tenha sido atribuída. Verifique novamente se `add default HISADDR` foi definido durante a conexão. Se uma conexão puder ser feita para um endereço IP remoto, é possível que um endereço de resolvedor não tenha sido adicionado ao [.filename]#/etc/resolv.conf#. Este arquivo deve se parecer com: [.programlisting] .... domain example.com nameserver x.x.x.x nameserver y.y.y.y .... Onde _x.x.x.x_ e _y.y.y.y_ deve ser substituído pelo endereço IP dos servidores DNS do ISP. Para configurar man:syslog[3] para fornecer o registro para a conexão PPP, verifique se essa linha existe no [.filename]#/etc/syslog.conf#: [.programlisting] .... !ppp *.* /var/log/ppp.log .... [[pppoe]] == Usando o PPP sobre Ethernet (PPPoE) Esta seção descreve como configurar o PPP sobre Ethernet (PPPoE). Aqui está um exemplo de [.filename]#ppp.conf# funcional: [.programlisting] .... default: set log Phase tun command # you can add more detailed logging if you wish set ifaddr 10.0.0.1/0 10.0.0.2/0 name_of_service_provider: set device PPPoE:xl1 # replace xl1 with your Ethernet device set authname YOURLOGINNAME set authkey YOURPASSWORD set dial set login add default HISADDR .... Como `root`, execute: [source,shell] .... # ppp -ddial name_of_service_provider .... Adicione o seguinte ao [.filename]#/etc/rc.conf#: [.programlisting] .... ppp_enable="YES" ppp_mode="ddial" ppp_nat="YES" # if you want to enable nat for your local network, otherwise NO ppp_profile="name_of_service_provider" .... === Usando um nome de perfil PPPoE Às vezes, será necessário usar nome de perfil para estabelecer a conexão. Nomes de perfil são usados para distinguir entre diferentes servidores PPPoE conectados a uma determinada rede. Qualquer informação do nome do perfil necessário deve estar na documentação fornecida pelo ISP. Como último recurso, pode-se tentar instalar o pacote ou port package:net/rr-pppoe[]. Lembre-se, no entanto, que isso pode desprogramar o seu modem e torná-lo inútil, então pense duas vezes antes de fazê-lo. Basta instalar o programa enviado com o modem. Em seguida, acesse o menu menu:System[] do programa. O nome do perfil deve estar listado lá. Geralmente é _ISP_. O nome do perfil (service tag) será usado na entrada de configuração PPPoE em [.filename]#ppp.conf# como a parte do provedor para o `set device`. Consulte man:ppp[8] para detalhes completos. Deve ficar assim: [.programlisting] .... set device PPPoE:xl1:ISP .... Não se esqueça de alterar o _xl1_ para o dispositivo adequado para a placa Ethernet. Não se esqueça de alterar o _ISP_ para o nome de perfil. Para informações adicionais, consulte http://web.archive.org/web/20130907043447/http://renaud.waldura.com:80/doc/freebsd/pppoe/[Banda larga mais barata com o FreeBSD em DSL] por Renaud Waldura. [[ppp-3com]] === PPPoE com um 3Com(TM)HomeConnect(TM) ADSL Modem Dual Link Este modem não segue a especificação PPPoE definida em http://www.faqs.org/rfcs/rfc2516.html[RFC 2516]. Para tornar o FreeBSD capaz de se comunicar com este dispositivo, um sysctl deve ser configurado. Isso pode ser feito automaticamente no momento da inicialização, atualizando o [.filename]#/etc/sysctl.conf#: [.programlisting] .... net.graph.nonstandard_pppoe=1 .... ou pode ser feito imediatamente com o comando: [source,shell] .... # sysctl net.graph.nonstandard_pppoe=1 .... Infelizmente, como essa é uma configuração valida para todo o sistema, não é possível falar com um cliente ou servidor PPPoE normal e um 3Com(TM)HomeConnect(TM) Modem ADSL ao mesmo tempo. [[pppoa]] == Usando PPP sobre ATM (PPPoA) Esta sessão descreve como configurar o PPP sobre ATM (PPPoA). O PPPoA é uma escolha popular entre os provedores europeus de DSL. === Usando o mpd O aplicativo mpd pode ser usado para conectar-se a uma variedade de serviços, em particular serviços PPTP. Ele pode ser instalado usando o pacote ou port package:net/mpd5[]. Muitos modems ADSL exigem que um túnel PPTP seja criado entre o modem e o computador. Uma vez instalado, configure o mpd para adequar-se às configurações do provedor. O port coloca um conjunto de arquivos de configuração de exemplos os quais são bem documentados em [.filename]#/usr/local/etc/mpd/#. Um guia completo para configurar o mpd está disponível no formato HTML em [.filename]#/usr/ports/shared/doc/mpd/#. Aqui está uma configuração de exemplo para conectar-se a um serviço ADSL com o mpd. A configuração está espalhada em dois arquivos, primeiro o [.filename]#mpd.conf#: [NOTE] ==== Este exemplo de [.filename]#mpd.conf# só funciona com o mpd 4.x. ==== [.programlisting] .... default: load adsl adsl: new -i ng0 adsl adsl set bundle authname username <.> set bundle password password <.> set bundle disable multilink set link no pap acfcomp protocomp set link disable chap set link accept chap set link keep-alive 30 10 set ipcp no vjcomp set ipcp ranges 0.0.0.0/0 0.0.0.0/0 set iface route default set iface disable on-demand set iface enable proxy-arp set iface idle 0 open .... <.> O nome de usuário usado para autenticar com seu ISP. <.> A senha usada para autenticar com seu ISP. Informações sobre o link, ou links, a estabelecer são encontradas em [.filename]#mpd.links#. Um exemplo do [.filename]#mpd.links# para acompanhar o exemplo acima é dado abaixo: [.programlisting] .... adsl: set link type pptp set pptp mode active set pptp enable originate outcall set pptp self 10.0.0.1 <.> set pptp peer 10.0.0.138 <.> .... <.> O endereço IP do computador FreeBSD executando o mpd. <.> O endereço IP do modem ADSL. O padrão do Alcatel SpeedTouch(TM) padrão é `10.0.0.138`. É possível inicializar a conexão facilmente, emitindo o seguinte comando como `root`: [source,shell] .... # mpd -b adsl .... Para ver o status da conexão: [source,shell] .... % ifconfig ng0 ng0: flags=88d1 mtu 1500 inet 216.136.204.117 --> 204.152.186.171 netmask 0xffffffff .... Usar o mpd é a maneira recomendada de se conectar a um serviço ADSL com o FreeBSD. === Usando o pptpclient Também é possível usar o FreeBSD para conectar-se a outros serviços PPPoA usando o package:net/pptpclient[]. Para usar o package:net/pptpclient[] para conectar-se a um serviço DSL, instale o port ou o pacote e edite o [.filename]#/etc/ppp/ppp.conf#. Uma seção de exemplo do [.filename]#ppp.conf# é dada abaixo. Para maiores informações sobre as opções do [.filename]#ppp.conf# consulte man:ppp[8]. [.programlisting] .... adsl: set log phase chat lcp ipcp ccp tun command set timeout 0 enable dns set authname username <.> set authkey password <.> set ifaddr 0 0 add default HISADDR .... <.> O nome de usuário no provedor de DSL. <.> A senha da sua conta. [WARNING] ==== Como a senha da conta é adicionada ao [.filename]#ppp.conf# em forma de texto simples, certifique-se de que ninguém possa ler o conteúdo deste arquivo: [source,shell] .... # chown root:wheel /etc/ppp/ppp.conf # chmod 600 /etc/ppp/ppp.conf .... ==== Isso abrirá um túnel para uma sessão PPP para o roteador DSL. Os modems Ethernet DSL têm um endereço IP LAN pré-configurado para conexão. No caso do Alcatel SpeedTouch(TM) Home, este endereço é `10.0.0.138`. A documentação do roteador deve listar o endereço que o dispositivo usa. Para abrir o túnel e iniciar uma sessão PPP: [source,shell] .... # pptp address adsl .... [TIP] ==== Se um E comercial ("&") for adicionado ao final desse comando, o pptp retornará ao prompt. ==== Um dispositivo de túnel virtual [.filename]#tun# será criado para interação entre os processos do pptp e do ppp. Quando o prompt for retornado ou o processo do pptp confirmar uma conexão, examine o túnel: [source,shell] .... % ifconfig tun0 tun0: flags=8051 mtu 1500 inet 216.136.204.21 --> 204.152.186.171 netmask 0xffffff00 Opened by PID 918 .... Se a conexão falhar, verifique a configuração do roteador, que geralmente é acessível usando um navegador da web. Além disso, examine a saída do `pptp` e o conteúdo do arquivo de log [.filename]#/var/log/ppp.log# para pistas.