miniupnp.tuxfamily.org Forum Index miniupnp.tuxfamily.org
The forum about miniupnp and libnatpmp
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Xbox 360 works, Xbox One doesn't
Goto page 1, 2, 3, 4  Next
 
Post new topic   Reply to topic    miniupnp.tuxfamily.org Forum Index -> miniupnpd Bugs
View previous topic :: View next topic  
Author Message
yakkowarner



Joined: 02 Dec 2015
Posts: 11

PostPosted: Wed Dec 02, 2015 3:08 am    Post subject: Xbox 360 works, Xbox One doesn't Reply with quote

I'm migrating from linux-igd over to miniupnpd on my Debian Wheezy server, and I'm having a peculiar issue. It doesn't seem as though my Xbox One is requesting ports. If I run miniupnpd on the console, I can see it respond to SSDP M-SEARCH requests (it seems to receive and respond to 10 requests when I turn the Xbox on, which seems excessive to me, but I don't know if that's an indicator of the problem). It then responds to GET requests on /rootDesc.xml, /L3F.xml, and WANCfg.xml. Beyond that, though, it doesn't indicate that it's getting any other requests or responses, and it doesn't open up any ports.

I'm trying to compare this to the console output of linux-igd, which is tricky since they seem to log things entirely differently. linux-igd doesn't log the GET requests or SSDP M-SEARCH events, but it does log the subscription and action requests -- it shows the Xbox One subscribing to WANCommonIFC1 and WANIPConn1, then actions GetConnectionTypeInfo, GetNATRSIPStatus, AddPortMapping, GetSpecificPortMappingEntry, and GetExternalIPAddress.

All told, linux-igd will get the port mapping request, open it, and respond, while as far as I can tell, miniupnpd isn't even getting the request.

I compared the XML documents between linux-igd's gatedesc.xml and miniupnpd's rootDesc.xml, and nothing jumps out at me as the possible source of the problem. The fact that it seems to be able to talk to linux-igd suggests there must be something about miniupnpd that it doesn't like.

The Xbox 360 handles linux-igd and miniupnpd like a champ, though; it talks to both and gets the ports it needs. Other machines (e.g., a PC running Skype) also have no issues.

Is there some more debugging I can do to figure out what may be the issue here?
Back to top
View user's profile Send private message
miniupnp
Site Admin


Joined: 14 Apr 2007
Posts: 1433

PostPosted: Wed Dec 02, 2015 9:24 am    Post subject: Reply with quote

which version of miniupnpd do you use ? which configuration ?
_________________
Main miniUPnP author.
http://miniupnp.tuxfamily.org/
Back to top
View user's profile Send private message Visit poster's website
yakkowarner



Joined: 02 Dec 2015
Posts: 11

PostPosted: Wed Dec 02, 2015 3:56 pm    Post subject: Reply with quote

I'm using miniupnpd-1.9.20151118.

