4

The scenario:

  • 192.168.1.1 -- the router
  • 192.168.1.2 -- a server, connected to the router via ethernet
  • 192.168.1.3 -- laptop A, connected to the router via WiFi
  • 192.168.1.8 -- laptop B, connected to the router via WiFi

All computers (except the router) run Ubuntu. All computers can access the Internet.

The problem:

  • the server can reach both the router and laptop A, but not laptop B
  • laptop A can reach both the router and the server, but not laptop B
  • laptop B can reach only the router, not the server nor laptop A

With "reach" here I mean: ping, arping, ssh or any other protocol over TCP/IPv4. IPv6 is not supported by the router.

What's going on? How do I resolve the problem?

Additional information

  • When trying ping from or to laptop B, I get Destination Host Unreachable.

  • When trying to connect (e.g. via ssh) from or to laptop B, I get No route to host.

  • On laptop A, I've tried manually adding the MAC address of laptop B to the ARP cache with:

    $ arp -s 192.168.1.8 68:a3:c4:10:53:da
    

    But with no luck.

  • tracepath does not return anything useful:

    $ tracepath -n 192.168.1.8  # Run on laptop A
     1?: [LOCALHOST]                                         pmtu 1500
     1:  192.168.1.3                                         2996.146ms !H
         Resume: pmtu 1500 
    
    $ tracepath -n 192.168.1.3  # Run on laptop B
     1?: [LOCALHOST]                                         pmtu 1500
     1:  192.168.1.8                                         2997.463ms !H
         Resume: pmtu 1500 
    
  • The router's DHCP server returns the correct addresses, on any computer (all computers use Avahi).

  • The router supports 2.4 GHz and 5 GHz, but both laptops are using the 2.4 GHz band, according to nm-tool (at the moment, laptop A is on 2462 MHz and laptop B is on 2464 MHz).

  • iptables chains are empty, and all of them have policy ACCEPT.

  • route and ip route return the expected output, on all computers:

    $ ip route  # From laptop A
    default via 192.168.1.1 dev wlan0  proto static 
    192.168.1.0/24 dev wlan0  proto kernel  scope link  src 192.168.1.3  metric 9 
    
    $ ip route  # From laptop B
    default via 192.168.1.1 dev wlan0  proto static 
    192.168.1.0/24 dev wlan0  proto kernel  scope link  src 192.168.1.8  metric 9 
    
  • nmap -sP 192.168.1.1/24 returns:

    • when run from laptop A or from the server: all the addresses in the LAN, except 192.168.1.8
    • when run from laptop B: only 192.168.1.1 and 192.168.1.8.
  • This is lspci from laptop B:

    12:00.0 Network controller: Broadcom Corporation BCM4313 802.11bgn Wireless Network Adapter (rev 01)
            Subsystem: Dell Inspiron M5010 / XPS 8300
            Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
            Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
            Latency: 0, Cache Line Size: 64 bytes
            Interrupt: pin A routed to IRQ 17
            Region 0: Memory at fbb00000 (64-bit, non-prefetchable) [size=16K]
            Capabilities: <access denied>
            Kernel driver in use: bcma-pci-bridge
    

    Yes, it's the nasty Broadcom, I know. But I'm using the free driver (brcmsmac).

  • Relevant dmesg:

    [   19.597541] brcmsmac bcma0:0: mfg 4bf core 812 rev 24 class 0 irq 17
    [   19.610379] ieee80211 phy0: registered radio enabled led device: brcmsmac-phy0:radio gpio: 243
    [   23.021922] brcmsmac bcma0:0: brcms_ops_bss_info_changed: qos enabled: false (implement)
    [   23.022072] brcmsmac bcma0:0: brcms_ops_config: change power-save mode: false (implement)
    [   24.920808] brcmsmac bcma0:0: brcmsmac: brcms_ops_bss_info_changed: associated
    [   24.920828] brcmsmac bcma0:0: brcms_ops_bss_info_changed: qos enabled: true (implement)
    [   24.977079] brcmsmac bcma0:0: brcmsmac: brcms_ops_bss_info_changed: disassociated
    [   24.977091] brcmsmac bcma0:0: brcms_ops_bss_info_changed: qos enabled: false (implement)
    [   24.985762] brcmsmac bcma0:0: brcmsmac: brcms_ops_bss_info_changed: associated
    [   24.985769] brcmsmac bcma0:0: brcms_ops_bss_info_changed: qos enabled: true (implement)
    [   25.135123] brcmsmac bcma0:0: brcms_ops_bss_info_changed: arp filtering: 1 addresses (implement)
    
  • maybe your router is forcing some sort of isolation between different machines connected over wifi? – epeleg Jan 19 '15 at 21:11
  • @epeleg: not really... other than the two laptops I also have a tablet, a wifi printer, some smartphones, and they all work fine. Except laptop B. – hey hey Jan 19 '15 at 21:13
  • could you please run from laptopB sudo iptables --list and post the input here, Thank you! – LearnTitan Jan 19 '15 at 21:47
  • 1
    Fascinating. I am researching and I wonder if this is related: bugs.launchpad.net/ubuntu/+source/bcmwl/+bug/414724 Note it is the same chipset but the wrong, IMO, driver. May I assume none of the other computers on the network use the Broadcom 4313 chipset and brcmsmac? – chili555 Jan 24 '15 at 2:52
  • 1
    Is there any clue here on laptop B? dmesg | grep -e brcm -e arp Thanks. – chili555 Jan 24 '15 at 2:57
0

You might try the driver brcmsmac backported from kernel version 3.18.

Download this to your desktop: https://www.kernel.org/pub/linux/kernel/projects/backports/stable/v3.18.1/backports-3.18.1-1.tar.xz Right click and select Extract here. Then:

sudo apt-get update
sudo apt-get install linux-headers-generic build-essential

cd ~/Desktop/backports-3.18-1
make defconfig-brcmsmac
make
sudo make install

Reboot and tell us if it works as expected. We will probably have one additional step.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.