I'm having this problem with 1.3b7 and 1.3b8, and I think I found the cause. The IP checksum of almost every packet M0n0wall sends out on the WLAN is incorrect (and in fact exactly 0), so while the packets arrive back at the host on the WLAN, the packets are then ignored. The only exception seems to be the DHCP packets, which have correct checksums. So the host on the WLAN connects to the network via DHCP successfully and then can talk to the LAN, the M0n0 box, and upstream to the Internet but ignores every IP packet coming from the M0n0 box, which includes traffic generated both on the M0n0box and anywhere on the WAN. IP packets generated by LAN hosts (or indeed, by hosts on any subnet behind them) come directly to the WLAN host and are well-formed, so connectivity with those hosts is fine.
If you use M0n0wall's GUI to ping a WLAN host, these packets also have incorrect IP checksums (of 0). Pings to LAN hosts are fine.
I confirmed the bad checksums on b8 only. On b7, I had identical connectivity problem but I didn't actually look at the checksums till after trying an upgrade to b8.
A related fact is that the M0n0 box responds to ARP broadcasts by WLAN hosts with the MAC of the wireless interface, but all frames from M0n0 are tagged with a source of the MAC of the LAN interface. I don't know enough about networking, but it seemed to me a potential problem if the ARP table didn't confirm the hardware/IP source tags of frames that are supposed to be coming from the local subnet. I tried setting M0n0wall's WLAN interface to have a spoofed MAC matching the LAN interface, but that seemed just to confuse M0n0wall (couldn't connect a host on the WLAN at all). Then I tried putting a static ARP entry in the WLAN host pointing to M0n0's LAN interface. Then the incoming frames did match the ARP table, but "ping" still refused to recognize the packets as legitimate replies. This is when I noticed the checksum problem, and now I think that's the only problem. But I mention the ARP table discrepancy as background that may be relevant.
Jan 14 15:30:15 m0n0 kernel: ath0: <Atheros 5212> mem 0xe0080000-0xe008ffff irq 9 at device 12.0 on pci0 Jan 14 15:30:15 m0n0 kernel: ath0: Ethernet address: 00:80:48:7e:13:60 Jan 14 15:30:15 m0n0 kernel: ath0: mac 7.8 phy 4.5 radio 5.6
vr0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500 options=b<RXCSUM,TXCSUM,VLAN_MTU> inet 192.168.2.1 netmask 0xffffff00 broadcast 192.168.2.255 ether 00:0d:b9:12:67:b0 media: Ethernet autoselect (100baseTX <full-duplex>) status: active vr1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 options=b<RXCSUM,TXCSUM,VLAN_MTU> inet <PUBLIC IP ADDRESS CENSORED> netmask 0xfffffc00 broadcast 255.255.255.255 ether 00:0d:b9:12:67:b1 media: Ethernet autoselect (100baseTX <full-duplex>) status: active ath0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500 ether 00:80:48:7e:13:60 media: IEEE 802.11 Wireless Ethernet autoselect mode 11g <hostap> status: associated ssid LairOfRosco channel 1 bssid 00:80:48:7e:13:60 authmode WPA privacy MIXED deftxkey 2 AES-CCM 2:128-bit AES-CCM 3:128-bit txpowmax 36 bmiss 7 protmode CTS burst dtimperiod 1 bintval 100 enc0: flags=41<UP,RUNNING> mtu 1536 lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384 inet 127.0.0.1 netmask 0xff000000
|