pfSense: Possível trafegar a porta real da WAN?

2

O roteador do pfSense parece ter problemas para se conectar à Internet. Meu modem e meu ISP confirmam que eu tenho sincronização, mas, ao mesmo tempo, o pfSense às vezes não se conecta (usando PPPoE ).

Eu quero tentar depurar o problema, observando a conexão PPPoE tentando obter um aumento, que geralmente é da forma:

1. PADI

O pfSense transmite um pacote PPPoE Active Discovery Initiation (PADI) para o meu ISP:

DESTINATION_ADDR: ff:ff:ff:ff:ff:ff     ;broadcast mac address
SOURCE_ADDR:      00:01:02:3d:71:85     ;pfSense WAN adapter mac address
ETHER_TYPE:       8863                  ;PPPoE Discovery stage
PAYLOAD:          11090000
                  1                     ;Version always 0x1
                   1                    ;Type always 0x1
                    09                  ;Code: 0x09 = PADI
                      0000              ;Session ID: 0x0000

2. PADO

O ISP então responde com um pacote PPADOe Active Discovery Offer (PADO):

DESTINATION_ADDR: 00:01:02:3d:71:85     ;pfSense WAN adapter mac address
SOURCE_ADDR:      00:90:1a:a0:a1:f4     ;ISP's PPPoE server mac address
ETHER_TYPE:       8863                  ;PPPoE Discovery stage
PAYLOAD:          11070000
                  1                     ;Version always 0x1
                   1                    ;Type always 0x1
                    07                  ;Code: 0x07 = PADO
                      0000              ;Session ID: 0x0000

3. PADR

O pfSense então pede para iniciar uma sessão PPPoE com o cara que respondeu à sua transmissão enviando um pacote de Pedido de Descoberta Ativo PPPoE (PADR) para eles:

DESTINATION_ADDR: 00:90:1a:a0:a1:f4   ;ISP's PPPoE server mac address
SOURCE_ADDR:      00:01:02:3d:71:85   ;pfSense WAN adapter mac address
ETHER_TYPE:       8863                ;PPPoE Discovery stage
PAYLOAD:          11190000
                  1                   ;Version always 0x1
                   1                  ;Type always 0x1
                    19                ;Code: 0x19 = PADR
                      0000            ;Session ID: 0x0000

4. PADS

Meu ISP então responde com um ID de sessão em um pacote de Confirmação de Sessão de Descoberta Ativa PPPoE (PADS):

DESTINATION_ADDR: 00:01:02:3d:71:85   ;pfSense WAN adapter mac address
SOURCE_ADDR:      00:90:1a:a0:a1:f4   ;ISP's PPPoE server mac address
ETHER_TYPE:       8863                ;PPPoE Discovery stage
PAYLOAD:          11651234
                  1                   ;Version always 0x1
                   1                  ;Type always 0x1
                    65                ;Code: 0x65 = PADS
                      1234            ;Session ID: 0x1234

... e assim por diante.

Eu quero monitorar a criação da sessão PPPoE . Eu quero ver se / quando o pfSense está transmitindo um pacote de inicialização PADI . Quero ver se meu ISP não estiver respondendo com PADO . Eu quero capturar os pacotes na interface WAN .

Aqueles que são afiados perceberão o problema. Eu quero capturar pacotes na interface WAN real do computador, e não na interface PPPoE "WAN", que ainda não está ativa. Ainda não está funcionando porque a conexão PPPoE ainda não está ativa.

Eu quero capturar pacotes no fio, não pacotes saindo da conexão virtual PPPoE.

É possível capturar pacotes na porta WAN, com o PPPoE como método de conexão à internet, com o pfSense?

    
por Ian Boyd 25.07.2010 / 03:09

2 respostas

3

Sim, você precisa fazê-lo via SSH e não com a tela de captura de pacotes GUI Diagnostics & gt ;, pois ele irá capturar na interface ng0 PPPoE. Apenas tcpdump como normal na interface Ethernet real que está sendo usada para a conexão PPPoE. Envie-o para o arquivo e puxe-o para uma máquina com o Wireshark para facilitar a análise. Algo como:

tcpdump -i em0 -s 0 -w /tmp/pppoe.pcap

para pegar tudo no em0 no arquivo /tmp/pppoe.pcap

    
por 25.07.2010 / 08:10
3

Para expandir a resposta de Chris, o comando que eu usei foi:

>tcpdump -i xl0 -e 'not (pppoes and ip)'

Onde

-i [interface]

especifica minha interface WAN, que para mim é xl0

-e 

inclui os endereços MAC de origem e destino, para que eu possa ver quem está enviando quais pacotes para quem

'not (pppoes and ip)'

é uma expressão que diz que eu quero excluir pacotes dentro de um pacote PPPoE S ession.

Nota: o tcpdump tem opções para monitorar apenas os pacotes de "descoberta" PPPoE (PADI, PADO, PADR, PADS):

>tcpdump -i xl0 -e pppoed

Isso mostraria apenas os pacotes de descoberta PPPoE. Eu preferia a outra sintaxe, porque uma vez que a sessão PPPoE é estabelecida, eu consigo ver autenticação de login / senha com meu ISP, bem como informações de IP / DNS / route / MTU.

Isso me levou a descobrir que o pfSense está enviando um pacote Descoberta ativa PPPoE (PADT) fora do azul. É por isso que meu link está indo para baixo - o pfSense está desconectando aleatoriamente.

A tag PADT indica o final da sessão e ninguém tem permissão para enviar mais pacotes naquela sessão. De RFC2516 - Um método para transmitir PPP sobre Ethernet (PPPoE) :

5.5 The PPPoE Active Discovery Terminate (PADT) packet

This packet may be sent anytime after a session is established to
indicate that a PPPoE session has been terminated. It may be sent by
either the Host or the Access Concentrator. The DESTINATION_ADDR
field is a unicast Ethernet address, the CODE field is set to 0xa7 and the SESSION_ID MUST be set to indicate which session is to be terminated. No TAGs are required.

When a PADT is received, no further PPP traffic is allowed to be sent
using that session. Even normal PPP termination packets MUST NOT be
sent after sending or receiving a PADT. A PPP peer SHOULD use the
PPP protocol itself to bring down a PPPoE session, but the PADT MAY be used when PPP can not be used.

Minha próxima pergunta será, claro,

Why is pfSense hanging up randomly?

A resposta é que um comutador ATM dentro do concentrador da Bell Canada está com defeito. O cartão seria redefinido aleatoriamente, perdendo qualquer memória da minha sessão PPPoE.

Enquanto isso, meu roteador não sabe que sua sessão PPPoE não é mais válida e continua a tentar se comunicar com a mesma SessionID . O concentrador, não reconhecendo essa sessão, ignora quaisquer pacotes vindos de mim.

O pfSense, depois de detectar 10 segundos sem tráfego, começa a enviar Solicitações de eco do LCP , em intervalos de 10 segundos, para a rede remota. Após 40 segundos sem receber nenhuma resposta, o pfSense desativa a sessão PPPoE e inicia uma nova:

PADI

O concentrador, vendo uma transmissão solicitando para iniciar uma sessão, responde; e logo em seguida a nova sessão PPPoE é estabelecida.

Comutador ATM atual ( defeituoso ):

00:90:1a:a0:a1:f4 Soluções Unisphere (foi: comunicações redstone)

Novo comutador ATM MAC:

a ser instalado em 8/6/2010

    
por 29.07.2010 / 21:57