Antes que você inicie o ajuste do PPP na sua máquina, certifique-se de que o pppd está no diretório /usr/sbin e que o diretório /etc/ppp existe.
O pppd pode funcionar de dois modos:
Como um ``cliente'' -- você quer conectar sua máquina com o mundo exterior através de uma conexão PPP serial ou de um de modem.
Como um ``servidor'' -- sua máquina está localizada em uma rede e é utilizada para conectar outros computadores através de PPP.
Nos dois casos você deverá ajustar o arquivo de opções (/etc/ppp/options ou ~/.ppprc se você tem mais de um usuário na máquina que utiliza PPP).
Você irá também precisar de um software para modem/serial (preferencialmente comms/kermit), para que você possa discar e estabelecer uma conexão com a máquina remota.
O arquivo /etc/ppp/options abaixo pode ser utilizado para se conectar a um servidor PPP da Cisco.
crtscts # ativa controle de fluxo por hardware modem # linha de controle do modem noipdefault # o servidor PPP remoto deve definir um endereço IP para você # se a máquina remota não definir o endereço durante a # negociação IPCP, remova esta opção passive # espera por pacotes LCP domain ppp.foo.com # coloque seu domínio aqui :<remote_ip> # ponha o endereço da máquina remota aqui # isso será utilizado para rotear os pacotes pelo link PPP # se você não especificou a opção noipdefault # mude essa linha para <local_ip>:<remote_ip> defaultroute # coloque isso se você deseja que o servidor PPP seja # o seu roteador padrão
Para conectar:
Disque para o host remoto usando o kermit (ou outro programa para o modem) e digite seu usuário e senha (ou o que quer que seja necessário para ativar PPP no host remoto.
Saia do kermit (sem desconectar a linha).
Digite o seguinte:
# /usr/src/usr.sbin/pppd.new/pppd /dev/tty01 19200
Certifique-se de usar a velocidade e o nome do dispositivo apropriados.
Agora seu computador está conectado por PPP. Se a conexão falhar, você pode adicionar a opção debug ao arquivo /etc/ppp/options e verificar as mensagens no console para diagnosticar o problema.
O script /etc/ppp/pppup abaixo irá fazer os 3 estágios automaticamente:
#!/bin/sh ps ax |grep pppd |grep -v grep pid=`ps ax |grep pppd |grep -v grep|awk '{print $1;}'` if [ "X${pid}" != "X" ] ; then echo 'killing pppd, PID=' ${pid} kill ${pid} fi ps ax |grep kermit |grep -v grep pid=`ps ax |grep kermit |grep -v grep|awk '{print $1;}'` if [ "X${pid}" != "X" ] ; then echo 'killing kermit, PID=' ${pid} kill -9 ${pid} fi ifconfig ppp0 down ifconfig ppp0 delete kermit -y /etc/ppp/kermit.dial pppd /dev/tty01 19200
/etc/ppp/kermit.dial é um script do kermit que disca e faz toda a autorização necessária no host remoto (um exemplo de tal script está anexado ao final deste documento).
Use o seguinte script /etc/ppp/pppdown para desconectar a linha PPP:
#!/bin/sh pid=`ps ax |grep pppd |grep -v grep|awk '{print $1;}'` if [ X${pid} != "X" ] ; then echo 'killing pppd, PID=' ${pid} kill -TERM ${pid} fi ps ax |grep kermit |grep -v grep pid=`ps ax |grep kermit |grep -v grep|awk '{print $1;}'` if [ "X${pid}" != "X" ] ; then echo 'killing kermit, PID=' ${pid} kill -9 ${pid} fi /sbin/ifconfig ppp0 down /sbin/ifconfig ppp0 delete kermit -y /etc/ppp/kermit.hup /etc/ppp/ppptest
Verifique se o pppd está ainda executando através do comando /usr/etc/ppp/ppptest, que deverá se parecer com o seguinte:
#!/bin/sh pid=`ps ax| grep pppd |grep -v grep|awk '{print $1;}'` if [ X${pid} != "X" ] ; then echo 'pppd running: PID=' ${pid-NONE} else echo 'No pppd running.' fi set -x netstat -n -I ppp0 ifconfig ppp0
Para desligar, execute o /etc/ppp/kermit.hup, que deve conter:
set line /dev/tty01 ; put your modem device here set speed 19200 set file type binary set file names literal set win 8 set rec pack 1024 set send pack 1024 set block 3 set term bytesize 8 set command bytesize 8 set flow none pau 1 out +++ inp 5 OK out ATH0\13 echo \13 exit
Um método alternativo é usar o comando chat invés do kermit:
Os dois arquivos seguintes são suficientes para estabelecer uma conexão com pppd.
/etc/ppp/options:
/dev/cuaa1 115200 crtscts # ativa controle de fluxo por hardware modem # linha de controle do modem connect "/usr/bin/chat -f /etc/ppp/login.chat.script" noipdefault # o servidor PPP remoto deve definir um endereço IP para você # se a máquina remota não definir o endereço durante a # negociação IPCP, remova esta opção passive # espera por pacotes LCP domain <your.domain> # coloque seu domínio aqui # ponha o endereço da máquina remota aqui # isso será utilizado para rotear os pacotes pelo link PPP # se você não especificou a opção noipdefault # mude essa linha para <local_ip>:<remote_ip> defaultroute # coloque isso se você deseja que o servidor PPP seja # o seu roteador padrão
/etc/ppp/login.chat.script:
Nota: O conteúdo abaixo deve ficar em uma única linha:
ABORT BUSY ABORT 'NO CARRIER' "" AT OK ATDT<phone.number> CONNECT "" TIMEOUT 10 ogin:-\\r-ogin: <login-id> TIMEOUT 5 sword: <password>
Uma vez que eles estiverem instalados e modificados corretamente, tudo que você precisa fazer é executar o pppd da seguinte maneira:
# pppd
O arquivo /etc/ppp/options deve conter algo similar ao seguinte:
crtscts # Controle de fluxo por hardware netmask 255.255.255.0 # máscara de rede (não requerido) 192.114.208.20:192.114.208.165 # IP's da máquina remota e local # IP local pode ser diferente do qual # você definiei para a interface ethernet # na sua máquina. # IP remoto é o endereço IP que será definido # para a máquina remota. domain ppp.foo.com # seu domínio passive # esperar por LCP modem # linha do modem
O script /etc/ppp/pppserv abaixo irá fazer com que o pppd se comporte como um servidor:
#!/bin/sh ps ax |grep pppd |grep -v grep pid=`ps ax |grep pppd |grep -v grep|awk '{print $1;}'` if [ "X${pid}" != "X" ] ; then echo 'killing pppd, PID=' ${pid} kill ${pid} fi ps ax |grep kermit |grep -v grep pid=`ps ax |grep kermit |grep -v grep|awk '{print $1;}'` if [ "X${pid}" != "X" ] ; then echo 'killing kermit, PID=' ${pid} kill -9 ${pid} fi # reset ppp interface ifconfig ppp0 down ifconfig ppp0 delete # enable autoanswer mode kermit -y /etc/ppp/kermit.ans # run ppp pppd /dev/tty01 19200
Use o script /etc/ppp/pppservdown para para o servidor:
#!/bin/sh ps ax |grep pppd |grep -v grep pid=`ps ax |grep pppd |grep -v grep|awk '{print $1;}'` if [ "X${pid}" != "X" ] ; then echo 'killing pppd, PID=' ${pid} kill ${pid} fi ps ax |grep kermit |grep -v grep pid=`ps ax |grep kermit |grep -v grep|awk '{print $1;}'` if [ "X${pid}" != "X" ] ; then echo 'killing kermit, PID=' ${pid} kill -9 ${pid} fi ifconfig ppp0 down ifconfig ppp0 delete kermit -y /etc/ppp/kermit.noans
O script para kermit abaixo (/etc/ppp/kermit.ans) irá ativar/desativar o modo de atendimento automático do seu modem. Ele deve se parecer com o seguinte:
set line /dev/tty01 set speed 19200 set file type binary set file names literal set win 8 set rec pack 1024 set send pack 1024 set block 3 set term bytesize 8 set command bytesize 8 set flow none pau 1 out +++ inp 5 OK out ATH0\13 inp 5 OK echo \13 out ATS0=1\13 ; mude isso para ATS0=0\13 se você quer desabilitar ; o modo de atendimento automático. inp 5 OK echo \13 exit
O script chamado /etc/ppp/kermit.dial é utilizado para discagem e autenticação na máquina remota. Você precisará customizá-lo para suas necessidades. Coloque seu usuário e senha nesse script; você também precisará mudar a indicação de entrada dependendo das respostas do seu modem e da máquina remota.
; ; ponha a linha serial a qual o modem está ligado: ; set line /dev/tty01 ; ; velocidade do modem: ; set speed 19200 set file type binary ; full 8 bit file xfer set file names literal set win 8 set rec pack 1024 set send pack 1024 set block 3 set term bytesize 8 set command bytesize 8 set flow none set modem hayes set dial hangup off set carrier auto ; Then SET CARRIER if necessary, set dial display on ; Then SET DIAL if necessary, set input echo on set input timeout proceed set input case ignore def \%x 0 ; login prompt counter goto slhup :slcmd ; Poe o modem em modo de comando echo Put the modem in command mode. clear ; Limpa caracteres não lidos do buffer de entrada pause 1 output +++ ; hayes escape sequence input 1 OK\13\10 ; wait for OK if success goto slhup output \13 pause 1 output at\13 input 1 OK\13\10 if fail goto slcmd ; if modem doesn't answer OK, try again :slhup ; desliga o telefone clear ; Limpa caracteres não lidos do buffer de entrada pause 1 echo Hanging up the phone. output ath0\13 ; hayes command for on hook input 2 OK\13\10 if fail goto slcmd ; se não houve resposta OK, poe o modem em modo de comando :sldial ; disca o número pause 1 echo Dialing. output atdt9,550311\13\10 ; ponha o número do telefone aqui assign \%x 0 ; zera o contador de tempo :look clear ; Limpa caracteres não lidos do buffer de entrada increment \%x ; Conta os segundos input 1 {CONNECT } if success goto sllogin reinput 1 {NO CARRIER\13\10} if success goto sldial reinput 1 {NO DIALTONE\13\10} if success goto slnodial reinput 1 {\255} if success goto slhup reinput 1 {\127} if success goto slhup if < \%x 60 goto look else goto slhup :sllogin ; login assign \%x 0 ; Zera o contador de tempo pause 1 echo Looking for login prompt. :slloop increment \%x ; Conta os segundos clear ; Limpa caracteres não lidos do buffer de entrada output \13 ; ; ponha o prompt de login esperado aqui: ; input 1 {Username: } if success goto sluid reinput 1 {\255} if success goto slhup reinput 1 {\127} if success goto slhup if < \%x 10 goto slloop ; tenta 10 vezes conseguir o prompt de login else goto slhup ; desliga e tenta denovo se falhou 10 vezes :sluid ; ; ponha seu usuário aqui: ; output ppp-login\13 input 1 {Password: } ; ; ponha sua senha aqui: ; output ppp-password\13 input 1 {Entering SLIP mode.} echo quit :slnodial echo \7No dialtone. Check the telephone line!\7 exit 1 ; local variables: ; mode: csh ; comment-start: "; " ; comment-start-skip: "; " ; end:
Este, e outros documentos, podem ser obtidos em ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.
Para perguntas sobre FreeBSD, leia a documentação antes de contatar <questions@FreeBSD.org>.
Para perguntas sobre esta documentação, envie e-mail para <doc@FreeBSD.org>.