I have an Ubuntu Server 10.04 application I've developed that receives messages over a UDP port. The ultimate purpose of this application is to receive messages sent from workers' 3G modems out in the field.
If use netcat on either another ubuntu Server or my Vista laptop (both on the same LAN as my test machine) to send a message, the message arrives correctly and appears in my application. However, if I go out to my car and use its 3G modem to send a message from the same Vista laptop, it doesn't work. If I run tcpdump -A, I see the message arrive correctly, but it's never delivered to my application. Clearly, the OS is the one making the choice not to deliver the messages (else they wouldn't appear in tcpdump nor would my app receive them when coming from local machines). I have not installed any firewall software on this machine, nor am I aware of anything installed by default that would block the traffic.
sudo iptables --list returns
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
I'm not too familiar with iptables, but it looks to me like that's telling it to not do anything.
What could be going on that's preventing my messages from being delivered?
Edit with requested information:
My local address is 10.222.110.79/24.
My tcpdump command is
sudo tcpdump -i eth0 udp port 6203 -A -f -n
For the messages sent internally, tcpdump is showing
IP 10.222.110.75.60856 > 10.222.110.79.6203: UDP
The ones sent externally show
IP 108.116.172.0.3072 > 10.222.110.79.6203: UDP
(I assume the second message is reflecting the corporate firewall rerouting the message. I'm sending it to our public IP, and the firewall has a (temporary) rule that sends all UDP 6203 traffic to my dev box.)
This is my netcat command
nc -u 10.222.110.79 6203
And then I just type stuff in and hit enter to send. From outside, I replace the IP with our public IP, but don't make any other changes.