View previous topic :: View next topic |
Author |
Message |
yakkowarner
Joined: 02 Dec 2015 Posts: 11
|
Posted: Wed Dec 02, 2015 3:08 am Post subject: Xbox 360 works, Xbox One doesn't |
|
|
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 |
|
 |
miniupnp Site Admin
Joined: 14 Apr 2007 Posts: 1594
|
Posted: Wed Dec 02, 2015 9:24 am Post subject: |
|
|
which version of miniupnpd do you use ? which configuration ? _________________ Main miniUPnP author.
https://miniupnp.tuxfamily.org/ |
|
Back to top |
|
 |
yakkowarner
Joined: 02 Dec 2015 Posts: 11
|
Posted: Wed Dec 02, 2015 3:56 pm Post subject: |
|
|
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 |
|
 |
miniupnp Site Admin
Joined: 14 Apr 2007 Posts: 1594
|
|
Back to top |
|
 |
yakkowarner
Joined: 02 Dec 2015 Posts: 11
|
Posted: Thu Dec 03, 2015 2:36 am Post subject: |
|
|
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 |
|
 |
yakkowarner
Joined: 02 Dec 2015 Posts: 11
|
Posted: Thu Dec 03, 2015 3:49 pm Post subject: |
|
|
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.  |
|
Back to top |
|
 |
miniupnp Site Admin
Joined: 14 Apr 2007 Posts: 1594
|
Posted: Thu Dec 03, 2015 10:44 pm Post subject: |
|
|
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.
https://miniupnp.tuxfamily.org/ |
|
Back to top |
|
 |
yakkowarner
Joined: 02 Dec 2015 Posts: 11
|
Posted: Fri Dec 04, 2015 6:29 am Post subject: |
|
|
Did that, recompiled, restarted. Didn't work, either.  |
|
Back to top |
|
 |
miniupnp Site Admin
Joined: 14 Apr 2007 Posts: 1594
|
Posted: Fri Dec 04, 2015 3:22 pm Post subject: |
|
|
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  _________________ Main miniUPnP author.
https://miniupnp.tuxfamily.org/ |
|
Back to top |
|
 |
BoHiCa
Joined: 19 Jun 2015 Posts: 22
|
Posted: Tue Dec 08, 2015 7:30 pm Post subject: |
|
|
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  |
|
Back to top |
|
 |
miniupnp Site Admin
Joined: 14 Apr 2007 Posts: 1594
|
Posted: Tue Dec 08, 2015 7:45 pm Post subject: |
|
|
@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.
https://miniupnp.tuxfamily.org/ |
|
Back to top |
|
 |
yakkowarner
Joined: 02 Dec 2015 Posts: 11
|
Posted: Thu Dec 10, 2015 4:23 am Post subject: |
|
|
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".  |
|
Back to top |
|
 |
miniupnp Site Admin
Joined: 14 Apr 2007 Posts: 1594
|
Posted: Thu Dec 10, 2015 10:21 am Post subject: |
|
|
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  _________________ Main miniUPnP author.
https://miniupnp.tuxfamily.org/ |
|
Back to top |
|
 |
yakkowarner
Joined: 02 Dec 2015 Posts: 11
|
Posted: Fri Dec 11, 2015 2:20 am Post subject: |
|
|
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  |
I would agree with that assessment.  |
|
Back to top |
|
 |
BoHiCa
Joined: 19 Jun 2015 Posts: 22
|
Posted: Fri Dec 11, 2015 2:42 am Post subject: |
|
|
I'd say UPnP implementation on Xboxen has always been b0rked to a significant degree 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? )
@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 |
|
 |
|