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/shared/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.
|
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:
-
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/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
/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:
:
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:
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
:
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
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=
|
|
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:
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
:
É 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:
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:
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:
É 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
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.
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
.
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/shared/examples/ppp/ppp.secret.sample
para exemplos.