The Problem:  I am unable to play Guitar Hero on the Internet with ANYONE
through my OpenBSD-4.2 nat gateway.  This might not be a problem with pf,
but two of my friends are able to rock out with each other and with
strangers...  one through a linux gateway and the other through a linksys
(!!!) WAP/gateway.  I have reached the end of my troubleshooting process and
I can see WHAT is happening but I can't figure out WHY it's happening.

The Setup:

Internet  <-->  OpenBSD-4.2  <-->  Linksys WRT54G (bridge)  <--->  Wii

Relevant pf rules:
nat on $IF_RR from 10.0.0.0/24 -> ($IF_RR)
rdr on $IF_RR proto udp from $REMOTE_IP to ($IF_RR) -> $HOST_WII

The redirect rule is my latest failed attempt to make this work...

I can use the Wii (and my laptop) to browse the Internet flawlessly over the
wireless network.  When I try to connect to or create a game from the Guitar
Hero menu I get "Error - 86070: Disconnected from network during
transmission" and get dropped to the main menu.  I have dumped a failed
session on both the internal and external interfaces:

# tcpdump -ni sis2 udp    (sis2 is my internal interface)
...
22:14:55.815354 10.0.0.32.52233 > $REMOTE_IP.53582: udp 20
22:14:55.818824 $REMOTE_IP.53582 > 10.0.0.32.58882: udp 20 [tos 0x20]

# tcpdump -ni sis1 udp    (sis1 is my external interface)
...
22:14:53.665516 $MY_IP.56355 > $REMOTE_IP.53582: udp 20
22:14:53.675668 $REMOTE_IP.53582 > $MY_IP.58882: udp 20 [tos 0x20]

# pfctl -s state | grep udp
...
all udp 10.0.0.32:52233 -> $MY_IP:56355 -> $REMOTE_IP:53582
SINGLE:NO_TRAFFIC
all udp 10.0.0.32:58882 <- $MY_IP:58882 <- $REMOTE_IP:53582
NO_TRAFFIC:SINGLE

So... it looks like packets are going out over the Internet from port 56355
but they are coming back to port 58882.  Before I added the rdr rule these
packets were just dropped on the floor (obviously).  Now, with the rdr rule,
they're being forwarded to the Wii, where I presume they are being dropped.


Has anyone else seen this?  Am I doing something wrong?

Reply via email to