Ethernet transparente sobre GRE não encaminhando tráfego

2

Estou executando no Linux 2.6.30.9 e tenho tentado configurar uma ethernet transparente sobre o túnel GRE. A topologia de rede usada é a seguinte:

EuqueroconectaroPC1eoPC2usandooTransparentEthernetsobreoGRE.RouterAestáconectadoàinternetviappp0comoRouterB.AmbasasconexõesdeinternetsãoPPPOE(PPPoEoAPVCs).

Entãoeufaço:

NoRoteadorA(Linux2.6.30.9):

iplinkaddtestgretypegretapremote193.152.243.206local95.121.205.77ttl255brctladdifbr0testgreiplinksettestgreup

NoRoteadorB(Linux2.6.30.9):

iplinkaddtestgretypegretapremote95.121.205.77local193.152.243.206ttl255brctladdifbr0testgreiplinksettestgreup

Saídadealgunscomandos:

NoRouterA(saídasimilarnoRouterB):

#iplinkshowtestgre36:testgre:<BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP>mtu1442qdiscpfifo_faststateUNKNOWNqlen1000link/ether5f:79:cd:4d:c6:57brdc1:98:f3:ce:ff:ff#brctlshowbridgenamebridgeidSTPenabledinterfacesbr08000.5f79cd4dc657noeth0.5eth0.4eth0.3eth0.2wlan0testgre

EntãoeufaçoopedidodePINGdePC1paraPC2:

ping192.168.1.33

EucorrootcpdumpnoRouterAevejooquadroARPRequestsobreoppp0(arquivopcapabertocomoWirehark):

Eu executo o tcpdump no RouterB anexado ao ppp1 e vejo que a Solicitação ARP chegou, mas ela não foi encaminhada de L2 para PC2. Eu não vejo a solicitação ARP no PC2.

Eu tento com entradas ARP estáticas, mas a Solicitação ICMP tem o mesmo problema, ela não é encaminhada para o PC2.

Não há regras de ebtables. Nem regras de iptables (A ação padrão é ACCEPT para ebtables e iptables). Devo adicionar o ppp0 à interface de ponte ou algo parecido?

    
por MABC 09.01.2014 / 19:14

1 resposta

0

O problema estava relacionado com a pergunta que fiz no ServerFault, IP / GRE compilado no kernel mas a interface gre0 não existe .

Eu resolvi a primeira pergunta deixando o driver demultiplexador GRE em gre.c registrar o manipulador de protocolo GRE no kernel. Mas eu descobri que quando um pacote GRE chega, o manipulador GRE não está apontando para nenhuma função ip_gre.c (o driver demultiplexador GRE deve verificar a versão GRE no pacote e passar o bloco para o manipulador de protocolo correto, mas no meu caso ele aponta NULL) .

Comentei o trecho de código em que gre.c registra o manipulador de protocolo GRE e descomentei o trecho de código em que ip_gre.c registra o manipulador de protocolo GRE. Agora, quando um pacote GRE chega, ele é bem decapsulado e enviado para a próxima camada, agora posso fazer ping do PC1 para o PC2 sem nenhum problema. Acho que esse problema está acontecendo com muitas pessoas em seus dispositivos incorporados porque eu pesquisei com google para a mensagem de erro "ipgre init: não é possível adicionar protocolo" quando o driver GRE IP não pode iniciar porque o driver demultiplexador GRE ainda registrou um manipulador GRE e eu encontrei vários dispositivos com este erro.

    
por 13.01.2014 / 16:56