[RP-PPPoE] pppoe-server: problem with duplicated PADO's

poldi871 at web.de poldi871 at web.de
Wed Dec 23 13:31:22 EST 2020


Hello Dianne,

I almost think that the problem is not with the PPPoE server, but with the kernel, possibly even a configuration problem. Because the client sends the PADI on the LAN *** and *** VLAN7 as described in my first mail.

In the strace, however, both packets received by the server are identical, but in the Wireshark trace they differ in terms of the VLAN tag.
Meanwhile I also ran a strace on my "old" simulator with the same client.

The trace looks like this:
[root at rznv79 ~]# strace -fx /usr/sbin/pppoe-server pty -F -T 60 -I eth2 -L 192.168.2.89 -N 1 -C pppoe -S pppoe -R 192.168.2.1
execve("/usr/sbin/pppoe-server", ["/usr/sbin/pppoe-server", "pty", "-F", "-T", "60", "-I", "eth2", "-L", "192.168.2.89", "-N", "1", "-C", "pppoe", "-S", "pppoe", "-R", ...], [/* 43 vars */]) = 0
brk(0)                                  = 0x90a1000
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb778e000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=90288, ...}) = 0
mmap2(NULL, 90288, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7777000
close(3)                                = 0
open("/lib/libc.so.6", O_RDONLY)        = 3
read(3, "\x7f\x45\x4c\x46\x01\x01\x01\x03\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x03\x00\x01\x00\x00\x00\x90\x7e\x61\x00\x34\x00\x00\x00"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=1906308, ...}) = 0
mmap2(0x601000, 1661356, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x601000
mmap2(0x791000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x190) = 0x791000
mmap2(0x794000, 10668, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x794000
close(3)                                = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7776000
set_thread_area({entry_number:-1 -> 6, base_addr:0xb77766c0, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0
access("/etc/sysconfig/32bit_ssse3_memcpy_via_32bit_ssse3_memmove", F_OK) = -1 ENOENT (No such file or directory)
mprotect(0x791000, 8192, PROT_READ)     = 0
mprotect(0x5f9000, 4096, PROT_READ)     = 0
munmap(0xb7777000, 90288)               = 0
getuid32()                              = 0
geteuid32()                             = 0
getgid32()                              = 0
getegid32()                             = 0
brk(0)                                  = 0x90a1000
brk(0x90c2000)                          = 0x90c2000
open("/dev/urandom", O_RDONLY)          = 3
...

The server reads only one of the two PADIs (the LAN-PADI).

And I noticed something else:
If you compare the "tcpdump" dumps from my first mail "Trace (doubling the PADO's on the LAN with 3.13)" and "Here is a trace from my" old "simulator under CentOS-6.6 and the PPPoE server version 3.10 as it should look like ", you can see that the VLAN interface works with a different MAC on the old simulator. But both MACs are the same on the "new" simulator.

That brought me to the above mentioned idea that it could be a kernel problem or even still a configuration problem.
I will investigate further at this point.

Thank you for your support, the key idea was to have a closer look at the strace. Unfortunately I didn't think of it myself ;-))

Once again, "merry xmas"

Poldi
 
 
 

Gesendet: Mittwoch, 23. Dezember 2020 um 18:34 Uhr
Von: "Dianne Skoll" <dianne at skoll.ca>
An: rp-pppoe at lists.skoll.ca
Betreff: Re: [RP-PPPoE] pppoe-server: problem with duplicated PADO's
Hi,

> thanks for the quick response.
> As requested, I will send you the strace output as an attachment.

OK. The important lines are these ones; I have added numbers for
convenience:

[1] recvfrom(3, "\xff\xff\xff\xff\xff\xff\x5e\x09\x87\x21\xdc\xee\x88\x63\x11\x09\x00\x00\x00\x0c\x01\x01\x00\x00\x01\x03\x00\x04\x80\x06\x00\x00"..., 1528, 0, NULL, NULL) = 60

[2] sendto(3, "\x5e\x09\x87\x21\xdc\xee\x08\x00\x27\x2d\x3f\x3b\x88\x63\x11\x07\x00\x00\x00\x32\x01\x02\x00\x05\x70\x70\x70\x6f\x65\x01\x01\x00"..., 70, 0, NULL, 0) = 70

[3] recvfrom(3, "\xff\xff\xff\xff\xff\xff\x5e\x09\x87\x21\xdc\xee\x88\x63\x11\x09\x00\x00\x00\x0c\x01\x01\x00\x00\x01\x03\x00\x04\x80\x06\x00\x00"..., 1528, 0, NULL, NULL) = 60

[4] sendto(3, "\x5e\x09\x87\x21\xdc\xee\x08\x00\x27\x2d\x3f\x3b\x88\x63\x11\x07\x00\x00\x00\x32\x01\x02\x00\x05\x70\x70\x70\x6f\x65\x01\x01\x00"..., 70, 0, NULL, 0) = 70

In line 1, we see an incoming Ethernet packet.

Destination address = 0xffffffffffff - Ethernet broadcast
Source address = 0x5e098721dcee - MAC address of sender
Ether type = 0x8863 - PPPoE discovery
Version = 0x1
Type = 0x1
CODE = 0x09 - PADI packet

Line 2 is the server responding with a PADO packet (code 0x07)

Line 3 is the server receiving *another* PADI packet. In fact, it's identical
to line 1.

So somehow, the client (or something?) is sending two PADI packets, or
somehow the kernel is lying to the PPPoE server and returning two PADI
packets where only one was received on the network.

Regards,

Dianne.
_______________________________________________
RP-PPPoE mailing list
RP-PPPoE at lists.skoll.ca
https://dianne.skoll.ca/mailman/listinfo/rp-pppoe



More information about the RP-PPPoE mailing list