Last night I wanted to try out the kernel pppoe rather than userland
pppoe, on 4.0 GENERIC/i386.
Took me a few minutes but I was able to setup a stable connection,
surf the net etc. Many thing worked, but one thing didn't. I play an
online game called Eve Online, and while using in-kernel pppoe I
wasn't able to log in. pfctl -s showed an established connection
bidirectionally, but data transfer wasn't happening. My pf rules
didn't change except to change my ext_if to the pppoe0 connection.
Here is what my connections look like when they're up
pppoe0: flags=8851<UP,POINTOPOINT,RUNNING,SIMPLEX,MULTICAST> mtu 1492
dev: de0 state: session
sid: 0x1c12 PADI retries: 5 PADR retries: 0 time: 00:22:51
sppp: phase network authproto pap authname "[EMAIL PROTECTED]"
groups: pppoe egress
inet6 fe80::2e0:18ff:fea8:9d3a%pppoe0 -> prefixlen 64 scopeid 0x7
inet 216.106.102.33 --> 209.87.255.1 netmask 0xffffffff
tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1500
groups: tun egress
inet6 fe80::2e0:18ff:fea8:9d3a%tun0 -> prefixlen 64 scopeid 0x8
inet 216.106.102.33 --> 209.87.255.1 netmask 0xffffffff
The only difference I can spot is the MTU, which would actually be
1492 on tun0 as well, it just isn't reflected in the ifconfig. The
rest of my internal network is 1500. Should I try playing with my
internal MTUs, pf rules or something else? Just looking for ideas on
things to try. Is it possible that my packets are getting fragged on
the way out, and the remote end drops them?
What did work:
Web, http, smtp, imap, squid, torrents.
I did not test ftp but might do that tonight. Does the in-kernel pppoe
mangle packets differently than the userland? Is there some odd
fragmentation code that is different? Should I set my internal network
to 1492 to prevent any frags from being generated?
Cheers,
Pierre Lamy
-=-
My relevent pf entries
# macros
int_if = "fxp0"
#ext_if = "pppoe0"
ext_if = "tun0"
# options
set skip on lo
set block-policy return
set loginterface $ext_if
# scrub
scrub in all
nat on $ext_if from $int_if:network to any -> ($ext_if)
#Allow pings
pass in quick inet proto icmp all icmp-type $icmp_types keep state
#Pass packets from my allowed array
pass in from $machines to any keep state
pass in from any to $machines keep state
pass out from any to $machines keep state
pass out from $machines to any keep state
#Allow all outgoing connections
pass out on $ext_if proto tcp all keep state flags S/SA
pass out on $ext_if proto { udp, icmp } all keep state
And my dmesg
OpenBSD 4.0 (GENERIC) #1107: Sat Sep 16 19:15:58 MDT 2006
[EMAIL PROTECTED]:/usr/src/sys/arch/i386/compile/GENERIC
cpu0: Intel Pentium III ("GenuineIntel" 686-class, 128KB L2 cache) 568
MHz
cpu0:
FPU,V86,DE,PSE,TSC,MSR,PAE,MCE,CX8,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,MMX,FXSR,SSE
real mem = 402214912 (392788K)
avail mem = 358699008 (350292K)
using 4256 buffers containing 20213760 bytes (19740K) of memory
mainbus0 (root)
bios0 at mainbus0: AT/286+(aa) BIOS, date 03/03/00, BIOS32 rev. 0 @
0xf0520
apm0 at bios0: Power Management spec V1.2 (BIOS mgmt disabled)
apm0: APM power management enable: unrecognized device ID (9)
apm0: APM engage (device 1): power management disabled (1)
apm0: AC on, battery charge unknown
apm0: flags b0102 dobusy 0 doidle 1
pcibios0 at bios0: rev 2.1 @ 0xf0000/0xda2
pcibios0: PCI IRQ Routing Table rev 1.0 @ 0xf0d10/144 (7 entries)
pcibios0: PCI Interrupt Router at 000:04:0 ("Intel 82371FB ISA" rev 0x00)
pcibios0: PCI bus #1 is the last bus
bios0: ROM list: 0xc0000/0x8000
cpu0 at mainbus0
pci0 at mainbus0 bus 0: configuration mode 1 (no bios)
pchb0 at pci0 dev 0 function 0 "Intel 82443BX AGP" rev 0x03
ppb0 at pci0 dev 1 function 0 "Intel 82443BX AGP" rev 0x03
pci1 at ppb0 bus 1
vga1 at pci1 dev 0 function 0 "ATI Mach64 GW" rev 0x7a
wsdisplay0 at vga1 mux 1: console (80x25, vt100 emulation)
wsdisplay0: screen 1-5 added (80x25, vt100 emulation)
fxp0 at pci0 dev 3 function 0 "Intel 8255x" rev 0x05, i82558: irq 10,
address 00:e0:18:a8:9d:3a
inphy0 at fxp0 phy 1: i82555 10/100 PHY, rev. 0
pcib0 at pci0 dev 4 function 0 "Intel 82371AB PIIX4 ISA" rev 0x02
pciide0 at pci0 dev 4 function 1 "Intel 82371AB IDE" rev 0x01: DMA,
channel 0 wired to compatibility, channel 1 wired to compatibility
wd0 at pciide0 channel 0 drive 0: <FUJITSU MPF3204AT>
wd0: 16-sector PIO, LBA, 19546MB, 40031712 sectors
wd0(pciide0:0:0): using PIO mode 4, Ultra-DMA mode 2
atapiscsi0 at pciide0 channel 1 drive 0
scsibus0 at atapiscsi0: 2 targets
cd0 at scsibus0 targ 0 lun 0: <LG, CD-ROM CRN-8241B, 1.05> SCSI0
5/cdrom removable
cd0(pciide0:1:0): using PIO mode 4, DMA mode 2
uhci0 at pci0 dev 4 function 2 "Intel 82371AB USB" rev 0x01: irq 10
usb0 at uhci0: USB revision 1.0
uhub0 at usb0
uhub0: Intel UHCI root hub, rev 1.00/1.00, addr 1
uhub0: 2 ports with 2 removable, self powered
piixpm0 at pci0 dev 4 function 3 "Intel 82371AB Power" rev 0x02: SMI
iic0 at piixpm0
"unknown" at iic0 addr 0x18 not configured
lm1 at iic0 addr 0x2d: W83781D
eso0 at pci0 dev 9 function 0 "ESS SOLO-1 AudioDrive" rev 0x01:
ES1946, irq 5
audio0 at eso0
opl0 at eso0: model OPL3
midi0 at opl0: <ESO Yamaha OPL3>
de0 at pci0 dev 20 function 0 "DEC 21041" rev 0x11, SMC 21041 pass
1.1: irq 11, address 00:00:c0:dd:f7:cf
isa0 at pcib0
isadma0 at isa0
pckbc0 at isa0 port 0x60/5
pckbd0 at pckbc0 (kbd slot)
pckbc0: using irq 1 for kbd slot
wskbd0 at pckbd0: console keyboard, using wsdisplay0
pcppi0 at isa0 port 0x61
midi1 at pcppi0: <PC speaker>
spkr0 at pcppi0
lpt0 at isa0 port 0x378/4 irq 7
lm0 at isa0 port 0x290/8: W83781D
lm1 detached
npx0 at isa0 port 0xf0/16: using exception 16
pccom0 at isa0 port 0x3f8/8 irq 4: ns16550a, 16 byte fifo
pccom1 at isa0 port 0x2f8/8 irq 3: ns16550a, 16 byte fifo
fdc0 at isa0 port 0x3f0/6 irq 6 drq 2
fd0 at fdc0 drive 0: 1.44MB 80 cyl, 2 head, 18 sec
eso0: mapping Audio 1 DMA using I/O space at 0x410
biomask f745 netmask ff45 ttymask ffc7
pctr: 686-class user-level performance counters enabled
mtrr: Pentium Pro MTRR support
dkcsum: wd0 matches BIOS drive 0x80
root on wd0a
rootdev=0x0 rrootdev=0x300 rawdev=0x302