Not sure what is meant by which configuration. I built with the makefile Makefile.linux. In the .conf file, NAT-PMP and UPNP are both enabled (NAT-PMP was initially off; I enabled it hoping the Xbox One would try that, but it doesn't). I have the ext_ip specified as my public IP address (my main reason for trying to switch from linux-igd, as that is unable to get my real public IP address). The UPnP permission rules are set to allow my local IP range for ports 1024-65535. Everything else is left to the defaults (including secure_mode=no).
Back to top
View user's profile Send private message
miniupnp
Site Admin


Joined: 14 Apr 2007
Posts: 1433

PostPosted: Wed Dec 02, 2015 10:10 pm    Post subject: Reply with quote

what is in your config.h file ?
_________________
Main miniUPnP author.
http://miniupnp.tuxfamily.org/
Back to top
View user's profile Send private message Visit poster's website
yakkowarner



Joined: 02 Dec 2015
Posts: 11

PostPosted: Thu Dec 03, 2015 2:36 am    Post subject: Reply with quote

It looks like this (I removed the text comments before posting here to cut down the size a bit):

Code:
#ifndef CONFIG_H_INCLUDED
#define CONFIG_H_INCLUDED

#include <inttypes.h>

#define MINIUPNPD_VERSION "1.9"
#define MINIUPNPD_DATE  "20151128"

#ifndef XSTR
#define XSTR(s) STR(s)
#define STR(s) #s
#endif /* XSTR */

#define UPNP_VERSION_MAJOR      2
#define UPNP_VERSION_MINOR      0
#define UPNP_VERSION_MAJOR_STR  XSTR(UPNP_VERSION_MAJOR)
#define UPNP_VERSION_MINOR_STR  XSTR(UPNP_VERSION_MINOR)

#define USE_IFACEWATCHER 1
#define USE_NETFILTER 1
#define SUPPORT_REMOTEHOST

#define OS_NAME         "Debian"
#define OS_VERSION      "Debian/wheezy"
#define OS_URL          "http://www.debian.org/"

#define LOG_MINIUPNPD            LOG_DAEMON

/*#define USE_MINIUPNPDCTL*/

#define ENABLE_NATPMP

#define ENABLE_PCP

#ifdef ENABLE_PCP
/*#define PCP_PEER*/
#ifdef PCP_PEER
/*#define PCP_FLOWP*/
#endif /*PCP_PEER*/
/*#define PCP_SADSCP*/
#endif /*ENABLE_PCP*/

/*#define PF_ENABLE_FILTER_RULES*/

/*#define ENABLE_GETIFSTATS_CACHING*/
#define GETIFSTATS_CACHING_DURATION 2

/*#define MULTIPLE_EXTERNAL_IP*/

#define USE_DAEMON

/*#define ENABLE_LEASEFILE*/

/*#define CHECK_PORTINUSE*/

/*#define HAS_DUMMY_SERVICE*/
#define ENABLE_L3F_SERVICE

/*#define ENABLE_IPV6*/

/*#define V6SOCKETS_ARE_V6ONLY*/

#define HAVE_IP_MREQN

/*#define IGD_V2*/

#ifdef IGD_V2
#define ENABLE_DP_SERVICE
/*#define ENABLE_HTTPS*/
/*#define HTTPS_CERTFILE "/path/to/certificate.pem"*/
/*#define HTTPS_KEYFILE "/path/to/private.key"*/

#ifdef ENABLE_IPV6
#define ENABLE_6FC_SERVICE
#endif /* ENABLE_IPV6 */
#endif /* IGD_V2 */

#define ENABLE_EVENTS

#define USE_IFNAME_IN_RULES

/*#define ENABLE_NFQUEUE*/

/*#define UPNP_STRICT*/

#define SSDP_RESPOND_SAME_VERSION

/*#define ENABLE_HTTP_DATE*/

/*#define DELAY_MSEARCH_RESPONSE*/

/*#define DISABLE_CONFIG_FILE*/

/*#define ENABLE_MANUFACTURER_INFO_CONFIGURATION*/

#if defined(ENABLE_6FC_SERVICE) || (defined(ENABLE_PCP) && defined(ENABLE_IPV6))
#define ENABLE_UPNPPINHOLE
#endif

#define USE_TIME_AS_BOOTID

#define SSDP_PACKET_MAX_LEN 1024

#endif /* CONFIG_H_INCLUDED */
Back to top
View user's profile Send private message
yakkowarner



Joined: 02 Dec 2015
Posts: 11

PostPosted: Thu Dec 03, 2015 3:49 pm    Post subject: Reply with quote

Looking over the config.h constants, I remembered that linux-igd exposed the "dummy" service. So I uncommented #define HAS_DUMMY_SERVICE and commented out #define ENABLE_L3F_SERVICE, recompiled, and restarted the daemon.

Unfortunately, that didn't help. Sad
Back to top
View user's profile Send private message
miniupnp
Site Admin


Joined: 14 Apr 2007
Posts: 1433

PostPosted: Thu Dec 03, 2015 10:44 pm    Post subject: Reply with quote

can you try to change
Code:

#define UPNP_VERSION_MAJOR      2
#define UPNP_VERSION_MINOR      0

to
Code:

#define UPNP_VERSION_MAJOR      1
#define UPNP_VERSION_MINOR      1

_________________
Main miniUPnP author.
http://miniupnp.tuxfamily.org/
Back to top
View user's profile Send private message Visit poster's website
yakkowarner



Joined: 02 Dec 2015
Posts: 11

PostPosted: Fri Dec 04, 2015 6:29 am    Post subject: Reply with quote

Did that, recompiled, restarted. Didn't work, either. Sad
Back to top
View user's profile Send private message
miniupnp
Site Admin


Joined: 14 Apr 2007
Posts: 1433

PostPosted: Fri Dec 04, 2015 3:22 pm    Post subject: Reply with quote

what if you diff WANCfg.xml with the equivalent from linux-igd ?
You said the last thing the Xbox One does ig GET WANCfg.xml
there may be something in that description which the Xbox One doesn't like Smile
_________________
Main miniUPnP author.
http://miniupnp.tuxfamily.org/
Back to top
View user's profile Send private message Visit poster's website
BoHiCa



Joined: 19 Jun 2015
Posts: 22

PostPosted: Tue Dec 08, 2015 7:30 pm    Post subject: Reply with quote

I've run into similar issues since the last *massive* update to Xbone (the one where Xbone was re-based to Win 10 sometime in November 2015 (current Xbone version: 10.0.10586_1016 (th2_xbox_rel_1510.151118-2147)fre, updated 23-Nov-2015). I suspect Microsoft moved the target yet again...

The Xbone uses DHCP to obtain its ip address on the wired LAN (seems to be key to ever getting an Open status).

I'm on the same build of miniupnpd 1.9.20151118 as the OP in this thread.

Prior to the last update to Xbone I was routinely able to get the magical "Open" status for multiplayer, but ever since the update, the status is always "Moderate" at best and I no longer see entries from minupnpd in the iptables rules nor entries in the leases file (I have the leases file enabled on my build). The (Open/Moderate/Closed) status on Xbone/Xb360 seems to be determined by whether or not the console can use UPnP to create port mappings successfully or not.

The reason I suspect the OP's issue and what I posted above are related is that for Xbox Live to work seamlessly, it is essential that the console is behind an "Open" NAT.

If there are any specific tests, logs or packet-captures that would help, just shout and I'll do my best to grab them. The more specific you can be with how to collect what you need, the better Embarassed
Back to top
View user's profile Send private message
miniupnp
Site Admin


Joined: 14 Apr 2007
Posts: 1433

PostPosted: Tue Dec 08, 2015 7:45 pm    Post subject: Reply with quote

@BoHiCa :
the best would be to compare a setup that works (for example linux-igd) with miniupnpd
Anyway, what does miniupnpd log when the XBox one starts or check for Network status ?
SSDP M-SEARCH from 192.168.1.174:51245 ST: urn:schemas-upnp-org:device:InternetGatewayDevice:1
HTTP REQUEST : GET /rootDesc.xml (HTTP/1.1)
[...]
_________________
Main miniUPnP author.
http://miniupnp.tuxfamily.org/
Back to top
View user's profile Send private message Visit poster's website
yakkowarner



Joined: 02 Dec 2015
Posts: 11

PostPosted: Thu Dec 10, 2015 4:23 am    Post subject: Reply with quote

Ok, comparing the config files (miniupnpd's WANCfg.xml with linux-igd's gateicfgSCPD.xml), I see the following differences:

linux-igd's specVersion is 1.0 (<major>1</major><minor>0</minor>) instead of 1.1.

In <serviceStateTable><stateVariable><name>WANAccessType</name><allowedValueList>, linux-igd has <allowedValue>Other</allowedValue> that miniupnpd doesn't have.

linux-igd includes <stateVariable> blocks for these names that don't exist in miniupnpd's: WANAccessProvider, MaximumActiveConnections.

There are also some differences in the other XML file (miniupnpd's WANIPCn.xml, linux-igd's gateconnSCPD.xml).

I could send the XML files to you if you'd like; just tell me where.

I did try the obvious one -- recompile miniupnpd with UPNP_VERSION_MAJOR 1 and UPNP_VERSION_MINOR 0 (to match the 1.0 version that linux-igd supplies). This appears to actually work, as I can finally see a port mapping added to iptables. So, that appears to be the trick.

Maddeningly, the Xbox One, even when it gets the port open that it wanted, still thinks the NAT type is "strict". Evil or Very Mad
Back to top
View user's profile Send private message
miniupnp
Site Admin


Joined: 14 Apr 2007
Posts: 1433

PostPosted: Thu Dec 10, 2015 10:21 am    Post subject: Reply with quote

yakkowarner wrote:
I could send the XML files to you if you'd like; just tell me where.

https://gist.github.com/

If setting UPNP version to 1.0 is the trick, that means that XBox one UPnP code is badly broken Sad
_________________
Main miniUPnP author.
http://miniupnp.tuxfamily.org/
Back to top
View user's profile Send private message Visit poster's website
yakkowarner



Joined: 02 Dec 2015
Posts: 11

PostPosted: Fri Dec 11, 2015 2:20 am    Post subject: Reply with quote

Ok, I put all four files (two from linux-igd, two from miniupnpd (from when I had it configured for 1.1)) here: https://gist.github.com/anonymous/7d6f306515a60965e9c9

miniupnp wrote:
If setting UPNP version to 1.0 is the trick, that means that XBox one UPnP code is badly broken Sad


I would agree with that assessment. Sad
Back to top
View user's profile Send private message
BoHiCa



Joined: 19 Jun 2015
Posts: 22

PostPosted: Fri Dec 11, 2015 2:42 am    Post subject: Reply with quote

I'd say UPnP implementation on Xboxen has always been b0rked to a significant degree Rolling Eyes Which is silly since they're one of the *major* pushes behind it to begin with!

@Thomas: I'm not ignoring you, just very little time for the next week or so! I'll try to set up linux-igd on my perimeter and see if it fares any better with the current build of Xbone. I *do* have --igd2 in my compile options for the build of miniupnpd on my perimeter firewall at the moment. Do you think it is worth simply rebuilding with that option removed? I didn't see a conf file tunable parameter for toggling igd v1/v2 support for the runtime there (probably why it is a compile time option eh? Laughing)

@yakkowarner: Try checking the multiplayer status 2X in a row, once the test completes, then hit the rb + rt & lb + lt at the same time and hold for a few seconds to get the details of the test, before hitting the B button to go back). The "Open/Moderate/Strict" status seems to be a bit flakey. I'm sure you're not surprised by that, lol.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    miniupnp.tuxfamily.org Forum Index -> miniupnpd Bugs All times are GMT
Goto page 1, 2, 3, 4  Next
Page 1 of 4

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group
Protected by Anti-Spam ACP
© 2007 Thomas Bernard, author of MiniUPNP.