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 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
.
É 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 authnameMyUserName
14 set authkeyMyPassword
15 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 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.
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>.