As i have to less Points to answer and/or comment this post here ( Error 006-0612, please try again later.) MH4U English Demo Online Multiplayer connection error I have to write my own question and suggestion.
The most important thing is, what the hell did the developers think???
The Connection of the game is mainly done via UDP, so far so good, but if my 3DS is behind a Firewall (as 99.999% of the 3DSes will be) why not use a technique like Skype one did? UDP hole punching?
My Fix for the Monster hunter Connection Problem was the following. I observed the Traffic as flowed, and saw a lot of successful connections to the outside world. (on the internal interface em1)
1423595007.171129 IP 90.13.170.119.63959 > 192.168.1.13.64764: UDP, length 75
1423595007.173154 IP 192.168.1.13.64764 > 90.13.170.119.63959: UDP, length 75
1423595007.204274 IP 192.168.1.13.64764 > 108.72.36.79.55263: UDP, length 75
1423595007.206327 IP 192.168.1.13.64764 > 90.13.170.119.63959: UDP, length 67
1423595007.206412 IP 108.72.36.79.55263 > 192.168.1.13.64764: UDP, length 117
1423595007.237530 IP 192.168.1.13.64764 > 108.72.36.79.55263: UDP, length 75
1423595007.342280 IP 90.13.170.119.63959 > 192.168.1.13.64764: UDP, length 67
1423595007.506239 IP 108.72.36.79.55263 > 192.168.1.13.64764: UDP, length 67
1423595007.535475 IP 192.168.1.13.64764 > 108.72.36.79.55263: UDP, length 75
1423595007.701361 IP 192.168.1.13.64764 > 109.29.61.79.58787: UDP, length 117
1423595007.813428 IP 108.72.36.79.55263 > 192.168.1.13.64764: UDP, length 157
1423595007.838472 IP 109.29.61.79.58787 > 192.168.1.13.64764: UDP, length 75
1423595007.864715 IP 109.29.61.79.58787 > 192.168.1.13.64764: UDP, length 75
1423595007.868165 IP 192.168.1.13.64764 > 108.72.36.79.55263: UDP, length 67
1423595007.897841 IP 109.29.61.79.58787 > 192.168.1.13.64764: UDP, length 75
But when the error strikes i always noticed the following connections hitting my Firewall (freebsd, pflog device)
00:00:00.023437 rule 0..16777216/0(match): block in on em0: 112.198.77.27.34612 > 192.168.1.13.50169: UDP, length 25
00:00:00.537435 rule 0..16777216/0(match): block in on em0: 112.198.77.27.34612 > 192.168.1.13.50169: UDP, length 25
00:00:00.514356 rule 0..16777216/0(match): block in on em0: 112.198.77.27.34612 > 192.168.1.13.50169: UDP, length 25
00:00:00.538893 rule 0..16777216/0(match): block in on em0: 112.198.77.27.34612 > 192.168.1.13.50169: UDP, length 25
(192.168.1.13 is the 3DS)
On multiple connections we saw that the port always changed, so a single port forwarding was not possible.
The Solution in The end was fix the 3DS IP address in my network, and forward one of my public IPs to the 3DS (unfortunately I have a /29 subnet)
So as silly as i first thought that putting a 3DS into a DMZ might is, it seems to be the solution.
(pf.conf)
binat on $ext_if inet from 192.168.1.13 to any -> $public_ip
...
pass log quick from any to 192.168.1.13 keep state
Could someone please explain what the real fix could/should be???
EDIT: btw. I don't provide upnp on my fw, as i don't like unknown listening traffic, and is was NEVER necessary for ANY game in the last 5(?) years....