Perplexing wireless routing problem
Hello, first time poster, long time sufferer of this current problem.
I bought a Netgear MR814v2 wireless router (802.11b) and set it up at home. I'm able to get a DHCP address from it on my laptop (debian linux, 2.6.3 kernel). I can ping and traceroute to sites on the internet by using their hostname or IP address. This shows to me that DHCP is working, my encryption is working and that the NAT translation is working on the wireless router. However, the problem arises when I try to access a web site. If I "telnet google.com 80" (for example; any web site would suffice), the telnet session will hang and eventually timeout. I never receive a "Connect to <hostname>" line; the output never makes it past, "Trying <ip address>..." I've gone so far as to connect my laptop through an ethernet cable to the wireless router and shutdown the wireless interface; get DHCP, confirm routing, etc and am able to duplicate the problem. The same problem occurs when I connect my desktop machine to the wireless router's ethernet ports. I've even gone so far as to load up a 2.4.x kernel on the laptop but had similar results. So to recap, I can always ping and traceroute but never open a socket to a web server (although other ports like ssh fail to respond, too). The real perplexing part of this issue came when I connected my wife's Red Hat linux machine to the wireless router. After it got a DHCP address (the same one that my laptop and desktop had gotten earlier), it was able to connect to remote web sites without incident or delay. As a long time linux user, I'm very confused by the symptoms I'm experiencing here. (I started with kernel 1.2.13 -- back in the day when we said, "I'm using <kernel version>" as compared to "I'm using debian or I'm on Red Hat/SuSe/Mandrake/All-the-other-good-distributions-they-have-these-days." :) I've done a lot of searching on the internet, but either the keywords I've used or the problem I am having is so far off from the normal that I've not been able to find any relevant help documents. Does this scenario ring a bell for anyone? Does anyone have any advice on additional tricks I might try? Many thanks to those who try to help with this -- even if they don't post but spend a few cycles thinking about the problem. Here's a quick list of the things I've tried: * Multiple interfaces * WEP/No WEP * Multiple kernels * Multiple machines * Confirm no security filtering on any of the device (router, local machine) * Switched out all cables * Most recent firmware on wireless router * Power cycled DSL bridge (yes, I have two IPs switched over it) * Reverse allocation of IPs and confirmed that desktop could browse with both IPs * Plugged in redhat & windows machine to wireless hub ethernet ports with success * Confirmed that /sbin/ifconfig output identical on Red Hat and debian machines during test cycles Failing with debian systems ... running custom compilled kernel. (An additional side note is that the LAN ethernet works on my ethernet LAN at home -- not through the wireless hub -- and the wireless interface functions at work without issue.) |
That is perplexing. Only other thing I can think of would be to see if you could run Ethereal and look at packets going back and forth.
|
I did setup ethereal on just the laptop; however, I could setup a scenario with the working Red Hat machine and do a more extensive test. But, if I see packets with ethereal... then what? And if I don't see packets? I'm not sure if the wireless router behaves like a switch or a hub (the later broadcasting all packets out all interfaces).
|
its a router, so like a switch, not like a hub.
You can create a capture filter, I believe the syntax is something like "host <host1> and <host2>" to get all traffic between these two hosts where host1 is your machine and host2 is google, either IP address or hostname (IP address preferrable, little ambiguity if you have the right hosts). There is ethereal for Windows and Linux/Unix. You can run ethereal on a working connection and the one where telnet to port 80 fails and compare captures. |
I know how to use ethereal and what to look for, but what I meant by my "then what" question was, what if I do see traffic? What if I don't? There's no clear path to take to resolve the issue at this point. Right? So running ethereal alone isn't going to buy me much.
What I meant about the wireless router behaving more like a switch or a hub was questing wether the wireless interface would broadcast traffic onto the ethernet interfaces when traffic was going from a wireless device to the internet (or back). If the device utilizes it's ARP table to build a layer 2 destination map, then it probably won't broadcast the data onto all of its internal ports. |
I didnt get output on Ethereal on Windows for some reason, I was able to get some output using TDImon from http://www.sysinternals.com
I did get output on tethereal for Linux. Output from running tethereal on Redhat system with 2.6 kernel, WUSB11 adapter and Linksys router (for both windows and linux) 4.996153 LinksysG_b2:39:83 -> LinksysG_58:bc:d0 ARP Who has 192.168.1.103? Te ll 192.168.1.1 4.996195 LinksysG_58:bc:d0 -> LinksysG_b2:39:83 ARP 192.168.1.103 is at 00:0c: 41:58:bc:d0 20.263630 192.168.1.103 -> 207.69.188.187 DNS Standard query A www.google.com 20.302647 207.69.188.187 -> 192.168.1.103 DNS Standard query response CNAME www .google.akadns.net A 216.239.57.99 A 216.239.57.104 20.305659 192.168.1.103 -> 216.239.57.99 TCP 32884 > http [SYN] Seq=3244000415 Ack=0 Win=5840 Len=0 20.329645 216.239.57.99 -> 192.168.1.103 TCP http > 32884 [SYN, ACK] Seq=312287 7233 Ack=3244000416 Win=8190 Len=0 20.329734 192.168.1.103 -> 216.239.57.99 TCP 32884 > http [ACK] Seq=3244000416 Ack=3122877234 Win=5840 Len=0 20.330829 192.168.1.103 -> 207.69.188.187 DNS Standard query PTR 99.57.239.216. in-addr.arpa 20.504614 207.69.188.187 -> 192.168.1.103 DNS Standard query response, No such name 43.730074 192.168.1.103 -> 216.239.57.99 HTTP Continuation 43.963732 216.239.57.99 -> 192.168.1.103 TCP http > 32884 [ACK] Seq=3122877234 Ack=3244000421 Win=8190 Len=0 45.583309 192.168.1.103 -> 216.239.57.99 HTTP Continuation 45.813414 216.239.57.99 -> 192.168.1.103 TCP http > 32884 [ACK] Seq=3122877234 Ack=3244000423 Win=8190 Len=0 52.311346 192.168.1.103 -> 216.239.57.99 TCP 32884 > http [FIN, ACK] Seq=324400 0423 Ack=3122877234 Win=5840 Len=0 52.332364 216.239.57.99 -> 192.168.1.103 TCP http > 32884 [FIN, ACK] Seq=312287 7234 Ack=3244000424 Win=8190 Len=0 52.332438 192.168.1.103 -> 216.239.57.99 TCP 32884 > http [ACK] Seq=3244000424 Ack=3122877235 Win=5840 Len=0 57.326517 LinksysG_b2:39:83 -> LinksysG_58:bc:d0 ARP Who has 192.168.1.103? Te ll 192.168.1.1 57.326562 LinksysG_58:bc:d0 -> LinksysG_b2:39:83 ARP 192.168.1.103 is at 00:0c: 41:58:bc:d0 106.155456 192.168.1.113 -> 239.255.255.250 SSDP NOTIFY * HTTP/1.1 106.159468 192.168.1.113 -> 239.255.255.250 SSDP NOTIFY * HTTP/1.1 106.163466 192.168.1.113 -> 239.255.255.250 SSDP NOTIFY * HTTP/1.1 132.368140 LinksysG_0d:e6:72 -> Broadcast ARP Who has 192.168.1.1? Tell 192. 168.1.100 |
I'm confused. Why are you posting your output from ethereal? I'm the one with the problem here! :)
I'm very comfortable with how ethereal works and what type of output it will give (I could run the same tests with tcpdump without problem). I'll run my tests and see what I get as output; however, the real question remains as to why packets are not getting back to my laptop or desktop when trying to connect to remote machines through the wireless hub. |
|
I'm glad that someone else went through what I was going through and that they were able to solve the problem. I remember seeing that kernel option, but it had never bitten me before. Oddly enough, I don't have a /proc/sys/ directory so I'm removing support for INET_ECN from my kernel.
After reloading, I'm able to open up remote ports! Thanks for the help :) |
All times are GMT -5. The time now is 10:13 AM. |